【Time4】set_multicycle_path

约束格式

 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]

参考资料

UG903下载

UG906下载

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

set_multicycle_path命令用于设置时序约束中的多周期路径。在多周期设计中,某些信号不仅可以在一个时钟周期内到达目的地,而且可能需要多个时钟周期。在这种情况下,就需要使用set_multicycle_path命令来设置多周期路径的时序约束set_multicycle_path命令的语法格式如下: ``` set_multicycle_path -setup|-hold|-recrem <value> [-from <start_point>] [-to <end_point>] [-rise|-fall] [-through <through_point>] [-end [<max_paths>]] [-start [<max_paths>]] [-name <path_name>] [-setup_rising|-setup_falling|-hold_rising|-hold_falling] ``` 其中,选项说明如下: - -setup: 设置多周期路径的setup时序约束。 - -hold: 设置多周期路径的hold时序约束。 - -recrem: 设置多周期路径的recovery/removal时序约束。 - <value>: 多周期路径的时序约束值。 - -from <start_point>: 指定多周期路径的起始点。 - -to <end_point>: 指定多周期路径的结束点。 - -rise|-fall: 指定多周期路径的信号变化类型。 - -through <through_point>: 指定多周期路径的中间点。 - -end [<max_paths>]: 限制最大终止点数。 - -start [<max_paths>]: 限制最大起始点数。 - -name <path_name>: 设置多周期路径的名称。 - -setup_rising|-setup_falling|-hold_rising|-hold_falling: 指定时序约束的时钟边沿类型。 需要注意的是,set_multicycle_path命令设置的多周期路径时序约束会在后续的时序分析中起作用,因此在设计中合理使用set_multicycle_path命令非常重要,能够有效提高设计的时序性能。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

qq_1615549892

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值