约束格式
set_multicycle_path N [-setup|-hold] [-start|-end] [-from ] [-to ] [-through ]
参数N默认
1 for setup analysis (or recovery)
0 for hold analysis (or removal)
setup约束默认的是移动捕获沿,hold 约束默认的是移动发射沿。
记住setup -start是右移launch沿就行,其他的可以推导。
不同情况下,沿移动对应表格
-start(launch) -hold(capture)
setup <---- ---->(default)
hold ---->(default) <----
时序图上Hold的箭头表示啥意思?
从Source Clk 的Launch的数据再Destination Clk的Capture要做Hold检查。数据是否稳定,是否被冲掉。
在Setup检查中source clock一定超前于destination clock。
分析destination clock之前的时钟沿
在Hold检查下destination clock超前于source clock。
分析source clock之前的时钟沿
多周期约束意义
时序分析工具在进行分析的时候,默认是进行一个周期的分析的。这种分析可能过于严格,可能不适用于某些逻辑路径。如果你的设计中允许数据在1个甚至多个周期之后稳定,那么你就可以使用多周期约束。这样会使得在布线过程中释放布线资源,同时也会降低布线运行时间。
本质上是约束Tcomp(两个FF之间的线路延时),确定数据到达FF2.D的时间。
隐藏前提:
当前launch沿和下一个launch沿之间的时钟沿不会采样FF1.D,不会造成FF1.Q更新。
这种角度来看是可以将当前launch沿和下一个launch沿中间的时钟沿忽略。
总结:Launch3输出的数据Q,只能被capture3采样到,不能被其他capture沿采样到。
为什么不能被其他capture沿采样到?因为假如Launch3输出的数据Q能被其他沿采样到,数据是周期的,说明capture3采样到其他非Launch3沿,这不乱了吗?
因为capture3是Launch3之后的1个周期还是2个周期?都可以,主要是满足FF2建立保持时间
为什么可以多周期?
因为组合逻辑延时太大,一个周期内不满足setup时序,所以在第2个或多个周期后采样。
建立时间是确定组合逻辑延时的最大值,
单周期:T-Tsetup-Tco>Tcomp
2周期:2T-Tsetup-Tco>Tcomp
保持时间是确定组合逻辑延时的最小值,
单周期:Thold+Tco
2周期:T+Thold+Tco,在多周期约束下可以Thold+Tco
//快到慢
set_multicycle_path 4 -setup -start -from [get_clocks fifo_wr_clk] -to [get_clocks fifo_rd_clk]
set_multicycle_path 3 -hold -start -from [get_clocks fifo_wr_clk] -to [get_clocks fifo_rd_clk]
set_multicycle_path 4 -setup -end -from [get_clocks fifo_rd_clk] -to [get_clocks fifo_wr_clk]
set_multicycle_path 3 -hold -end -from [get_clocks fifo_rd_clk] -to [get_clocks fifo_wr_clk]
参考资料
https://www.cnblogs.com/rednodel/p/11527243.html
https://blog.csdn.net/weixin_44109405/article/details/104027995
https://mp.weixin.qq.com/s/RGAC6hKsPF3WTkdVJS9CWw
https://blog.csdn.net/linbian1168/article/details/100164905
https://blog.csdn.net/linbian1168/article/details/100164905
https://blog.csdn.net/weixin_44109405/category_9587707.html
https://blog.csdn.net/qq_41332806/article/details/105728866
https://blog.csdn.net/weixin_45270982/article/details/112546403
https://my.oschina.net/u/4579683/blog/4487378