指定时钟频率 - 2023.2 简体中文

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

Document ID
UG1399
Release Date
2023-12-18
Version
2023.2 简体中文

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

创建 HLS 组件时,会以纳秒 (ns) 或 MHz 为单位来指定时钟周期,或者可在 HLS 配置文件中的“General”(常规)类别下更改此时钟周期,如下所示。

图 1. 器件和时钟设置

默认时钟周期为 10 ns。HLS 组件还使用时钟不确定性概念来提供用户定义的时序裕度,用于在设计内调度进程。您可在指定时钟的同时,采用同样方法来定义设计的时钟不确定性。默认时钟不确定性如不指定,则为时钟周期的 27%。

重要: 如果 HLS 配置文件指定 platform= 而不是 part=,那么您还必须使用 freqhz= 代替 clock=。这是因为,平台以 freqhz 形式指定时钟,您只能使用相同形式来将其覆盖。

该工具通过为 HLS 组件使用时钟频率和器件信息,即可消除设计中的操作时序。但它无从知晓最终组件布局和信号线布线,因为这些操作是由输出 RTL 的逻辑综合来执行的。因此,该工具只能估算延迟。

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

图 2. 时钟周期和裕度

这样可为用户提供指定裕度以确保下游进程(例如,逻辑综合与布局布线)具有足够的时序裕度来完成其操作。如果器件资源主要供 HLS 组件使用,那么单元的布局和用于连接各单元的信号线布线可能过于紧密,导致设计延迟超出预期的时序延迟。面对此类情况,通过增加时钟不确定性可避免 HLS 所创建的设计在每个时钟周期内封装过多逻辑,并在布局布线选项不太理想的情况下使 RTL 综合仍能满足时序。

Vitis Unified IDE 和 v++ 命令会尝试满足所有约束:时序、吞吐量和时延。但如果无法满足约束,那么该工具仍会生成 RTL 设计。如果无法满足时钟周期推断的时序约束,该工具会发出 SCHED-644 消息(如下所示)并以可实现的最佳性能来创建设计。

@W [SCHED-644] Max operation delay (<operation_name> 2.39ns) exceeds the effective 
cycle time
重要: 请务必在综合后复查约束报告以判定是否满足所有约束,这一行为至关重要:实际上虽然综合可以生成输出设计,但并不能保证设计满足所有性能约束。请复查设计报告的Performance Estimates(性能估算)部分。

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

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