三、时钟约束的理论和实践——基准时钟、生成时钟、虚拟时钟

该文章已生成可运行项目,

前言:前面从理论角度出发学习了 时序分析理论基础IO接口时序分析基本原理和意义,本篇从设计的角度学习如何合理添加时钟约束。

时钟约束常用语句

时钟约束是最基本的约束。
时钟约束也就是经常看到的Fmax,因为Fmax是针对“最差劲路径”,也就是说,如果该“最差劲路径”得到好成绩,那些不是最差劲的路径的成绩当然比“最差劲路径”好。

create_clock :创建时钟约束

create_clock -period 20.000 -name sys_clk [get_ports sys_clk] 含义:创建一个时钟周期20ns的时钟,时钟名字为sys_clk。

set_clock_uncertainty:设置时钟不确定性

set_clock_uncertainty -from clk0 -to clk0 0.500
注意:uncertainty=时钟偏斜(skew)+抖动(jitter)
含义:是设计时钟clk0 全部时钟间路径的裕量需严格地设置在500ps,以使设计的
建立和保持抗噪声能力更强。

一、基准时钟(base clock)和生成时钟(generate clock)

这里以前面做过的千兆以太网 HDMI 项目时钟树为例:
在这里插入图片描述
基准时钟为 sclkin,其余通过 PLL 的生成的时钟是生成时钟(generate clk)。

Vivado 约束基准时钟和生成时钟规则:

  • 如果基准时钟输入给 PLL,由于在 PLL 配置界面设置了基准时钟频率等信息,所以不需要额外再次约束基准时钟。在约束信息里会自动添加基准时钟约束,并且自动会把生成时钟也会添加约束。
  • 如果基准时钟并没有送入 PLL 直接通过分频或者不分频的方式给内部模块使用就需要添加基准时钟约束和生成时钟约束。

二、基准时钟的约束

1.完成综合(run implementation)

2.进行基准时钟约束(edit timing constrains)

在这里插入图片描述
① 在creat clock选项下添加基准时钟(rx_clki),并进行具体参数设置
在这里插入图片描述
② 查看时钟添加情况
在这里插入图片描述
具体信息如下:
在这里插入图片描述
③ 保存本次设置,并自动更新到xdc文件中
在这里插入图片描述
在这里插入图片描述
约束了基准时钟之后,关于这个时钟的时序分析结果就有了。

三、查看时序约束的结果

① 关闭当前时序信息
在这里插入图片描述
② 点击report timing,并设置打印时序报告参数
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
设置 option 中的观察时序路径条数和每个路径打印多少条信息,然后点击 OK 完成打印
在这里插入图片描述
③ 报告信息如下(没有出现红色说明都是时序满足建立时间要求的)
在这里插入图片描述

四、生成时钟约束

在这里插入图片描述
① 在create generated clock选项下添加生成时钟(源时钟:clk_out3目标时钟:tx_clk),并进行具体参数设置
在这里插入图片描述
在这里插入图片描述
② 查看时钟添加情况并保存(此步骤和生成时钟步骤一样)
在这里插入图片描述

五、虚拟时钟约束

本次案例并没有用到,一般会在系统同步中使用(该技术目前被淘汰了,了解即可)

什么是虚拟时钟?
答:就是在 fpga 内部不存在的时钟,这个时钟主要来辅助做一些分析,比如系统同步时晶振这个时钟给源端的时钟;

创建虚拟时钟的方法很简单,就是创建一个时钟但是不实际指向一个 fpga 内部或者 IO 上的对象。

①在 create clock 中添加一个虚拟时钟(vir_clk1)
在这里插入图片描述
② 查看时钟添加情况并保存(此步骤和生成时钟步骤一样)

打印信息如下:
在这里插入图片描述

六、时序约束前后的时序报告:

时序约束前:
在这里插入图片描述
时序约束后:
在这里插入图片描述

本文章已经生成可运行项目
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值