作者:猫叔
延迟约束
对于延迟约束,相信很多同学是不怎么用的,主要可能就是不熟悉这个约束,也有的是嫌麻烦,因为有时还要计算PCB上的走线延迟导致的时间差。而且不加延迟约束,Vivado也只是在Timing Report中提示warning,并不会导致时序错误,这也会让很多同学误以为这个约束可有可无。
但其实这种想法是不对的,比如在很多ADC的设计中,输出的时钟的边沿刚好是数据的中心位置,而如果我们不加延迟约束,则Vivado会默认时钟和数据是对齐的。
对于输入管脚,首先判断捕获时钟是主时钟还是衍生时钟,如果是主时钟,直接用set_input_delay即可,如果是衍生时钟,要先创建虚拟时钟,然后再设置delay。对于输出管脚,判断有没有输出随路时钟,若有,则直接使用set_output_delay,若没有,则需要创建虚拟时钟。
在本工程中,输入输出数据管脚的捕获时钟如下表所示:
根据上表,我们创建的延迟约束如下,其中的具体数字在实际工程中要根据上下游器件的时序关系(在各个器件手册中可以找到)和PCB走线延迟来决定。未避免有些约束有歧义,我们把前面的所有约束也加进来。
# 主时钟约束 create_clock -period 25.000 -name clk2 [get_ports clk_in2] # 衍生时钟约束 create_generated_clock -name clk_samp -source [get_pins clk_gen_i0/clk_core_i0/clk_tx] -divide_by 32 [get_pins clk_gen_i0/BUFHCE_clk_samp_i0/O] create_generated_clock -name spi_clk -source [get_pins dac_spi_i0/out_ddr_flop_spi_clk_i0/ODDR_inst/C] -divide_by 1 -invert [get_ports spi_clk_pin] create_generated_clock -name clk_tx -source [get_pins clk_gen_i0/clk_core_i0/inst/mmcm_adv_inst/CLKIN1] [get_pins clk_gen_i0/clk_core_i0/inst/mmcm_adv_inst/CLKOUT1] create_generated_clock -name clk_rx -source [get_pins clk_gen_i0/clk_core_i0/inst/mmcm_adv_inst/CLKIN1] [get_pins clk_gen_i0/clk_core_i0/inst/mmcm_adv_inst/CLKOUT0] # 设置异步时钟 set_clock_groups -asynchronous -group [get_clocks clk_samp] -group [get_clocks clk2] # 延迟约束 create_clock -period 6.000 -name virtual_clock set_input_delay -clock [get_clocks -of_objects [get_ports clk_pin_p]] 0.000 [get_ports rxd_pin] set_input_delay -clock [get_clocks -of_objects [get_ports clk_pin_p]] -min -0.500 [get_ports rxd_pin] set_input_delay -clock virtual_clock -max 0.000 [get_ports lb_sel_pin] set_input_delay -clock virtual_clock -min -0.500 [get_ports lb_sel_pin] set_output_delay -clock virtual_clock -max 0.000 [get_ports {txd_pin {led_pins[*]}}] set_output_delay -clock virtual_clock -min -0.500 [get_ports {txd_pin {led_pins[*]}}] set_output_delay -clock spi_clk -max 1.000 [get_ports {spi_mosi_pin dac_cs_n_pin dac_clr_n_pin}] set_output_delay -clock spi_clk -min -1.000 [get_ports {spi_mosi_pin dac_cs_n_pin dac_clr_n_pin}]
编辑:hfy
-
pcb
+关注
关注
4329文章
23188浏览量
400558 -
adc
+关注
关注
99文章
6538浏览量
546020
发布评论请先 登录
相关推荐
xilinx FPGA IOB约束使用以及注意事项
![xilinx FPGA IOB<b class='flag-5'>约束</b>使用以及注意事项](https://file1.elecfans.com/web3/M00/06/2C/wKgZPGeIdxCAETnhAAAYft3PTWM462.png)
PCB走线与电磁兼容:如何巧妙平衡与协同
探索电路板pcb螺旋走线的特点
请教,SIM卡PCB走线,这个CKL时钟线和数据线DATA要等长嘛,一条走顶层一条走底层如图这样可以嘛
DDR5内存条上的时钟走线
![DDR5内存条<b class='flag-5'>上</b>的时钟<b class='flag-5'>走</b><b class='flag-5'>线</b>](https://file1.elecfans.com/web2/M00/FC/D5/wKgZomaWQpaAYIrMAABOMHbqw70542.png)
射频PCB走线规则简析
什么是PCB走线宽度?影响走线宽度的关键因素有哪些
![什么是<b class='flag-5'>PCB</b><b class='flag-5'>走</b>线宽度?影响<b class='flag-5'>走</b>线宽度的关键因素有哪些](https://file1.elecfans.com/web2/M00/CA/CD/wKgZomYfRgSASqHoAAAWNh9pjYc737.png)
如何对PCB进行差分对的走线操作呢?
差分走线的原理和作用 差分走线是射频走线的一种吗
Altium Designer中走线模式的切换方法
![Altium Designer中<b class='flag-5'>走</b><b class='flag-5'>线</b>模式的切换方法](https://file1.elecfans.com/web2/M00/C6/06/wKgZomYEyh-AfJvJAAADfjo8ZE8044.png)
评论