首页 > 其他分享 >时序分析:基础知识整理(一)

时序分析:基础知识整理(一)

时间:2024-03-22 15:56:32浏览次数:30  
标签:约束 路径 基础知识 寄存器 整理 设计 时序 时钟

好的时序是设计出来的,不是约束出来的 。

搬运自:

孤独的单刀;

大佬后面的是付费项目,所以涉及付费项目的我不会公开,

本博客纯方便自己看做笔记。

时钟抖动 Clock Jitter

理想的时钟信号是完美的方波,但是实际的方波是存在一些时钟抖动的。

那么什么是时钟抖动呢? 

时钟抖动, Clock Jitter,是相对于理想时钟沿,实际时钟存在不随时间积累的、时而超前、时而滞后的偏移称为时钟抖动(时钟脉冲宽度发生暂时变化,也就是 T cycle【时钟周期】或大或小)。

有抖动的时钟信号如下图:

时钟偏差 Clock Skew

时钟偏差,Clock Skew,是指同一个时钟域内的时钟信号到达数字电路各寄存器所用时间的差异。 时序分析的起点一般是源寄存器(reg1),终点一般是目标寄存器(reg2)。

时钟信号也会走线,那么和其它信号的传输一样,就会有延时。下图中,时钟信号从时钟源传输到源寄存器的延时我们定义为 Tc2s,传输到目标寄存器的延时我们定义为 Tc2d。如下图: 

 

时钟网络延时 Tskew 就是 Tc2d 与 Tc2s 之差,即 Tskew=Tc2d - Tc2s。如下图: 

第一个方波是时钟源,第二个方波为时钟到达 REG1 时的波形,第三个方波为时钟到达 REG2 时的波形,从图上可以看出 Tskew 是时钟到达两个寄存器时的相位偏差。 

时钟不确定性 Clock Uncertainty

Clock Uncertainty ,即时钟的不确定性。时钟的不确定性主要是由 Clock Skew 和 Jitter 构成。 

因此 Clock Uncertainty = Clock Skew + Clock Jitter。大家搞明白什么是 Skew和 Jitter,那么也就明白什么是 Clock Uncertainty。

一般标准的时序约束文件中,都需要加 Clock Uncertainty 的约束,

这个约束是为了让时序分析更贴近真实的电路设计。

对于 Uncertainty 的设置,每种工艺,或者每种设计来说,都不尽相同。

同步电路和异步电路

简单来讲,FPGA 设计中寄存器全部使用一个时钟的设计是同步设计电路,FPGA 设计寄存器使用多个时钟的设计是异步设计电路。

我们说的所有时序分析都是建立在同步电路的基础上的,异步电路不能做时序分析(或者说只能做伪路径约束)。

异步电路由于使用的时钟不同,导致上游寄存器的输出数据进入下游寄存器的时间是任意的,这非常可能导致不满足下游寄存器的建立时间要求和保持时间要求,从而导致亚稳态。

同样的原因,由于两者时钟不同,所以也无法建立对应的模型来分析异步电路是否能满足时序要求。

建立时间(Setup Time)和保持时间(Hold Time)

建立时间和保持时间是寄存器的固定属性,为了使寄存器稳定地采样到当前D端的数据,D端数据必须满足建立时间和保持时间的要求:

  • 建立时间:Setup Time,缩写是 Tsu,即在时钟上升沿之前数据必须稳定的最短时间
  • 保持时间:Hold Time,缩写是 Th,即在时钟上升沿之后数据必须稳定的最短时间

通俗来讲:建立时间和保持时间就是在寄存器采样窗口中输入数据必须保持不变,以免寄存器无法稳定采样。

也就是说,在我寄存器的采样窗口之前你输入数据就必须要保持稳定,即输入数据不能来的太晚(建立时间);

同样的,你寄存器的输入数据也必须在我寄存器的采样窗口结束后才变化,在此之前必须保持问题,即输入数据不能走的太早(保持时间)。

建立时间和保持时间的示意图如下:

建立时间和保持时间的概念非常重要,一定要记住。

因为,我们所谓的时序分析(静态时序分析STA),简单来讲就是使用特定的模型来判断当前设计中的所有寄存器的建立时间要求和保持时间要求能否被满足。

什么是时序分析?STA和DTA。

