静态时序分析-Multicycle约束

        有时,前端在一些关键路径上的设计,可能会出现两个时钟周期驱动和采样一拍数据,来放松关键路径上的时序,这样的设计在STA约束过程中,如果不放松,会导致Timing违例过大,无法收敛,此时的Timing由前端逻辑实现保证,STA约束即可释放,以达到STA出口。

双Cycle驱动采样典型电路

       双Cycle的驱动和采样电路,常见的为Lunch Reg和Capture Reg在D端会带有使能所存逻辑,如图3.2.1.1所示。

图3.2.1.1 典型双cycle采样电路结构

       Lunch寄存器在使能信号EN为1时,时钟有效沿到来后,将数据采样到Q,当EN信号为0时,Q端锁存。Capture寄存器同理,在EN信号为1时,采样Lunch寄存器驱动的信号,EN为0时,锁存Q端信号。如果要做到双周期采样,EN信号的翻转应为时钟周期的二分频。该电路的时序如图3.2.1.2所示。

图3.2.1.2 双cycle电路设计时序图

       MultiCycle的设置为对部分时钟有效沿不做setup或者hold检查,帮助清理Timing Violation,针对上述两拍出一个数据的设计,STA设置如下:

set_multicycle_path 2 -setup -from lunch_reg.clk to capture_reg.d

       此时设置从lunch reg的时钟端到capture reg的数据D端为multicycle,放松setup检查一拍,如图3.2.1.3所示。

图3.2.1.3 multicycle检查点

       按照上式设定STA约束后,Setup检查会放过一个cycle做路径的setup检查,如图3.2.1.3所示,红色线为capture沿的setup检查,而对于该路径,前一个沿放过Setup检查。如果不设置hold检查,当沿的hold会在capture沿提前一个cycle做,因此如图3.2.1.3所示蓝色线为hold检查沿,此时可以发现,multicycle路径下,capture沿的前一个有效沿可放过setup/hold检查。因此需要新增hold的约束设定。

set_multicycle_path 2 -setup -from lunch_reg.clk to capture_reg.d

set_multicycle_path 1 -hold -from lunch_reg.clk to capture_reg.d

       增加设定后,对hold的检查沿如图3.2.1.4所示。

图3.2.1.4 正确的multicycle检查设定

       针对上述典型事例设定的multicycle,双沿打拍场景下,中间的沿不做timing检查,lunch沿后两个周期作为capture沿检测setup,capture沿前两个周期检测hold。

3.2.2 单Cycle采样双Cycle驱动典型电路

       在有的设计下,存在lunch沿后一个周期进行capture,此时可通过multicycle的设定放松hold检查,单cycle采样双cycle驱动电路如图3.2.2.1所示。

图3.2.2.1 单Cycle采样双Cycle驱动典型电路

       该电路下的采样驱动时序如图3.2.2.2所示。

图3.2.2.2 单Cycle采样双Cycle驱动典型电路时序

       此时multicycle应当做如下设定:

set_multicycle_path 1 -setup -from lunch_reg.clk to capture_reg.d

set_multicycle_path 1 -hold -from lunch_reg.clk to capture_reg.d

       Setup检查为lunch沿的后一个Capture Cycle,而hold检查为Capture的前两个Cycle,如图3.2.2.3所示

这种电路的设计,有助于放松hold,因为跨过一个cycle不检查hold,因此对hold会放松。

       Multicycle约束最常见的场景其实是同步时钟分频的lunch和采样问题,这类问题一般分为两类,一类是慢时钟lunch,快时钟capture,另一类是快时钟lunch,慢时钟capture。下面具体对两种场景进行multicycle分析。

慢时钟lunch快时钟capture

       举一个例子,RTL设计在慢时钟域驱动数据,在快时钟域采样数据,慢时钟是快时钟的4分频,为同步设计,此时对于快时钟,可以设置multicycle如下:

set_multicycle_path 4 -setup -end -from clk_slow to clk_fast

