数字IC设计学习笔记
多周期路径 Multicycle Paths
1. 多周期路径 Multicycle Paths
2. Setup time 检查
3. Hold time 检查
4. 总结
1. 多周期路径 Multicycle Paths
- 多周期路径Multicycle Paths:在一些特殊情况,组合逻辑的传输延迟超过了一个时钟周期,则这条组合逻辑路径被视为多周期路径,Multicycle Paths。对于多周期路径,进行时序分析时,需要在脚本文件中对这部分设计设置多周期路径约束。
2. Setup time检查
脚本约束:
- Create_clock -name CLKM -period 10 [get_ports CLKM]
- Set_multicycle_path 3 -setup \ -from [get_pins UFF0/Q]\ -to [get_pins UFF1/D]
时序报告
注意:setup检查时,capture edge在3个时钟周期后,所以,capture path的clock上升沿应该在30ns。
3. Hold time检查
通常情况下,hold检查默认在setup检查的前一个时钟周期的上升沿。但是对于多周期路径而言,如果在此处检查,则对数据要求特别严苛,且不符合常理要求。因为hold检查的是延迟的最小时间,所以,在进行多周期hold检查时,需要在默认的hold检查边沿再向前移动两个是时钟边沿。
脚本约束:
- Set_multicycle_path 2 -hold -from [get_pins UFF0/Q]\ -to [get_pins UFF1/D]
时序报告
注意:从时序报告中可以看出,时钟网络不是理想的值,所以可知,这个静态时序报告,不是来源于逻辑综合,而是来源于后面的工具,此时时钟网络为确定值,而不是理想值。
如果setup设置为N,但是hold没有被设置为N-1?
答:此时hlod的检查边沿将为setup的前一个时钟边沿。时序将非常严苛且不合理,非常容易出现timing violation。
时序报告
从时序报告可以看出,在这种情况下,hold检查时,capture edge在setup的前一个时钟周期的上升沿,此时时钟为20ns,结果违反了时序要求。
4. 总结:
- 在多周期路径,对于setup time,一定要自己检查设定的周期数N,然后一定要给hold
time检查设置为N-1个周期。这样才能证setup和hold时比较合理的。
[参考资料]
- 邸志雄老师的课件
- 集成电路静态时序分析与建模
【注】:个人学习笔记,如有错误,望不吝赐教,这厢有礼了~~~