代码编织梦想

一、写在前面

一个数字芯片工程师核心竞争力是什么?不同的工程师可能给出不同的答复,有些人可能提到硬件描述语言,有些人可能会提到对于特定算法和协议的理解,有些人或许会提到对于软硬件的结合划分,作者想说,这些说法,其实对也不对,硬件描述语言,翻来覆去无非是always和assign这几个语句的反复使用,而一些基础的协议算法深究起来其实也并不复杂,于作者而言,在常规的技能以外,有两项额外的技能颇为重要,其中之一便为sdc/STA的分析能力,它的重要之处在于作为桥梁建立了前端和后端的连接,虽然对于DE工程师而言,初版交付的sdc往往不甚准确,也没有办法通过这份sdc生成一份无误的timing report,但sdc的内容体现却是完完整整的将时序约束从行为级的描述映射到了gate level这样一个真实的电路层次上面。
写此专栏,一为学习记录,二为交流分享,以犒粉丝读者。

1.1 快速导航链接·

静态时序分析简明教程(一)绪论
静态时序分析简明教程(二)基础知识:建立保持时间,违例修复,时序分析路径
静态时序分析简明教程(三)备战秋招,如何看懂一个陌生的timing report
静态时序分析简明教程(四)时钟常规约束
静态时序分析简明教程(五)时钟其他特性
静态时序分析简明教程(六)端口延迟
静态时序分析简明教程(七)完整端口约束
静态时序分析简明教程(八)虚假路径
静态时序分析简明教程(九)多周期路径
静态时序分析简明教程(十)组合电路路径
静态时序分析简明教程(十一)模式分析与约束管理
静态时序分析简明教程(十二)浅议tcl语言

二、建立时间

2.1 什么是建立时间

建立时间是在时钟信号有效沿到达之前,输入信号需要保持稳定的时间,假如不满足建立时间的要求,就可能产生亚稳态,这种现象被称作建立时间违例
在这里插入图片描述

2.2 建立时间违例的修复

在这里插入图片描述
在考虑建立时间违例的极限情况,我们需要保证数据到达的时间,至少比时钟边沿到达的时间早一个setup time,而前一个寄存器的采样,又比后一个寄存器的采样早一个周期,因此我们可以列出式子如下

tclk-q + tlogic+tsetup<=tskew+T

其中tclk-q是数据从前一个寄存器的clk到q的时间,tlogic是寄存器间的组合逻辑,tskew是前后寄存器时钟边沿到达的时间差,T是时钟周期,移项

tsetup <= tskew + T - tlogic - tclk-q

因此,解决建立时钟违例的方法,就是使等式的右边尽可能的大一些。
方法在于,比如增加tskew,clock通路上插入buffer减少寄存器之间的组合逻辑降低时钟频率以增加T,更换DFF器件以降低tclk-q等。

2.3 最大分析

建立时间的检查可以确保移动最慢的数据也能及时到达并满足建立的标准,因此,它又被称为最大分析(max analysis)。由于建立检查考虑了最晚到达的数据,所以也被称为晚期分析(late analysis)

三、保持时间

3.1 什么是保持时间

保持时间是在时钟信号有效沿到达之后,输入信号需要保持稳定的时间,假如不满足保持时间的要求,也有可能产生亚稳态,这种现象被称作保持时间违例
在这里插入图片描述

3.2 保持时间违例的修复

在考虑保持时间违例的极限情况,我们需要保证数据改变的时间时钟沿到来的时间,至少晚一个holdtime。数据改变所需的时间,对于前一个寄存器而言,是指第二个时钟边沿到来时的数据移动的时间,对于第二个寄存器而言,也是指第二个时钟边沿到来的时间,因此我们可以列出式子如下:
在这里插入图片描述

tclk-q + tlogic>=tskew+thold

其中tclk-q是数据从前一个寄存器的clk到q的时间,tlogic是寄存器间的组合逻辑,tskew是前后寄存器时钟边沿到达的时间差,移项,为了解决违例,我们的目标是使右边的值尽可能大。

thold <= tclk-q+tlogic-tskew

我们可以增加tclk-q的值,换一些更慢的DFF,也可以增加tlogic的时间,这就是我们在本专栏绪论中所说的未必一定要减少组合逻辑delay的原因,当然,减少skew也可以解决holdtime violation的问题。

但是,修hold time violation比修setup time violation更简单,因为只需要在组合逻辑路径上插入buffer,我们就可以很迅速的解决hold time violation问题。

3.3 最小分析

保持时间的检查可以确保即使是移动最快的数据也不应该干扰其他数据,同时期望数据保持稳定。因此,数据路径计算最小延迟,被称为最小分析(min analysis)由于保持检查考虑了最早到达的数据,所以也称其为早期分析(early analysis)

四、时序分析路径

STA分析能够进行的基础,是任何的同步电路,时序路径都可以进行拆分,拆分成几类,统一进行建立时间、保持时间的检查,根据约束,来判断是否有违例发生
每一条需要分析的路径,都有其自身起点终点,因为我们在讨论建立时间保持时间的过程中,判断主要发生在:时钟沿到来的时间和数据到来的时间,因此不难区分出STA可能的起点和终点

起点:原始输入|寄存器时钟输入
终点:原始输出|寄存器数据输入

不管分析什么样的电路,STA的路径都可以根据上面的起点终点进行拆分,如下列表所示,这四条时序路径就是所有STA分析时需要检测的路径。

