Vivado 约束 – 为什么以及何时需要 set_multicycle_path 来约束输入和输出路径?
当默认的最差要求基于源时钟和目标时钟之间的波形关系以及路径上传输的数据切换速率过于严格时,set_multicycle_path 约束用于放宽路径要求。
set_multicycle_path 约束通常用于 FPGA 内部顺序元件(例如 FF、RAM、DSP 等)之间的芯片内路径。
但是,当使用 set_input_delay 和 set_output_delay 约束来约束芯片间路径时,可能还需要 set_multicycle_path 约束与芯片内路径相同。
本答复记录解释了为什么以及何时需要 set_multicycle_path 约束来约束输入和输出路径。
1. 为什么片间路径需要set_multicycle_path?
如下图所示,芯片间路径与芯片内路径相同,只是 FPAG 器件外部的部分路径延迟对于 Vivado 时序引擎来说是未知的。
当使用set_input_delay和set_output_delay指定外部路径延迟时,Vivado时序引擎能够像分析FPGA内部的路径一样分析芯片间路径。
因此,使用set_multicycle_path放宽路径要求的原理对于芯片内和芯片间路径是相同的。
有关 set_multicycle_path 约束的更多信息,请参阅(UG903)- “使用约束”。
注意:set_multicycle_path 约束仅在中间边不捕获数据时适用。
2.需要set_multicycle_path来约束芯片间路径的典型用例。
- 用例#1
数据每两个捕获时钟周期切换一次。
定时引擎默认设置要求是单周期,即8-0=8。
如果可以接受启动后第二个上升沿捕获数据,我们可以使用 set_multicycle_path 约束来放宽设置要求,但保持保持检查不变。
注意:set_multicycle_path 约束仅在中间边不捕获数据时适用。
经过多周期调整后,设置要求变为16-0=16。
如果这是在输入端:
如果这是在输出侧:
- 用例#2
与启动时钟相比,捕获时钟具有相移。定时引擎确定的默认设置要求是两个最接近的启动和捕获时钟边沿之间的时间差,在以下情况下为 1-0=1。一般来说,1ns 的要求太严格且不现实。
所以我们需要使用set_multicycle_path来放宽设置要求。
多周期调整后,设置要求变为9-0=9。如果这是在输入端:
注意:在这种情况下,不需要使用附加的 set_multicycle_path 约束来修改保持关系,因为它已经相对于设置关系正确建立。如果这是在输出侧(源同步接口):
没有回复内容