9 FPGA时序约束实战篇之衍生时钟约束

约束衍生时钟

  系统中有4个衍生时钟,但其中有两个是MMCM输出的,不需要我们手动约束,因此我们只需要对clk_sampspi_clk进行约束即可。约束如下:

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]

  我们再运行report_clocks,显示如下:

image

我们在理论篇的“create_generated_clock”一节中讲到,我们可以重新设置Vivado自动生成的衍生时钟的名字,这样可以更方便我们后续的使用。按照前文所讲,只需设置namesource参数即可,其中这个source可以直接从report_clocks中得到,因此我们的约束如下:

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]

  大家可以对比下report_clocks的内容和约束指令,很容易就能看出它们之间的关系。

把上述的约束指令在tcl中运行后,我们再运行一遍report_clocks,显示如下:

image

在时序树的分析中,我们看到,clk_sampclk2两个异步时钟之间存在数据交互,因此要进行约束,如下:

set_clock_groups -asynchronous -group [get_clocks clk_samp] -group [get_clocks clk2]

FPGA时序约束教程所有文章:

1 FPGA时序约束理论篇之建立保持时间
2 FPGA时序约束理论篇之时序路径与时序模型
3 FPGA时序约束理论篇之IO约束
4 FPGA时序约束理论篇之时钟周期约束
5 FPGA时序约束理论篇之两种时序例外
6 FPGA时序约束理论篇之xdc约束优先级
7 FPGA时序约束实战篇之梳理时钟树
8 FPGA时序约束实战篇之主时钟约束
9 FPGA时序约束实战篇之衍生时钟约束
10 FPGA时序约束实战篇之延迟约束
11 FPGA时序约束实战篇之伪路径约束
12 FPGA时序约束实战篇之多周期路径约束
13 FPGA时序约束之Vivado辅助工具
14 FPGA时序约束之Tcl命令的对象及属性

个人网站:http://www.technomania.cn/

微信公众号:Quant_Times
      Reading_Times

  • 4
    点赞
  • 45
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值