时序分析主要有两种办法:

  • 静态时序分析:(static timing analysis, STA),是遍历电路存在的所有时序路径,根据给定工作条件(PVT)下的时序库.lib 文件计算信号在这些路径上的传播延时,检查信号的建立和保持时间是否满足约束要求, 根据最大路径延时和最小路径延时找出违背时序约束的错误
  • 动态时序分析:(dynamic timing analysis, DTA),通常是所有的输入信号都会给一个不同时刻的激励,在 testbech(.sp 或者.v)中设置一段仿真时间,最后对仿真结果进行时序和功能分析。 这里的仿真可以是门级或者晶体管级,包括 spice 格式和 RTL 格式的网表。

STA不需要输入向量就能穷尽所有的路径,运行速度快,占用内存小。

不仅可以对芯片设计进行全面的时序功能检查,还可以利用时序分析的结果来优化设计。

DTA的优点是结果精确,并且适用于更多的设计类型;

缺点是速度慢,并且可能会遗漏一些关键路径。

一般来讲,我们提到的时序分析都是指静态时序分析STA。

什么是时序约束?

了解了时序分析后,其实时序约束也就好理解了。

简单来讲,时序约束就是你要告诉综合工具,你的标准是什么。

综合工具应该如何根据你的标准来布线,以满足所有寄存器的时序要求。

在FPGA设计中,一旦时钟频率上升,那么时钟周期就会减少。

不难想象频率越高,时钟周期越小,而建立时间和保持时间的要求不变,

那么对应的,满足建立时间和保持时间也会变难,因为留给信号到达的窗口变小了!

但是综合工具怎么知道你的设计要求是多少?那它又怎么去约束时钟呢?

所以我们开发者需要告诉综合工具,我们的约束标准是什么,综合工具才可以根据这个标准去布局布线,从而满足我们的时序要求。

假设信号需要从输入到输出在 FPGA 内部经过一些逻辑延时和路径延时。我们的系统要求这个信号在 FPGA 内部的延时不能超过 13ns(约束条件),

而开发工具在执行过程中找到了下图所示的一些可能的布局布线方式。

图中区域 1 的延迟是 5ns,区域 2 的延迟是 7ns,区域 3 的延迟是 5ns,区域 4 的延迟是 11ns。

那么,怎样的布局布线能够达到我们的要求呢?

仔细分析一番,发现所有路径的延时可能为

12ns(走路径 1)、16ns(走路径 3)、21ns(走路径 2 到路径 5)、17ns(走路径 2 到路径 4),

只有 1 条路径能够满足要求,布局布线工具就会选择满足要求的路径 1

这个地方我们系统要求这个信号在 FPGA 内部的延时不能超过 13ns,是有 1 条路径可以满足要求的,

那么如果系统要求这个信号在 FPGA 内部的延时不能超过 5ns,那么没有任何一条路径可以满足要求!

这个就说明这个 FPGA 器件速度等级比较慢,可以选择速度等级比较快的 FPGA 器件,当然也有可能是系统要求过于苛刻(过约束)。 

如果系统要求这个信号在 FPGA 内部的延时不能超过 18ns,那么是有 3 条路径可以满足要求的,

分别是走路径 1,走路径 3,走路径 2 到路径 4 这 3 条路径,这个说明如果系统要求松,那么布局布线工具可以选择就很多,这样对布局布线工具比较友好。 

时序分析的前提就是我们先提出要求,然后时序分析工具才会根据特定的时序模型进行分析,即有约束才会有分析。

如果我们不添加时序约束,那么时序分析工具就不会去分析时序和做时序收敛。

也就是说,只有在对设计添加了时序约束后,系统的时序问题才有可能暴露出来。

什么是时序收敛?

在我们给出时序约束的标准后,综合工具会自动进行时序分析,然后出具时序报告表。

如果我们的设计欠佳或者约束条件过高,导致综合工具无法实现满足我们要求的布局布线。

这种情况下,就可以说该设计是不满足时序要求的。

通过修改RTL设计(如减少扇出、重新布线优化、重定时、流水线切割等一系列方法)或其他方法,

来使综合工具能重新实现满足我们设计要求的布局布线的这一设计过程,就被称为时序收敛Timing closure。

同样的,当所有的时序设计要求被满足后,也可以说这一设计是时序收敛的。

