仅对英特尔可见 — GUID: wtu1548359141390
Ixiasoft
仅对英特尔可见 — GUID: wtu1548359141390
Ixiasoft
13.9. Intel® HLS Compiler Pro版组件属性
属性 | 描述 |
---|---|
hls_component_ii | 强制应用此属性的组件具有指定的组件启动间隔 (II)。 |
hls_disable_component_pipelining | 防止创建流水线组件数据路径。此组件的多次调用现在按顺序进行,而不是同时进行。 |
hls_max_concurrency | 请求更多组件存储器副本,以便组件可以并行运行多个调用。 |
hls_scheduler_target_fmax_mhz | 指定组件的目标时钟频率。 |
hls_use_stall_enable_clusters | 与默认的无停顿集群实现相比,将相关操作分组到启用停顿的集群中,以尝试改善延迟和面积使用率,但可能牺牲吞吐量。 |
hls_component_ii组件属性
- 句法
- hls_component_ii(<N>)
- 描述
-
强制应用此属性的组件具有组件启动间隔 (II) <N>,其中<N>是一个正整数值。
该值可能会对您组件的fMAX产生不利影响,因为使用此属性来获得较低的循环II会将管道阶段组合在一起并创建具有长传播延迟的逻辑。
将此属性与更大的II一起使用时会插入更多流水线阶段,并能为您提供更好的组件fMAX值。
hls_disable_component_pipelining组件属性
- 句法
- hls_disable_component_pipelining
- 描述
-
告知编译器不要对组件创建流水线数据路径。在某些情况下,非流水线组件数据路径可以节省FPGA面积利用率。
当流水线数据路径不能提高组件吞吐量或组件未被重复调用时,请使用此属性。
- 实例
-
#include "HLS/hls.h" hls_disable_component_pipelining component void baz ( /* arguments */ ){ // component code }
hls_max_concurrency组件属性
- 句法
- hls_max_concurrency(<N>)
- 描述
-
在某些情况下,组件的并发性仅限于1。当生成的硬件无法在组件调用之间共享时,就会出现此限制。例如,当组件存储器用作非静态变量时。
您可以使用此属性来请求组件存储器的更多副本,以便组件可以并行运行多个调用。
此属性可以接受任何非负整数,包括0。- 值大于0
- 大于0的值表示要实例化的组件存储器副本数以及可以同时进行多少个组件调用。
- 值等于0
- 将hls_max_concurrency的值设置为0,在即便没有组件存储器但组件具有较差的动态循环启动间隔(II)的情况下很有用,即便您认为您的组件II应该是1。可以在高层次设计报告中查看组件中的循环的II。
要了解更多信息,请查看设计实例: <quartus_installdir>/hls/examples/inter_decim_filter。
- 实例
-
hls_max_concurrency(2) component void foo(ihc::stream_in<int> &data_in, ihc::stream_out<int> &data_out) { int arr[N]; for (int i = 0; i < N; i++) { arr[i] = data_in.read(); } // Operate on the data and modify in place for (int i = 0; i < N; i++) { data_out.write(arr[i]); } }
hls_scheduler_target_fmax_mhz组件属性
- 句法
- hls_scheduler_target_fmax_mhz(<N>)
- 描述
-
应用hls_scheduler_target_fmax_mhz组件属性让编译器以特定fMAX值为目标。指定目标fMAX值(以MHz为单位)。
该组件不能保证以指定的频率收敛时序,并且任务系统中的任何任务都使用相同的时钟,即使具有不同的调度目标。
hls_use_stall_enable_clusters组件属性
- 句法
- hls_use_stall_enable_clusters
- 描述
-
应用hls_use_stall_enable组件属性可以减少组件的面积,同时可能降低组件的fMAX和吞吐量。
通常 Intel® HLS Compiler将相关操作分组到集群中。许多情况下,集群是无停顿集群。无停顿集群执行操作时不会出现任何停顿,并且在集群末尾包含一个FIFO,用于在集群停顿时保持结果。此FIFO会增加组件的面积和延迟,但可能允许更高的fMAX并提高了吞吐量。
如果您更喜欢较低的 FPGA面积使用率和较低的延迟而不是更高的吞吐量,请使用hls_use_stall_enable组件属性使编译器偏向于生成启用停顿的集群。启用停顿的集群缺乏FIFO,从而减少了面积和延迟,但会将停顿信号传递给所包含的操作。
传递停顿信号可能会降低fMAX。
并非所有操作都支持停顿,并且这些操作不能包含在启用停顿的群集中。如果某些操作无法放置于启用停顿的群集中,编译器会生成警告。
如果编译器能够确定启用停顿始终有益,则它会自动为HLS组件使用已启用停顿的群集。此属性要求编译器尽可能形成已启用停顿的群集。
Intel Agilex 7 and Stratix 10 Restriction: 此属性不适用于针对 Intel Agilex® 7或者 Intel® Stratix® 10器件的设计,除非您指定 Intel® HLS Compiler i++命令的–hyper-optimized-handshaking=off选项。要了解更多信息,请查看以下教程: <quartus_installdir>/hls/examples/tutorials/best_practices/stall_enable