指定时钟频率 - 2022.1 Chinese

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

Document ID
UG1399
Release Date
2022-06-07
Version
2022.1 简体中文

对于 C 和 C++ 设计,仅支持单一时钟。对设计中的所有函数将应用同一个时钟。

时钟周期(以 ns 为单位)在Solutions > Solutions Setting(解决方案 > 解决方案设置)中设置。默认时钟周期为 10 ns。Vitis HLS 使用时钟不确定性概念来提供用户定义的时序裕度。您也可使用Solutions Setting(解决方案设置)对话框来为设计定义时钟不确定性。默认时钟不确定性如不指定,则为时钟周期的 27%。

提示: 您也可使用 create_clock Tcl 命令来设置时钟周期,使用 set_clock_uncertainty Tcl 命令来设置时钟不确定性。

通过使用时钟频率和器件目标信息,Vitis HLS 可估算设计中的操作时序,但无法确定最终组件布局和信号线布线:这些操作由输出 RTL 的逻辑综合来执行。因此,Vitis HLS 无法掌握精确延迟。

为计算用于综合的时钟周期,Vitis HLS 会从时钟周期减去时钟不确定性,如下图所示。

图 1. 时钟周期和裕度

这样可为用户提供指定裕度以确保下游进程(例如,逻辑综合与布局布线)具有足够的时序裕度来完成其操作。如果 FPGA 使用率过高,那么单元的布局以及用于连接单元的信号线的布线可能无法达成理想状态,并且可能导致设计的时序延迟大于期望值。对于此类情况,增加时序裕度可避免 Vitis HLS 所创建的设计在每个时钟周期内封装过多逻辑,并在布局布线选项不太理想的情况下使 RTL 综合仍能满足时序。

Vitis HLS 以满足所有约束为目标:时序、吞吐量和时延。但如果无法满足约束,Vitis HLS 则始终会输出 RTL 设计。

如果无法满足时钟周期推断的时序约束,Vitis HLS 会发出 SCHED-644 消息(如下所示)并以可实现的最佳性能来创建设计。

@W [SCHED-644] Max operation delay (<operation_name> 2.39ns) exceeds the effective 
cycle time

即使 Vitis HLS 无法满足特定路径的时序要求,它仍可在所有其它路径上实现时序。通过采取该行为,您即可评估提高最优化级别或者由下游逻辑综合对失败路径进行特殊处理是否能够接近并最终满足时序。

重要: 请务必在综合后复查约束报告以判定是否满足所有约束,这一行为至关重要:实际上虽然 Vitis HLS 可生成输出设计,但并不能保证设计满足所有性能约束。请复查设计报告的Performance Estimates(性能估算)部分。

综合完成后,针对层级内每个函数都会生成一份设计报告,并可在解决方案报告文件夹中查看。整个设计的最差情况时序将在各函数报告中报告为最差情况。无需复查层级中的每份报告。

如果时序违例过于严格而无法进一步最优化,且下游进程无法对其加以更正,请先复查指定精确的时延和指定精确的实现核的技巧,然后再考虑是否采用更快的目标技术。