三亩地 三亩地SAN MU DI · CODE DIARY
ARTICLE DETAIL

日记详情

真实记录编程学习的某一天,欢迎挑你感兴趣的翻一翻。

HLS可综合设计技巧--时钟 复位

HLS可综合设计技巧--时钟  复位

一、时钟频率
1.c/c++设计钟,只支持单一时钟设计
也就是说所有的函数将应用同一个时钟,就是同一个时钟域设计。

2.system c设计时钟,可以支持多时钟设计


二、时钟周期
1.vivado hls使用时钟不确定性概念,目的用于提供用户定义的时序余量。
2.关于资源组件的布局和信号线的布线,是vivado hls没办法最终确定的,这个需要最终的综合来执行。
3.时钟余量设置的原因:
在实际的FPGA物理芯片上,时钟芯片不可能完美无缺,必然存在:
时钟抖动jitter,以及时钟偏斜Skew;
时钟偏斜是时钟信号达到不同的寄存器的延迟差异。
布局布线:从逻辑综合到布局布线的物理实现阶段,信号在芯片内部的走向产生不可预测的延迟。

如果 HLS 按照用户设定的 100% 时钟周期来分配逻辑,那么综合出来的 RTL 在实际 FPGA 上几乎肯定无法运行(因为物理延迟会超出周期)。因此,Vivado HLS 必须预扣一部分时间作为“安全余量”,确保生成的电路能通过后续的物理实现步骤并满足时序。


三、设计实践要求
1.不要设置过紧的时钟约束(留足裕度):
如果你需要最终实现 100 MHz(10 ns)的频率,不建议在 HLS 中直接设置 10 ns。因为扣除裕度后,有效周期可能只有 8~9 ns。

建议:设置比目标周期更严格(更小)的时钟周期(例如设置 8 ns),或者在约束中显式指定 clock uncertainty。这会迫使 HLS 进行更激进的优化。

2.通常,在 FPGA 设计中,时钟裕度建议保留 10% ~ 20% 或者 0.5 ns ~ 1 ns。对于高频率设计(如 300 MHz 以上),时钟不确定性占用的比例会更大。


四、relax_ii_for_timing核心工具与机制
1.当 Vivado HLS 检测到某个数据路径过于复杂,无法在当前设定的时钟周期内完成计算(即出现建立时间违例)时,该选项会自动放宽(增加)流水线的启动间隔(II, Initiation Interval)。

← 返回列表