使用时延约束 - 2021.2 Chinese

Vitis 高层次综合用户指南 (UG1399)

Document ID
UG1399
Release Date
2021-12-15
Version
2021.2 Chinese

Vitis HLS 支持对任意作用域使用时延约束。时延约束是使用 LATENCY 指令来指定的。

对作用域施加最大和/或最小 LATENCY 约束时,Vitis HLS 会尝试确保函数内的所有运算都在指定的时钟周期范围内完成。

应用于循环的时延指令可指定单次循环迭代所需的时延:它指定循环主体的时延,如以下示例所示:

Loop_A: for (i=0; i<N; i++) { 
#pragma HLS latency max=10
  ..Loop Body...  
}

如果要限制所有循环迭代的总时延,应将时延指令应用于包含整个循环的区域,如以下示例所示:

Region_All_Loop_A: {
#pragma HLS latency max=10
Loop_A: for (i=0; i<N; i++) 
  { 
  ..Loop Body... 
  }
}

在此情况下,即使展开循环,时延指令仍会对所有循环操作设置最大限制。

如果 Vitis HLS 无法满足最大时延约束,它会放宽时延约束,并尝试尽可能实现最佳结果。

如果设置最小时延约束,并且 Vitis HLS 生成的设计时延低于所需的最小值,它会插入虚拟时钟周期以满足最小时延。