setup 违例
(1)增大时钟周期,即降低时钟频率,则很容易满足 setup 时序约束的公式,解决,
(2)可以改善时钟质量,降低抖动jitter,如果时钟歪斜 Tskew 为正,对setup是有利的,对hold是有害;
(3)减小 Tco,即更换更快的器件,使用更先进的器件库,使得 Tco 更小
(4)减小 Tcomb,即减小组合逻辑延时,主要是关键路径的处理
针对关键路径:
-
流水线pipeline
-
逻辑复制或插入buffer增强驱动
https://blog.youkuaiyun.com/luoai_2666/article/details/119984410 -
重定时Retiming
在不增加寄存器个数的前提下,通过改变寄存器的位置来优化关键路径,
-
加法树、乘法树平衡
-
消除代码优先级(case代替if…else)
本身确实不需要优先级的地方,可以使用case代替if…else,使得顺序执行的语句编程并行执行。如果确实有优先级,则不能这样做。这种消除代码中的优先级的策略也称为代码结构平坦化技术,主要针对那些带优先级的编码结构。
Hold违例
(1)增加 Tcomb 延迟,增大数据的延迟具体表现为插入 Buffer,Xilinx 还提到可以插入 LUT1 增加延迟等方式来修复;
(2)如果考虑时钟抖动 jitter 的话,时钟抖动 jitter 对 setup 和 hold 都造成有害影响,可以改善时钟质量,降低抖动jitter;
(2)如果考虑时钟偏斜 skew 的话,时钟偏斜 skew 对 setup 和 hold 是相反的影响,若 skew 为正时,增大 skew 对 setup 有好处,裕量更大,但是 hold 的裕量会更小 ;