建立时间和保持时间约束的是触发沿前后不同的稳定窗口;它们不是一项指标的正反面。
先读时序图|Ts、Th分别约束什么
建立时间(Tsu)要求触发沿前数据保持稳定;保持时间(Th)要求触发沿后仍稳定。传播延迟(Tpd)和时钟到Q延迟等一起影响数据到达时间。建立违例通常与数据路径过慢有关,保持违例通常与路径过快或时钟偏斜有关。

面试判断|只拉长时钟周期为什么未必有效
普通同频单周期路径上,放宽时钟周期通常有利于Setup,但Hold检查主要关注相邻时钟边沿附近的数据最早到达关系,不能指望仅修改频率就修复保持时间问题。必须结合时钟偏斜、路径最小延迟、IO约束和时钟关系评估。
整改策略分两张单
Setup:考虑减少组合层级、加入流水线、降低扇出、改善布局布线或适当放宽合理约束;Hold:按工具建议插入适量延迟、调整路由、修复时钟关系或IO最小延迟约束。两者要同时收敛,避免修复一个破坏另一个。
我会先看工具报的是Setup还是Hold,核对时钟定义、路径起止点及偏斜。Setup与时钟周期相关,Hold更关注最小数据延迟,所以单纯降频通常不能解决Hold;需要按最小延迟路径和时钟关系修正设计或约束。
不要通过随意设置false path或虚增multicycle,把真实硬件问题藏进约束文件。
延伸追问为什么插入数据路径延迟可能改善Hold却恶化Setup?源同步接口的输入延迟约束该怎样设置?

扫码关注






























