时序分析与约束
文章平均质量分 57
单纯的逻辑设计之外,还应该学习一下时序分析和约束的相关知识!!!
耐心的小黑
七月份就上班了,比较忙!
展开
-
不同相频关系时钟的跨时钟域问题
本文摘自:硬件架构的艺术 57-63页如果多个时钟都起源于同一时钟,并且它们的相位和频率关系是已知的,那么这些时钟可以看成是跨同步时钟域的时钟。按照相位和频率的关系,可以将这些时钟分成以下类型:同频零相位差时钟同频恒定相位差时钟非同频可变相位差时钟-整数倍时钟-有理数倍时钟假定两个时钟之间的相位和时钟抖动相同,并假定它们之间的路径已经按同样的时钟延迟和偏移参数进行了平衡。除此之外,还假设这两个时钟起始处的相位差为零,而且触发器的“时钟到Q端”的延时也为零。1 同频零相位差时钟在此种情原创 2022-01-21 21:58:03 · 4916 阅读 · 0 评论 -
动态和静态时序模拟的优缺点
一、动态时序模拟动态时序模拟是在验证功能的同时验证时序,需要输入向量作为激励。随着规模增大,所需要的向量数量以指数增长,验证所需时间占到整个设计周期的50%,且这种方法难以保证足够的覆盖率。动态时序模拟的优点是比较精确,而且同静态时序模拟相比较,它适用于更多的设计类型。但是它也存在着比较明显的缺点:首先是分析的速度比较慢;其次是它需要使用输入矢量,这使得它在分析的过程中有可能会遗漏一些关键路径,因为输入矢量未必是对所有相关的路径都敏感的。二、静态时序模拟静态时序分析技术是一种穷尽分原创 2021-12-10 20:20:15 · 2966 阅读 · 0 评论 -
时序违例的原因及其解决办法
有关数据传输模型的知识请参考之前的文章:数据传输模型。一、时序违例的原因时序违例的主要原因是建立时间和保持时间不满足要求,那么什么情况下会出现建立时间和保持时间不满足要求呢?建立时间不满足要求通常是因为组合逻辑处理时间太长!保持时间不满足要求通常是因为组合逻辑处理时间太短!建立时间和保持时间都不满足往往出现在异步时钟域中!二、时序违例的解决办法解决建立时间不满足的方法有如下∶加强约束,重新进行综合,对违规的路径进行进一步的优化,但是一般效果可能不是很明显降低时钟的频率,但是原创 2021-12-21 20:04:39 · 13795 阅读 · 1 评论 -
时钟抖动(Jitter)和时钟偏斜(Skew)
在进行时序分析时,经常会遇到两个比较容易混淆的概念,那就是时钟抖动(Clock Jitter)和时钟偏移(Clock Skew)。下面就解释下两者的区别:一、Jitter由于晶振本身稳定性,电源以及温度变化等原因造成了时钟频率的变化,指的是时钟周期的变化。也即相对于理想时钟沿产生的不随时间积累的、时而超前、时而滞后的偏移。它指两个时钟周期之间存在的差值,这个误差是在时钟发生器内部产生的,和晶振或者PLL内部电路有关,布线对其没有影响。由于跟晶振本身的工艺有关,所以在设计中无法避免它能带来的影响,通产只原创 2021-12-10 11:35:43 · 4560 阅读 · 0 评论 -
设置伪路径
1、什么是伪路径?为什么要去除伪路径?伪路径就是存在,但是不起作用的路径,因此没有必要对它进行时序分析。移除无效的时序路径;就可以跳过路径优化,可以节省时间和资源。2、设置伪路径的命令3、路径指定方式举例set_false_path -from CLK1,这条命令意味着以下路径将被设置为伪路径:路径源于由CLK1驱动的所有时序元件;路径源于被CLK1约束的输入端口。4、伪路径的几种类型上图中的两个多路选择器,控制端由同一控制信号驱动,既然控制信号一致,原创 2021-03-13 21:05:35 · 1815 阅读 · 0 评论 -
多周期路径约束
一、什么时候需要用到多周期约束?Vivado、TimeQuest等时序引擎默认是按照单周期关系分析数据关系的,即数据在发起沿发送,在捕获被捕获,发起沿和捕获沿相差一个周期。但是很多情况是,数据路径逻辑较为复杂,导致延时较大,使得数据无法在一个时钟周期内稳定下来, 或者数据可以在一个时钟周期内稳定下来,但是在数据发送几个周期之后才使用;在这些情况中,设计者的意图都是使数据的有效期从发起沿为起始直至数个周期之后的捕获沿,这样的意图无法被时序分析工具猜度出来,必须由设计者在时序约束中指明;否则时序分析工具会按转载 2021-03-13 20:34:31 · 6671 阅读 · 2 评论 -
虚拟时钟(Virtual Clock)
关于为何需要设置虚拟时钟,可以参考下面这篇文章:在接口时序约束中为什么设置虚拟时钟(virtual clock)?1、用于输入延迟和输出延迟的时钟2、使用虚拟时钟的原因总结一下就是,如果不设置虚拟时钟,那么在设置输入延迟和输出延迟的时候,参考时钟都是同一个时钟;但是该时钟在输入路径和输出路径中所处的情况并不一定是相同的,比如时钟频率不同或者latency不同(分别对应下面的两个example)。那么这个时候就应该分别考虑各自的实际情况来选择设置输入输出延迟的参考时钟,显然此时共用一个时钟是不行原创 2021-03-13 19:51:06 · 10973 阅读 · 1 评论 -
输入延时(Input Delay)与输出延时(Output Delay)
一、设置输入延时(Input Delay)1、不同的路径需要使用不同的约束2、输入延时的定义由下图可以看出Input Delay是以上游芯片的时钟发送沿为参考,上游的输出数据到达FPGA的外部输入端口之间的延迟。输入延迟(input delay)包括Tco和Trace Delay(板间延迟),其中Trace delay又叫Board delay。3、完整的输入静态时序路径4、输入静态时序路径分析报告可以看出它主要把时序路径分为三部分,然后分别计算各部分的延时,最后计算出裕量slack,根原创 2021-03-13 19:00:49 · 30843 阅读 · 8 评论 -
创建基本的时钟周期约束
1、Organizing Your ConstraintsXilinx建议将时序约束和物理约束分别存放在不同的XDC文件中!2、Clock Description3、Primary Clock 主时钟4、Generated Clock 生成时钟生成时钟分为两类:(1)用户自定义的时钟 (2)自动生成时钟(1)对于自动生成的时钟是指由CMB生成的时钟,其中CMB可以是MMCM、PLL、BUFR,一旦创建主时钟周期约束,vivado会自动据此推断生成时钟周期而无需人工干预;(2)对转载 2021-03-12 14:28:42 · 836 阅读 · 0 评论 -
数据传输模型(建立时间与保持时间)
1、数据发起时间沿和捕获时间沿数据的发起沿和数据的捕获沿相差一个CLK。2、4种类型的时序路径(1)输入端口到FPGA内部的第一级触发器;(2)FPGA内部寄存器之间的路径;(3)FPGA内部末级触发器到输出端口的路径;(4)输入端口到输出端口的路径;3、Data Arrival Time: 数据到达时间4、Clock Arrival Time: 目的寄存器时钟到达时间5、Data Required Time — Set up:建立时间的数据需求时间:6、Data Requir原创 2021-03-11 14:10:24 · 4056 阅读 · 2 评论