实例1:同频同相时钟的多周期约束 同一时钟域(同频同相)或两个相对波形一致的不同时钟的多周期约束方式基本事一致的。 但是若多周期约束的对象是两个时钟,那么这两个时钟之间所有的数据路径都会被覆盖到。 (1)约束1:Setup = 2/Hold 相应移动 对于source reg 和 dst source都是每两个时钟周期使能一次的时序路径(data0_re
可见,此时的建立路径和保持路径即不太紧又不太松,可不进行多周期约束。 综上,对于同周期不同相位的两时钟分析,必须要考虑相移方向和相移量。对于负相移,也不是绝对的不用添加约束,如果负相移量太大,实际上就可视为正相移,同样需要添加约束。所以视情况而定。 3、从慢时钟到快时钟 假设捕获时钟为发送时钟频率的3...
约束中仅仅对setup设置了约束,但setup和hold的关系都会改变,设置多周期约束前setup边沿和hold边沿在源时钟和目的时钟的关系如下图。 设置多周期约束后,setup边沿和hold边沿在目的时钟中前移一个周期 但触发器data0_reg中数据的hold边沿实际并未改变,因此,需要hold的关系通过多周期约束回到初始的边沿对比。 set_multicyc...
约束中仅仅对setup设置了约束,但setup和hold的关系都会改变,设置多周期约束前setup边沿和hold边沿在源时钟和目的时钟的关系如下图。 设置多周期约束后,setup边沿和hold边沿在目的时钟中前移一个周期 但触发器data0_reg中数据的hold边沿实际并未改变,因此,需要hold的关系通过多周期约束回到初始的边沿对比。 set_multicyc...
对Vivado多周期路径约束的诠释 保持时间检查。 如果是多周期,如下图所示,此时两个寄存器之间尽管使用同一个时钟但因为使能信号的作用,使得两者数据率变为时钟频率的一半,意味着发起沿和捕获沿相隔2个时钟周期。 此时新的建立时间检查如下...频率为原始时钟频率的一半的时钟,保持时间检查应该如下图中的蓝色实线所示。
相同时钟域的多周期约束比较简单, 一般出现的情况,当系统中存在CE信号时,这时候根据CE信号的频率设置相应的周期数,而不是按照默认的1个时钟周期使得约束过紧。 图5-5中的BEFORE为当不加周期约束的时候捕获沿在4ns处,但是此时根据CE信号可知,系统不会再4ns处进行捕获,而是在8ns处进行捕获,所以可以将setup的分析...
一、什么是多周期路径约束? 不管是quartus中还是在Vivado中,默认的建立时间和保持时间的检查都是单周期的,如图1所示,也就是说如果A时刻发送,B时刻捕获,这两者之间相差一个时钟周期,也就是很多文献所说的current launch和current latch,但是某些情况下,这两者之间并不一定只是一个时钟周期,比如加上一个捕获使能信号,...
多周期路径,我们一般按照以下4个步骤来约束: 带有使能的数据 首先来看带有使能的数据,在本工程中的Tming Report中,也提示了同一个时钟域之间的几个路径建立时间不满足要求 其实这几个路径都是带有使能的路径,使能的周期为2倍的时钟周期,本来就应该在2个时钟周期内去判断时序收敛。因此,我们...
多周期约束语法: set_multicycle_path < num_cycles > [-setup|-hold] [-start|-end] [-from < startpoints >] [-to < endpoints >] [-through < pins|cells|nets >] 单时钟域下,数据经过N个周期从起点寄存器到达终点,约束如下: set_multicycle_path N -setup -from [get_pins data0_reg/C] -...
在我实际涉及的项目中,基本没有遇到多周期路径约束的情况,所以之前关注的不多,为了巩固基本知识,借此梳理这个约束。 1. 目的 目的就是说什么时候需要用到多周期约束? Vivado、TimeQuest等时序引擎默认是按照单周期关系分析数据关系的,即数据在发起沿发送,在捕获被捕获,发起沿和捕获沿相差一个周期。