笔者能力有限,如果文中出现错误的地方,还请各位朋友能够给我指出来,我将不胜感激,谢谢!
这次我们来讨论一下多周期路径约束的第二种情况,即源时钟快于目的时钟。
在未加入任何检查约束的情况下,Vivado工具默认的时序检查如下图所示:
- 当前的发射沿发送的数据能够被当前接收沿采集到(检查Setup Time)
- 下一个发射沿发送的数据不能够被当前接收沿采集到 (检查Hold time)
通过tcl命令表示即(命令的解释看上一篇文章"如何进行多周期路径约束1" ):
set_multicycle_path 1 -setup -start -from CLK1 -to CLK2
set_multicycle_path 0 -hold -start -from CLK1 -to CLK2
如果此时逻辑的设计是源时钟每3个时钟周期更新一次数据,则我们期望的时序检查如下图所示:
- 当前有效发射沿发送的数据能够被当前有效接收沿采集到(检查Setup Time)
- 下一个有效发射沿发送的数据不能够被当前有效接收沿采集到 (检查Hold time)
通过tcl命令来约束Vivado工具检查时序:
set_multicycle_path 3 -setup -start -from CLK1 -to CLK2
set_multicycle_path 2 -hold -start -from CLK1 -to CLK2