Intel® High Level Synthesis Compiler Pro Edition: 用户指南

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

6.3. 使用Enqueue函数调用实现高吞吐量仿真(异步组件调用)

在仿真中对组件的显式调用是阻塞调用。为了与C++语言约定保持一致,测试台在继续执行之前会等待组件的返回值。这种阻塞调用会导致组件的串行执行。在执行组件之前,您可以对组件的输入进行排队,从而测试连续调用组件的流水线程度。 您可以使用仿真库中的enqueue函数调用,对具有显式接口的组件的输入进行排队。通过用组件fMAX除以组件启动间隔(II),可以估算出组件的吞吐量,组件启动间隔(II)表示每秒大约调用组件的次数。
表 6.  仿真库中用于对具有显式接口的组件的输入进行排队的函数
函数 说明
ihc_hls_enqueue(void* retptr, void* funcptr, …) 此函数对一个HLS组件的调用进行排队。

返回值存储在第一个参数中,该参数应为返回类型的指针。

在调用ihc_hls_component_run_all()函数之前,组件不会执行。

ihc_hls_enqueue_noret(void* funcptr, …) 此函数类似于ihc_hls_enqueue(void* retptr, void* funcptr, …),但此函数没有用于捕获返回值的输出指针。
ihc_hls_component_run_all (void* funcptr) 此函数以流水线的方式执行对指定组件的所有排队调用。