Intel® 高层次综合编译器专业版Pro版: 参考手册

ID 683349
日期 12/04/2023
Public
文档目录

11.4.1.2. RTL模块接口

为了使RTL模块能够与其他编译器生成的操作正确地交互,您必须在 RTL模块的输入和输出处支持简单的就绪/有效握手协议。

RTL模块必须使用单个流接口。即,一对readyvalid逻辑必须控制所有输入。

您可以选择提供必要的流端口,但需要将RTL模块声明为无停顿。该情况下,您不必实现适当的停顿行为,因为 Intel® HLS Compiler会为您的模块创建一个包装器(wrapper)。

如果您的RTL模块具有内部状态,则必须适当处理ivalid信号。有关详细信息,请参阅无停顿(Stall-Free)RTL

考虑对RTL模块myMod使用以下接口:


在此图中,myMod通过数据信号arg1arg2,以及控制信号ivalid(输入)和oready(输出)与上游模块交互。ivalid控制信号等于1ivalid = 1),当且仅当数据信号arg1 和数据信号arg2包含有效数据时。当控制信号oready等于1(oready = 1),则表明myMod RTL 模块可以处理数据信号arg1arg2,如果它们有效(即ivalid = 1)。当ivalid = 1并且oready = 0时,上游模块在下一个时钟周期保持ivalidarg1arg2的值。

myMod模块通过数据信号result,以及控制信号ovalid(输出)和iready(输入)与下游流水线逻辑交互。ovalid控制信号等于1ovalid = 1),当且仅当数据信号result包含有效数据。当iready控制信号等于1ivalid = 1),下游模块可以处理数据信号result,如果其有效。当ovalid = 1iready = 0,则myMod RTL模块必须在下一个时钟周期中保持ovalidresult信号有效。