1.由慢到快的多周期约束
- 如下图所示,发射时钟周期是接受时钟周期的4倍。默认情况下,按照1T原则来进行静态时序分析和布局布线的。即建立时间是在发射沿后的第一个捕获沿检查,而保持时间是同一时刻下源时钟和捕获时钟的触发边沿下检查的(建立时间检查边沿的前一个触发沿)。
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/45e8cdd2f09597190a508a890ddf25cc.png)
- 但是这样导致的问题就是该路径过于苛刻,为了满足这条路径的要求,不得不放弃其他路径。或者根本没办法保证这个默认的约束。总之最终造成系统时序问题。
- 一般而言,慢时钟域下的组合逻辑数据处理耗时较长,可能需要多个快时钟周期才可以得到稳定值。因此多周期约束就有用武之地了。类似的情况还有同时钟域下,存在乘法器or除法器,一个时钟周期得不到稳定结果,并且这个结果也不是必须一个周期得到不可,这种情况下也可以进行多周期约束。
- 在这个例子里,最合适的建立时间检查沿是发射沿后面的第4个边沿(20ns处)。因此做如下的多周期约束:
set_multicycle_path -setup -end -from [get_clocks CLKM] -to [get_clocks CLKP] 4
#end代表此处指目的触发器的时钟
#4代表将建立时间的检查向后移动了(4-1)个周期,默认是1