时钟周期约束的方法

时钟约束和物理约束一般分为2个文件一目了然。
约束的属性告诉我们约束使用在综合还是实现。时序约束一般在综合和实现都需要用到,物理约束一般应用于实现。

一、primary clock

primary clock来自端口或者gigabit传输器输出。
在这里插入图片描述
在这里插入图片描述

二、generated clock

生成时钟包括用户分频时钟和pll/MMCM/BUFR生成的时钟。其中后者生成的时钟无须约束,只需要约束输入即可。
在这里插入图片描述
在这里插入图片描述
注意自动生成的时钟名字一般就是输出net的名字,比如上图的cpuclk。
注意上图get_pins 指向的是mmcm的pin,而不是bufg的pin;同样get_nets也指的是mmcm相连的nets。

在这里插入图片描述
pll的时钟重新命名后,命名的是bufg的名字和输入时钟的命令,而不是mmcm相连的net的名字。

三、report_clocks的说明

在这里插入图片描述

四、时钟的重命名

时钟重命名的好处是:1.简化了vivado自动生成的时钟名字的繁琐,可以看到重新命名后相比较上一副图clk名字有clk_rx_clk_core变为clk_rx,clk_tx同理。2.如果我们在约束时,如果要引用这个时钟,直接写get_clocks clk_rx,不用想之前那么复杂写一串子路径get_clocks -of object [get_pins xxxx/xxx/xxxx]。

在这里插入图片描述

五、时钟的分组

时钟的分组:同步时钟、异步时钟、不可扩展时钟
在这里插入图片描述
clk0和clka是同步时钟;同理clk0和clkb是同步时钟。clka、clkb、clkc、clkd也是同步时钟。因为他们共享时钟源。

不可扩展的时钟
在这里插入图片描述
比如上图clk0的周期是6ns;clk1的周期是4ns。第一条红线表示的意思是从clk0的0时刻发送数据,在clk1 的4时刻接收数据,建立时间为4ns;第二天红线表示从clk0的6时刻发送数据到clk1的8时刻接收数据,建立时间是2ns。他们的公共最小周期是12ns,对于软件来说他们的建立时间就是这两种情况。但是对于时钟1周期是5.125ns,时钟2的周期是6.666ns,这两个时钟没有公用周期,建立时间无法可知,软件会进行1000个时钟周期分析,当分析后无法确定公共时钟周期,也就是无法确定发送沿和捕获沿的时钟关系,软件会按0.01ns做建立时间分析,显然不合理,所以在设计的时候要注意不要出现跨时钟域的情况。

异步时钟约束
在这里插入图片描述
两个来自不同的时钟源产生的时钟,要告诉软件是异步时钟。上图异步时钟组的名字可以忽略。
**默认情况下,vivado均会认为所有的时钟都是同步的。如果一个项目有多个锁相环,锁相环输入来自两个不同的晶振,两个锁相环输出的时钟是异步时钟,要告诉软件是异步时钟,vivado不进行分析时钟关系。**告诉软件的方法,通过2个命令,一个是set_clock_groups,一个是set_falus命令,前者是双向的,后者是单向的。
独立时钟组
在这里插入图片描述

  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值