set_multicycle_path相关

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(静态时序分析)

  • 7
    点赞
  • 62
    收藏
    觉得还不错? 一键收藏
  • 6
    评论
set_multicycle_path命令用于设置时序约束中的多周期路径。在多周期设计中,某些信号不仅可以在一个时钟周期内到达目的地,而且可能需要多个时钟周期。在这种情况下,就需要使用set_multicycle_path命令来设置多周期路径的时序约束。 set_multicycle_path命令的语法格式如下: ``` set_multicycle_path -setup|-hold|-recrem <value> [-from <start_point>] [-to <end_point>] [-rise|-fall] [-through <through_point>] [-end [<max_paths>]] [-start [<max_paths>]] [-name <path_name>] [-setup_rising|-setup_falling|-hold_rising|-hold_falling] ``` 其中,选项说明如下: - -setup: 设置多周期路径的setup时序约束。 - -hold: 设置多周期路径的hold时序约束。 - -recrem: 设置多周期路径的recovery/removal时序约束。 - <value>: 多周期路径的时序约束值。 - -from <start_point>: 指定多周期路径的起始点。 - -to <end_point>: 指定多周期路径的结束点。 - -rise|-fall: 指定多周期路径的信号变化类型。 - -through <through_point>: 指定多周期路径的中间点。 - -end [<max_paths>]: 限制最大终止点数。 - -start [<max_paths>]: 限制最大起始点数。 - -name <path_name>: 设置多周期路径的名称。 - -setup_rising|-setup_falling|-hold_rising|-hold_falling: 指定时序约束的时钟边沿类型。 需要注意的是,set_multicycle_path命令设置的多周期路径时序约束会在后续的时序分析中起作用,因此在设计中合理使用set_multicycle_path命令非常重要,能够有效提高设计的时序性能。
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值