笔者能力有限,如果文中出现错误的地方,还请各位朋友能够给我指出来,我将不胜感激,谢谢!
最后我们来讨论一下多周期路径约束的第三种情况,即源时钟慢于目的时钟。
在未加入任何检查约束的情况下,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 -end -from CLK1 -to CLK2
set_multicycle_path 2 -hold -end -from CLK1 -to CLK2