我是靠谱客的博主 稳重玫瑰,最近开发中收集的这篇文章主要介绍静态时序分析笔记-第二章:STA概念(下),觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

静态时序分析-第二章:STA概念(下)

1.波形的压摆(slew)

压摆率(slew rate)的定义是电压转换速率。在静态时序分析中,通常会根据电平转换的快慢来衡量上升波形或下降波形。

压摆(slew)通常是根据电平转换时间(transition time)来定义的,而转换时间是指信号在两个特定电平之间转换所需要的时间。注意,转换时间实际上就是压摆率的倒数,因此转换时间越大,压摆率就越低,反之亦然。

一般会使用电压的百分比来测量转换时间的长短。例如:

在这里插入图片描述

上升沿和下降沿的阈值点是电压的30%和70%,即转换时间计算如下图所示

在这里插入图片描述

数字后端设计流程中,在.lib文件中定义关于transition time的阈值电压比例

2.信号偏斜(skew)

偏斜(skew)是指两个或多个信号(数据或者时钟)之间的时序之差。

例如,如果一个时钟树(clock tree)有500个终点,并且有50ps的时钟偏斜skew,则意味着最长时钟路径和最短时钟路径之间的延迟差为50ps。

下图所示是一个时钟树,时钟树的起点通常是定义时钟的节点,时钟树的终点通常是同步元件(例如触发器)的时钟引脚(CK端)。

时钟延迟(clock latency)是指从时钟源到终点所花费的总时间,时钟偏斜(clock skew)是指从时钟源到达不同终点的时间差。

在这里插入图片描述

在门级网表综合阶段用STA分析时使用的是理想化的时钟模型,此模型会假设时钟源有无限的驱动力,可以到达无数个时钟终点;并且会默认时钟树中所有的逻辑单元的延时都为0(zero delay)。所以此时使用STA分析时,更多的是关注数据路径,即数字逻辑单元。

在综合阶段,理想的时钟树是0延时的,即clock latency = 0,使用如下命令人为指定latency

set_clock_latency 2.2 [get_clocks BZCLK]
#上述命令规定了时钟树BZCLK的上升沿延迟(rise latency)和下降沿延迟(fall latency)均为2.2ns。注意,如果两个延时值不同,可以使用选项-rise和-fall来分别指定延时值。

理想时钟的偏斜skew也为0,即时钟树源点到终点的时间都一样(实际时钟树做不到)。为了模拟真实时钟,也需要人为使用set_clock_uncertainty命令设置skew参数

set_clock_uncertainty 0.250 -setup [get_clocks BZCLK] 
set_clock_uncertainty 0.100 -hold [get_clocks BZCLK]

此时的uncertainty的值包括

uncertainty = 时钟周期抖动 clock jitter + 时钟偏斜 skew + 设计余量 design margin

知识点:时钟周期抖动 clock jitter

所谓抖动(jitter),就是指两个时钟周期之间存在的差值,这个误差是在时钟发生器内部产生的,和晶振或者PLL内部电路有关,布线对其没有影响。除此之外,还有一种由于周期内信号的占空比发生变化而引起的抖动,称之为半周期抖动。总的来说,jitter可以认为在时钟信号本身在传输过程中的一些偶然和不定的变化之总和。

时钟抖动是发生在时钟源处的不确定因素导致的误差,在CTS/CCOPT阶段后,实际的时钟树已经生成,jitter和skew的值已经存在,所以uncertainty的值就只剩设计余量了;在signoff阶段使用的uncertainty值需要根据工艺厂商提供的文件设定

总结:

  • CTS之前:uncertainty = jitter + skew + margin
  • CTS之后:uncertainty = margin

另外:hold检查的是同一时钟沿,不需要考虑时钟抖动

3.时序弧

每个逻辑单元的输入引脚到输出引脚都有一条时序弧,所以每个单元有多条时序弧。 每个时序弧都具有特定的时序敏感(timing sense),即输出如何针对输入的不同跳变类型而变化。