简单点讲,时序收敛就是你改作业的过程,把不及格的作业通过改、抄等手段给改到合格的过程就是时序收敛。

好的时序是设计出来的,不是约束出来的 。

好的约束必须以好的设计为前提。

没有好的设计,在约束上下再大的功夫也是没有意义的。

不过,通过正确的约束也可以检查设计的优劣,通过时序分析报告可以检查出设计上时序考虑不周的地方,从而加以修改。

通过多次“ 分析—修改—分析” 的迭代也可以达到完善设计的目标。

所以说,设计是约束的根本,约束是设计的保证,二者是相辅相成的。

 

标签:约束,路径,基础知识,寄存器,整理,设计,时序,时钟
From: https://www.cnblogs.com/VerweileDoch/p/18089669

相关文章

  • Maven国内镜像地址配置(整理了最新可用的源)
    在maven根目录下的settings.xml文件修改maven配置,首先是本地仓库配置其次在换国内镜像源,这里给大家整理了最新可用的镜像源阿里<mirror><id>alimaven</id><name>aliyunmaven</name><url>http://maven.aliyun.com/nexus/content/groups/public/</url><......
  • 数据结构与算法基础知识
    数据结构与算法1算法的基本概念算法:是指一组有穷的指令集,是解题方案的准确而完整的描述。也不等于计算方法。算法的基本特征:确定性,算法中的每一步骤都必须有明确的定义,不允许有多义性;有穷性,算法必须能在有限的时间内做完,即能在执行有限个步骤后终止;可行性,算法原则上能够精......
  • JSP内置对象笔记整理
    JSP内置对象《JavaWeb开发从入门到实战》第四章内置对象:在JSP页面中不需要声明和实例化,可以直接在Java程序片和Java表达式部分使用的对象。分类·:与Input/Output有关的内置对象与Context有关的内置对象与Servlet有关的对象与Error有关的内置对象与Input/Output有关的......
  • GMAC和PHY基础知识
    参考资料:https://www.cnblogs.com/sammei/p/3933940.htmlhttps://gitcode.csdn.net/65e7d38e1a836825ed789828.htmlhttps://baijiahao.baidu.com/s?id=1752808344840024096&wfr=spider&for=pchttps://www.cnblogs.com/liangxiaofeng/p/3874866.html GMAC和PHY在ISO网络......
  • 腾讯云最新活动及优惠券领取入口整理汇总
    腾讯云作为国内领先的云计算服务提供商,一直以来都致力于为用户提供稳定、安全、高效的云服务。为了吸引用户上云,腾讯云经常推出各种优惠活动,并提供了丰富的优惠券领取渠道。本文将对腾讯云最新的活动及优惠券领取入口进行整理汇总,以便用户可以更加方便地获取优惠。腾讯云推出......
  • PHP 封装整理 insert语句
    废话不多说直接上代码publicfunctioninsert($table,$data,$keyName,$canRepeatAdd=true){$keyStr="";$paramStr="";$params=[];foreach($dataas$key=>$value){if(is_array......
  • C++面向对象整理(1)之初识类和对象
    C++面向对象整理(1)之初识类和对象注:整理一些突然学到的C++知识,随时mark一下例如:忘记的关键字用法,新关键字,新数据结构C++的类和对象C++面向对象整理(1)之初识类和对象一、类的定义1、类成员的访问权限2、类定义示例(1)类内定义(2)类外定义成员函数3、类对象(实例)的定义及......
  • JavaScript 系列教程 II JavaScript 基础知识
    ......
  • 待整理
    unitSystem单元下有这些函数在System单元里搜不到这些函数的具体定义,只可以这样智能提示看到;另外在System.SyncObjs有一个TInterlocked的密封类,其十多个类函数(classfunction)其实都是调用的System单元的原子操作函数,只是封装得更容易理解。{TInterlockedimplementsv......
  • Python就该这样学,纯小白速通Python!学习大纲整理,建议保存
    一、学习建议1、找到自己感兴趣的方向,并且结合市场需求进行选择Python的应用范围测试运维web人工智能大数据爬虫及数据分析办公自动化2、学习过程中一定要勤加练习,并且尝试去使用学习过的内容实现一些简答的功能遇到技术问题不要慌,解决问题的过程也是加速自己成长的途......