相关时序分析和setup/hold检查沿如图3.2.3.1所示。

图3.2.3.1 同步分频时钟setup/hold约束

       此时hold检查为capture的前一个沿,因此要该类设计还要放松hold,约束设置如下:

set_multicycle_path 4 -setup -end -from clk_slow to clk_fast

set_multicycle_path 3 -hold -end -from clk_slow to clk_fast

相关时序分析和setup检查沿如图3.2.3.2所示。

图3.2.3.2 同步分频时钟setup/hold约束

       同理,对于setup的multicycle设定以及hold的multicycle设定,放松的具体cycle可以映射到时序图检查沿上,举例如下约束:

set_multicycle_path 2 -setup -end -from clk_slow to clk_fast

set_multicycle_path 3 -hold -end -from clk_slow to clk_fast

       该约束对应的时序有效沿检查如图3.2.3.3。

图3.2.3.3 同步分频时钟setup/hold约束

3.2.4 快时钟lunch慢时钟capture

举另外一个例子,RTL设计在快时钟域驱动数据,在慢时钟域采样数据,慢时钟是快时钟的4分频,为同步设计,此时逻辑应保证信号在快时钟展宽,确保慢时钟能够采样到有效信号,此时也可以设置multicycle:

set_multicycle_path 4 -setup -start -from clk_fast to clk_slow

set_multicycle_path 3 -hold -start -from clk_fast to clk_slow

相关时序分析和setup/hold检查沿如图3.2.4.1所示。

图3.2.4.1 同步分频时钟setup/hold约束

       前端RTL设计为在慢时钟下降沿采样数据,则multicycle约束要设定为:

set_multicycle_path 2 -setup -start -from clk_fast to clk_slow

set_multicycle_path 3 -hold -start -from clk_fast to clk_slow

相关时序分析和setup检查沿如图3.2.4.2所示。

图3.2.4.2 同步分频时钟setup/hold约束

  • 2
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
时序约束是在FPGA设计中用于确保电路在特定时钟频率下正确运行的重要工具。根据引用\[1\]和引用\[2\]的内容,可以总结出以下关于xilinx时序约束的一些要点: 1. 约束文件的使用时机:约束文件可以在综合和实现过程中使用。其中,wave_gen_timing.xdc文件在综合和实现过程中都会使用,而wave_gen_pins.xdc文件只会在实现过程中使用。 2. 约束的顺序:根据引用\[2\]的建议,推荐的约束顺序如下: - Timing Assertions Section:时序断言部分 - Primary clocks:主时钟 - Virtual clocks:虚拟时钟 - Generated clocks:生成的时钟 - Clock Groups:时钟组 - Bus Skew constraints:总线延迟约束 - Input and output delay constraints:输入和输出延迟约束 - Timing Exceptions Section:时序异常部分 - False Paths:虚假路径 - Max Delay / Min Delay:最大延迟/最小延迟 - Multicycle Paths:多周期路径 - Case Analysis:情况分析 - Disable Timing:禁用时序 - Physical Constraints Section:物理约束部分 3. 创建综合约束:根据引用\[3\]的内容,可以使用以下方法创建综合约束: - 使用INST语句将一系列信号归入一个组合,然后可以对该组合统一施加约束。 - 使用TIMESPEC语句定义从一个组到另一个组的时序约束。 4. 附加约束的策略:一般的策略是首先附加整体约束,如PERIOD、OFFSET等,然后对局部电路附加专门约束。通过在可能的地方放松约束,可以提高布线通过率并减小布局布线的时间。 综上所述,xilinx时序约束的使用时机、约束顺序、创建综合约束的方法以及附加约束的策略都是设计中需要考虑的重要因素。 #### 引用[.reference_title] - *1* *2* [Xilinx约束学习笔记—— 时序约束](https://blog.csdn.net/qq_21794157/article/details/126102689)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [xilinx 时序约束](https://blog.csdn.net/qijitao/article/details/46649243)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值