如果输入引脚上的上升沿跳变导致输出引脚电平上升(或不变),而输入引脚上的下降沿跳变导致输出引脚电平下降(或不变),则时序弧为正单边(positive unate)类型。

如果输入引脚上的上升沿跳变导致输出引脚电平下降(或不变),而输入引脚上的下降沿跳变导致输出引脚电平上升(或不变),则时序弧为负单边(negative unate)类型。

在非单边(non-unate)时序弧中,仅仅从一个输入引脚的跳变方向是无法确定输出引脚电平将如何跳变的,还要取决于其他输入引脚的状态。

4.最小与最大时序路径

逻辑通过逻辑路径传播的总延迟称为路径延迟(path delay),包括了逻辑路径中经过各个逻辑单元(cell)和网络走线(net)的延迟。通常,逻辑想要传递到一个终点可能有不止一条逻辑路径可走,所经过的实际路径取决于逻辑路径上其他输入的状态。 如下图所示

在这里插入图片描述

从UFF1的Q端到UFF3的D端,有两条路径;其中延时最大的路径称为Max path,延时最小的路径称为Min path;通常也称最大路径为晚路径(late path),称最小路径为早路径(early path)。

从UFF1到UFF3这样的从触发器到触发器的路径时,其中UFF1触发器发起(launch)数据,UFF3触发器捕获(capture)数据。因此UFF1被称为发起触发器(launch flip-flop),由于UFF3捕获数据,因此UFF3被称为捕获触发器(capture flip-flop)。

5.时钟域

在同步逻辑设计中,周期性的时钟信号将计算出的新数据锁存到触发器中。新的输入数据基于的是前一个时钟周期的触发器值,因此锁存到的数据将被用于计算下一个时钟周期的数据。一个时钟通常驱动许多触发器,由同一时钟驱动的一组触发器称为其时钟域(clock domain)。在典型的设计中,可能有多个时钟域。例如,USBCLK驱动了200个触发器,而时钟MEMCLK驱动了1000个触发器,在下图中,我们称有两个时钟域

在这里插入图片描述

两个时钟域是相关的还是彼此独立的?

取决于是否存在一条从一个时钟域开始并在另一时钟域结束的数据路径,如果没有这样的路径,我们可以肯定地说这两个时钟域彼此独立,这意味着没有时序路径从一个时钟域开始而在另一时钟域结束。

若存在跨时钟域的数据路径,则必须确定这些路径是否为真实(real)路径。判断条件为数据是否被约束要在一个时钟周期之内通过同步器逻辑传播。 若有被约束则为真实路径,反之为伪(false)路径。可以使用set_false_path命令指定时钟域之间的伪路径,例如:

set_false_path -from [get_clocks USBCLK] -to [get_clocks MEMCLK]
6.工作条件

静态时序分析通常是在特定的工作条件(operating condition)下执行的,工作条件定义为工艺(process)、电压(voltage)和温度(temperature)的组合,简称PVT。逻辑单元延迟是根据.lib库文件查找得出

工艺(process): 半导体代工厂(foundry)为数字设计提供了3种加工工艺模型:慢速(slow)工艺模型,典型(typical)工艺模型和快速(fast)工艺模型 ;越快速,延时越小

电压 (voltage):逻辑单元工作电压;电压越大,延时越小

温度 (temperature):逻辑单元工作温度;通常情况下温度越高,延时越小,但是随着工艺越来越先进,沟道长度越来越小可能会出现温度翻转效应,即温度越低,延时越小

:逻辑单元工作电压;电压越大,延时越小

温度 (temperature):逻辑单元工作温度;通常情况下温度越高,延时越小,但是随着工艺越来越先进,沟道长度越来越小可能会出现温度翻转效应,即温度越低,延时越小

在这里插入图片描述

最后

以上就是稳重玫瑰为你收集整理的静态时序分析笔记-第二章:STA概念(下)的全部内容,希望文章能够帮你解决静态时序分析笔记-第二章:STA概念(下)所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(55)

评论列表共有 0 条评论

立即
投稿
返回
顶部