An explicit call to a component in simulation is a blocking call. To be
consistent with C++ language conventions, the
testbench waits for a return value from the component before continuing execution. This
blocking call results in serial execution of the component. You can test how well successive
invocations of your component can be pipelined by queuing inputs to the component before
executing the component. You can queue inputs to a component that
has explicit interfaces by using enqueue function calls from the simulation library.
Estimate the throughput of your component by dividing the component fMAX by the component initiation interval (II), which indicates
approximately how many times your component is invoked per second.
| Function | Description |
|---|---|
| ihc_hls_enqueue(void* retptr, void* funcptr, …) | This function enqueues one invocation of an HLS component. The return value is stored in the first argument which should be a pointer to the return type. The component does not execute until the ihc_hls_component_run_all() function is invoked. |
| ihc_hls_enqueue_noret(void* funcptr, …) | This function is similar to ihc_hls_enqueue(void* retptr, void* funcptr, …), except that it does not have an output pointer to capture return values. |
| ihc_hls_component_run_all (void* funcptr) | This function executes all enqueued calls to the specified component in a pipelined fashion. |