静态时序分析笔记-第二章: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):逻辑单元工作温度;通常情况下温度越高,延时越小,但是随着工艺越来越先进,沟道长度越来越小可能会出现温度翻转效应,即温度越低,延时越小

在这里插入图片描述

  • 0
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
STAStatic Timing Analysis)静态时序分析是设计验证中非常重要的一部分,它能够保证设计的时序满足要求,并且对于设计中存在的时序问题进行诊断和修复。PT(PrimeTime)是业界较为常用的 STA 工具之一。下面是一个 PT 做 STA 静态时序分析的教程。 1. 确定时序约束 时序约束文件是进行静态时序分析的基础,它描述了设计中的时序要求。时序约束应该包括时钟频率、时钟时序、输入输出延迟等信息。在 PT 中,时序约束文件格式为 SDC(Synopsys Design Constraints)。 2. 进行时钟分析 时钟分析是静态时序分析的第一步,它能够检查时钟网络中存在的时序问题。在 PT 中,我们可以使用 clock report 命令生成时钟分析报告。时钟分析报告能够帮助我们确定时钟路径、时钟树等信息。 3. 进行时序分析 在进行时序分析之前,我们需要将设计进行综合,并产生时序数据库(.db 文件)。时序分析主要包括前端分析和后端分析,前端分析主要是对时序路径进行分析,后端分析主要是对时序路径进行优化。 在 PT 中,我们可以使用 timing report 命令生成时序分析报告,报告中包括了时序路径、时序偏差等信息。我们可以根据报告中的信息进行时序优化,例如添加时钟缓冲、调整时钟路径等操作。 4. 进行时序约束修复 在进行时序分析时,PT 会给出一些违反时序约束的警告和错误信息。我们需要根据这些信息进行时序约束修复,以保证设计满足时序要求。在 PT 中,我们可以使用 constraint report 命令生成时序约束修复报告,报告中包括了需要修复的时序约束信息。 5. 进行时序分析验证 在进行时序分析之后,我们需要进行时序分析验证,以保证时序分析结果的准确性。在 PT 中,我们可以使用 report checks 命令生成时序分析验证报告,报告中包括了时序分析结果的正确性信息。 以上就是 PT 做 STA 静态时序分析的教程,希望能够对你有所帮助。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

obsidian_DK

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值