vivado 一文归纳出时序约束

一.概述

对于时序路径来说,一共有4种时序路径,如下图:

(1)从上游芯片最后一级触发器的时钟发送沿有效到FPGA中第一级触发器的输入。

(2)FPGA内部从上级触发器时钟发送沿有效到下级触发器的输入。

(3)从FPGA最后一级触发器的时钟发送沿有效到下游芯片第一级触发器的输入。

(4)从FPGA的输入端口经过组合逻辑直接到FPGA的输出端口。

根据不同的时序路径就有一些不同类型的时序约束。进行时序分析的前提是有正确的时序约束。

二.时序约束介绍

2.1主时钟约束

对于时序约束来说,主时钟约束是基准。主时钟有两种,第一种是外部晶振产生的时钟,第二种是GT产生的接收端时钟和发送端时钟。

create_clock -period 20.000 -name clk50m_i -waveform {0.000 10.000} [get_ports clk50m_i]

create_clock -name rxclk -period 3.33 [get_pins gt0/RXOUTCLK]

2.2手动生成的时钟

对于MMCM和PLL,只用约束他们的输入时钟(一般是主时钟),工具会自动生成他们的输出时钟。而对于自己手动生成的时钟,比如分频时钟,需要约束。

create_generated_clock -name clkdiv2 -source [get_ports clkin] -divide_by 2 [get_pins REGA/Q](由clkin分出来的二分频时钟)

2.1和2.2就把需要约束时钟周期的时钟介绍了,下面介绍其他类型时序约束。

2.3异步时钟组

对于异步时钟的跨时钟域,应告诉工具此为异步时钟组,不需要做时序分析,否则工具会对此做不正确的时序分析,增加编译时间,为了优化此处时序,还会侵占关键路径的布局布线资源。但是告诉工具不代表不用人为的去做跨时钟处理,只是让工具对此处不分析。

set_clock_groups -asynchronous -group CLKOUT0 -group CLKOUT1

2.4互斥时钟组

对于两个时钟A,B输入,然后经过一个BUFGMUX产生一个C时钟的情况,那么就会产生互斥时钟。

(1)若A、B、C三个时钟都没有交集,那么需声明A、B为逻辑互斥(-group对象不同,一个A,一个B)时钟组。

(2)若A、B、C三个时钟有交集,那么需声明由A产生的C时钟和由B产生的C时钟为物理互斥(-group对象相同,都是BUFGMUX的O端)时钟组。

2.5伪路径约束

对于上电才会工作的寄存器对应的路径、异步复位路径、只在测试时才会用到的逻辑对应的路径,都要告知工具这是一条不需要时序分析的路径。好处类似于异步时钟组约束。

set_false_path -from [get_pins rst_n_tmp_reg/C]

2.6多周期约束

下图是多周期约束的一些概念:

由于缺省情况下,工具默认的是单周期约束,多周期约束的目的就是放松该条路径的时序,如果可以多周期约束的路径没有进行约束,那么就会按照单周期就行时序的过优化,侵占其他关键路径的布局布线资源,造成其他关键路径的时序为例和建立时间裕量变小。

案例:

2.7Input_delay约束

input_delay是上游芯片最后一级触发器的发送沿有效时到数据到达FPGA port时的延时。

set_input_delay -clock clk 4 [get_ports din](告诉工具,上游芯片在数据输入到FPGA端口需要4ns,也就是在建立时间不违例的前提下,FPGA内部Tdata加Tsu最多有6ns的时间)

2.8Output_delay约束

output_delay是从FPGA的port到下游芯片的第一级触发器的捕获沿有效时的延时。反映的是下游芯片的第一级触发器能稳定捕获数据的时间段。

set_output_delay -clock clk 6 [get_ports dout](告诉工具,下游芯片在数据输入后需要6ns才能满足建立时间需求稳定的采到数据,也就是FPGA内部Tco加Tdata需控制在4ns以内)

2.9Max_delay约束

FPGA输入port经过组合逻辑直接输出到输出port的延时。或者多周期路径、异步路径间使用(不常用)

  • 1
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Vivado中,时序约束(或时钟约束)是用来指定时钟的特性和限制的。对于PLL(Phase-Locked Loop,锁相环)时钟,可以通过以下步骤进行约束设置: 1. 首先,在约束文件(.xdc文件)中定义PLL时钟对象。可以使用set_clocks命令来定义PLL时钟,指定时钟名称、时钟源、时钟频率等相关属性。 2. 如果在约束文件中已经定义了PLL时钟对象,那么Vivado将不会自动生成相同对象上的时钟。 3. 在时序约束中,可以使用时钟延迟约束来指定时钟的上升沿或下降沿延迟。可以使用-add_delay选项来避免下降沿延迟覆盖上升沿延迟。 总之,通过在约束文件中定义和设置PLL时钟对象,可以对PLL时钟进行时序约束的设置。 需要注意的是,在进行时序分析时,同步时钟可以安全地进行时序分析,而异步时钟和不可扩展时钟的时序分析结果可能不可靠。对于异步时钟和不可扩展时钟,可以通过设置时钟组来忽略其时序路径的分析。 在7系列FPGA中,CMB单元包括MMCM、PLL、BUFR和PHASER等,而UltraScale系列FPGA的CMB单元种类更多。具体的CMB单元种类和数量可以根据实际情况查阅相关文档,这里不一一列举。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [vivado时序约束](https://blog.csdn.net/qq_42322644/article/details/118311470)[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^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *2* *3* [Vivado使用技巧(31):时钟约束方法](https://blog.csdn.net/FPGADesigner/article/details/82871624)[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^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值