文章目录
set_multicycle_path命令
命令语法
- 默认情况下,建立时间的path_multiplier为1,保持时间的path_multiplier为0
- 默认情况下,建立时间的path_multiplier是相对于目的时钟而言的(即默认使用了-end选项);如果需要相对于源时钟来设置建立时间的path_multiplier,则需要使用-start选项
- 默认情况下,保持时间的path_multiplier是相对于源时钟而言的(即默认使用了-start选项);如果需要相对于目的时钟来设置保持时间的path_multiplier,则需要使用-end选项
- 保持时间和建立时间是相关联的。当使用-setup选项设置多周期路径时,不仅仅修改了setup关系,同时也修改了hold关系,因此通常也需要再设置-hold选项。
setup/hold relationship释义
多周期约束前后对比
使用多周期约束前,可以看到源时钟与目的时钟同频同相,发起沿(launch edge)与捕获沿(capture edge)相差1个时钟,
当仅仅对建立时间进行约束后,
set_multicycle_path 2 -setup -from [get_pins data0_reg/C] -to [get_pins data1_reg/D]
这时能够看到建立时间的捕获沿与发起沿(launch edge)相差2个时钟了;但保持时间的关系也改变了,已经随捕获沿的移动而移动了,为了将保持时间的关系修正回来,需要使用-end选项将保持时间关系中的目的时钟后退一下,
set_multicycle_path 1 -hold -end -from [get_pins data0_reg/C] -to [get_pins data1_reg/D]
此时建立时间、保持时间关系才是正确的。
源时钟和目的时钟是同一时钟
set_multicycle_path N -setup -from [get_pins data0_reg/C] -to [get_pins data1_reg/D]
set_multicycle_path N-1 -hold -from [get_pins data0_reg/C] -to [get_pins data1_reg/D]
对于源时钟和目的时钟是同一时钟的情况而言,保持时间设置中的-end(backward)选项可以忽略,原因是 发起沿前移和捕获沿后退的效果是等价的,如下图所示,
源时钟和目的时钟存在相移
默认情况下,STA工具对建立/保持时间的分析方式
慢时钟域到快时钟域
默认情况下,STA工具对建立/保持时间的分析方式
set_multicycle_path N -setup -from [get_clocks CLK1] -to [get_clocks CLK2]
set_multicycle_path N-1 -hold -end -from [get_clocks CLK1] -to [get_clocks CLK2]
快时钟域到慢时钟域
默认情况下,STA工具对建立/保持时间的分析方式
set_multicycle_path N -setup -start -from [get_clocks CLK1] -to [get_clocks CLK2]
set_multicycle_path N-1 -hold -from [get_clocks CLK1] -to [get_clocks CLK2]
使用总结
博文链接
换位思考多周期约束
SDC(3)–set_multicycle_path 最关键的一张图
亲身经历华为海思面试,专业问题分享解析
vivado 多周期路径设置
sdc中set_multicycle_path的解释
FPGA STA(静态时序分析)