Path输入输出
1原始输入寄存器数据输入
2寄存器时钟输入寄存器数据输入
3寄存器时钟输入原始输出
4原始输入原始输出

在这里插入图片描述

五、裕度(slack)

裕度是指:满足电路最低建立时间保持时间以外的额外的冗余量,因此:我们通常情况下希望,首先,电路是不能有违例的,其次,冗余量越大越好

5.1 建立slack

建立slack = 数据建立要求 - 最后一个到达的信号

5.2 保持slack

保持slack = 最早到达的信号 - 数据稳定的要求

六、总结

STA的核心就是对电路,尤其是寄存器进行建立时间和保持时间的分析,计算分析路径的裕度,因此我们在基础知识的介绍中,也是就此方面介绍有关setup time/hold time/violation repair/slack等内容,其实抛开STA/SDC外,这些知识在面试笔试中也是属于经常见到的常见考点,需要读者们重点掌握,而在基础知识外,下一节,我们会拿出真实的timing report,来看一看报告上面能读出什么有价值的信息

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_43698385/article/details/127143943

数电基础:时序逻辑电路的时序分析_风中少年01的博客-爱代码爱编程

目录 1.组合逻辑延迟 2.时钟输出延迟Tco 3.同步系统中时钟频率 3.1 建立时间与保持时间都满足 3.2 建立/保持时间不满足 (1) Tcomb太大导致建立时间不满足 (2) 器件的固有保持时间增大(老化)使得保持时间违例  4. 时钟偏斜及其影响  4.1时钟偏斜的物理意义  4.2 时钟偏斜对时序的影响 (1) 对于未引

从静态时序分析和时序路径约束引出对时序违例的优化方法-爱代码爱编程

分为三个部分 1、静态时序分析和 2、基本时序路径约束 3、时序违例的优化方法 一、静态时序分析基础 建立时间,保持时间 为了确保寄存器在时钟沿稳定采集数据,那么必须要满足寄存器的建立,保持时间要求。 建立时间要求:在寄存器有效时钟沿之前至少Tsetup时间,数据必须到达且稳定。如下图所示。 保持时间要求:在数据采集有效时钟沿之后,数据必须维持最短T

Hold Time违例,该如何解决-爱代码爱编程

首先,我们要知道的是,Hold Time违例,是因为时钟绕的太远,到达时间太晚。而且综合之后给出的时序报告都是估计值,因此综合之后可以不考虑Hold Time,只考虑Setup Time;即便此时Hold Time违例,我们也不需要去理会。在Place Design之后再去看Hold Time,如果此时Hold Time的违例比较小(比如-0.05ns),

时序违例的原因及其解决办法-爱代码爱编程

有关数据传输模型以及建立时间和保持时间的知识请参考下面两篇文章: 数据传输模型Verilog 建立时间和保持时间一、时序违例的原因 时序违例的主要原因是建立时间和保持时间不满足要求,那么什么情况下会出现建立时间和保持时间不满足要求呢? 建立时间不满足要求通常是因为组合逻辑处理时间太长! 保持时间不满足要求通常是因为组合逻辑处理时间太短! 建立时间

静态时序分析-建立时间和保持时间违例分析-爱代码爱编程

文章目录 单一分析模式1.建立时间分析2.保持时间分析 单一分析模式 时序分析模式分别为:单一分析模式(single mode)、最好-最坏分析模式(BC_WC mode)、全芯片变换分析模式(OCV mode),这里仅分析单一模式,其他模式类似只是最快数据路径和最慢路径选择不同。 更多知识参考:详解建立时间和保持时间时序违例解决方法 1

静态时序分析-时序违例解决方法-爱代码爱编程

文章目录 时序优化1.优化建立时间和时序设计规则1.1 改变单元位置1.2 改变单元的大小1.3 插入缓冲单元1.4删除缓冲单元1.5 重分配负载1.6 时钟有用偏斜2.优化保持时间 更多知识参考:详解建立时间和保持时间 时序优化 解决时序收敛的问题也是静态时序分析中的主要任务。静态时序分析中可以通过自动和手动两种方式完成物理上和时序上的优

建立时间保持时间不满足要求怎么办_yang_521yang的博客-爱代码爱编程

转载解决建立时间与保持时间不满足的问题_小小verifier的博客-CSDN博客_建立时间和保持时间违例怎么解决 基本概念 建立时间:即setup time,时钟上升沿之前数据要保持稳定的时间。   保持时间:即hold time,时钟上升沿之后数据要保持稳定的时间。 裕量:即Time Slack,如果数据到来的时间点早于建立时间要求的时间点

时序违例的解决方法_fpga硅农的博客-爱代码爱编程

时序违例可以分为两种情况,分别为建立时间违例和保持时间违例 建立时间违例 降低频率 时钟频率定的太高,导致Tcycle太小,使得不满足建立时间要求。当然最简单的就是降低时钟频率,但是一般一个电路架构定下来的时候为了满足速度与吞吐率的要求,频率一般不允许有太大的改动。 提升工艺 那就是工艺定的实在不合适,基本cell延时很大,可以换更先进的工艺。

【基础知识】~ 建立时间/保持时间_建立时间和保持时间-爱代码爱编程

定义 建立时间 Tsu:触发器在时钟上升沿到来之前,其数据输入端的数据必须保持不变的时间。 建立时间决定了该触发器之间的组合逻辑的最大延迟。 保持时间 Th:触发器在时钟上升沿到来之后,其数据输入端的数据必须保持不变的时间