静态时序分析 第二章 STA概念

本章介绍了CMOS技术的基础知识以及进行STA所涉及的术语。


2.1 CMOS逻辑设计(CMOS Logic Design)

2.1.1 基本MOS结构(Basic MOS Structure)

   MOS(Metal Oxide Semiconductor,金属氧化物半导体)晶体管(NMOS,N-channel Metal Oxide SemiconductorPMOS,P-channel Metal Oxide Semiconductor)的物理实现如图2-1所示。源极(Source)和漏极(Drain)之间的距离就是MOS晶体管的长度。用来制造MOS晶体管的最小长度通常就是CMOS技术工艺的最小特征尺寸(Feature Size)。举例来说,0.25um工艺允许MOS晶体管有0.25μm或者更大的沟道长度(Channel Length)。通过缩小沟道(Channel)的尺寸,晶体管的尺寸会变小,这样在一定区域内就可以封装更多的晶体管。正如我们将在本章中看到的,更小的尺寸也会让设计在更高的速度上运行。
在这里插入图片描述


2.1.2 CMOS逻辑门( CMOS Logic Gate)

   CMOS 逻辑门 (Logie Gate) 是用NMOS和PMOS 晶体管搭建的 。图2-2是一个 CMOS反相器(Inverter)的示例。CMOS反相器的两种稳定状态取决于输入的状态。当输入A是低电平(Vss或者逻辑0),NMOS晶体管是关断(Off)状态,PMOS晶体管是导通(On)状态,这导致输出Z被上拉至Vdd,也就是逻辑1。当输入A是高电平(Vdd或逻辑1),NMOS晶体管是导通状态,PMOS晶体管是关断状态,这导致输出Z被下拉到Vss,也就是逻辑0。在上述两种状态的任一种里,CMOS反相器都是稳定的,不会从输入A或者电源Vdd吸取任何电流。(取决于CMOS工艺的特性,即使是在稳定状态,也有很小的漏电流被吸取。)
在这里插入图片描述


   CMOS反相器的特性可以扩展到任何CMOS逻辑门。在CMOS逻辑门中,输出节点被上拉结构(由PMOS晶体管构成)连接到Vdd,被下拉结构(由NMOS晶体管构成)连接到Vss。举例来说,图2-3所示为一个两输入的CMOS与非门(Nand Gate)。在本例中,上拉结构由2个并联的PMOS晶体管构成,下拉结构由2个串联的NMOS晶体管构成。
在这里插入图片描述


   对于任何CMOS逻辑门,上拉和下拉结构是互补的。对于逻辑0或者逻辑1的输人,如果上拉状态是导通的,那下拉状态是关闭的;类似地,如果上拉状态是关闭的,那下拉状态就是导通的。下拉和上拉结构是被CMOS门实现的逻辑函数控制的。例如,在CMOS与非门中,控制下拉结构的函数是“A与B”,也就是说,当A和B都是逻辑1,下拉结构导通。类似地,控制上拉结构的函数是“不是A或者不是B”,也就是说,当A或B至少有1个是逻辑0,上拉结构导通。些特性确保了基于控制上拉结构的函数,输出节点的逻辑会被上拉到Vdd。因为下拉结构是被互补函数控制,当上拉结构的函数结果为0,输出节点会处于逻辑0。

   对于逻辑0或者逻辑1的输入,在稳定状态下,CMOS逻辑门不会从输人或者电源吸取任何电流,因为上拉结构和下拉结构不会同时处于导通状态(只有在转换时,上拉结构和下拉结构才会同时处于开启状态)。CMOS逻辑的另1个重要方面是输入仅对上一级构成电容性负载(Capacitive Load)

   CMOS逻辑是反相门,意味着单独的输入翻转(Switch,上升或下降)只能造成输出向相反的方向翻转,也就是说,输出不能和翻转的输入向同一方向翻转。但是,CMOS逻辑门可以串联起来实现更复杂的功能——反相或者不反相。

2.1.3 标准单元(Standard Cells)

   芯片中的大多数复杂功能通常是由基本的构建模块(Building Blocks)来实现的。这些基本的模块实现了简单的逻辑功能,比如与(And)、或(Or)、与非(Nand)、或非(Nor)、与或非(And-Or--Invert)、或与非(Or-And-Invert),以及触发器(Fip-Flop)。这些基本的模块是预先设计好的,被称为标准单元(Standard Cell)。标准单元的功能和时序已经预先特征化(Pre-Characterized),供设计师使用。设计师就可以使用标准单元作为基本的构建模块来实现需要的功能。

   2.1.2小节中描述的CMOS逻辑门的关键特性是适用于所有CMOS数字设计的。当输人处于稳定的逻辑状态,所有的数字CMOS单元都不会从电源吸取电流(漏电流除外)。所以,大部分的功耗是和设计的活动相关,是由设计中的CMOS单元输入端的充放电(Charging and Discharging)引起的。

   什么是逻辑1或者逻辑0?在CMOS单元里,VIHminVILmax定义了范围:任何高于VIHmin的电压都被认为是逻辑1,任何低于VILmax的电压都被认为是逻辑0。如图2-4所示,0.13μm工艺、1.2V Vdd电源的CMOS反相器单元,典型的VILmax值为0.465V,VIHmin的值为0.625V。VIHminVILmax的值是从标准单元的直流传输特性(DC Transfer Characteristics)中得来的。直流传输特性会在6.2.3节中有详细的描述。


在这里插入图片描述

   想了解更多关于CMOS技术的信息,请阅读本书最后的相关参考文献。

2.2 CMOS单元建模( Modeling of CMOS Cells)

   如果一个标准单元的输出引脚驱动多个扇出单元,该输出引脚的总电容,就等于所有它驱动的单元的输入引脚电容,加上组成该线(Net)的所有线段(Wire Segment)的电容再加上驱动单元的输出电容。注意,在CMOS单元中,单元的输入只表现为电容性负载。
   图2-5展示了一个例子:1个单元G1驱动了3个其他单元一G2、G3和G4。Cs1、Cs2、Cs3和Cs4是组成这条线的所有线段的电容值。所以:

  • Cout是单元的输出引脚电容。
  • Cin是单元的输入引脚电容。
    在这里插入图片描述

   这个总电容就是单元G1翻转的时候需要充放电的电容,所以总电容的值影响单元G1的时序。

   从时序的角度看,我们需要对CMOS单元建模,来帮助我们分析经过该单元的时序。每个输入引脚都指定了输入引脚电容。每个输出引脚也可以指定电容,但大部分CMOS逻辑单元都没有包括输出引脚的电容。

   当输出为逻辑1,输出级的上拉结构导通,它提供了一条从输出到Vd的路径。类似地,当输出为逻辑0,输出级的下拉结构提供了一条从输出到Vss的路径。当CMOS单元的状态翻转(Switch State)时,翻转的速度是由输出线(Output Net)电容的充放电速度决定的。输出线电容(见图2-5)的充放电是通过上拉结构和下拉结构分别进行的。注意,上拉结构和下拉结构中的通道对输出的充放电路径构成电阻。充放电路径的电阻是决定CMOS单元速度的主要因素。上拉电阻的倒数被称为单元的输出高电平驱动(Output High Drive)。输出上拉结构越大,上拉电阻越小,单元的输出高电平驱动就越大。更大的输出结构也意味着这个单元有更大的面积。输出上拉结构越小,单元的面积越小,单元的输出高电平驱动越小。同样的概念也可以应用到下拉结构上,它决定了下拉路径的电阻值以及输出低电平驱动(Output Low Drive)。通常,单元被设计成有相似的上拉和下拉驱动能力(同样大,或同样小)。
在这里插入图片描述


   输出驱动决定了可以驱动的最大电容负载(Maximum Capacitive Load)。而最大电容负载又决定了最大扇出(Fan-out)的数量,也就是说,决定了可以驱动多少个单元。更高的输出驱动对应着更低的输出上拉和下拉电阻,这让单元在输出引脚可以充放电更大的负载。


   图2-6所示为CMOS单元的等效抽象模型(Equivalent Abstract Model)。这个模型是为了抽象出单元的时序行为,所以仅对输人级和输出级建模。这个模型不能表达单元的内在延迟或电学行为。

在这里插入图片描述


   CpinA是单元输入A的输入引脚电容。RdhRdl是单元输出驱动电阻,这2个电阻会根据单元驱动的负载来确定输出引脚Z的上升和下降时间。这个驱动电阻也决定了单元的最大扇出限制。


   图2-7中的线和图2-5是一样的,不同的是图2-7是用等效模型来表示单元。

在这里插入图片描述


   在上面的表达式中,Rout是Rdh或者Rdl中的1个。Rdh是上拉输出电阻,Rdl是下拉输出驱动电阻。
在这里插入图片描述

2.3 电平翻转波形(Switching Waveform)

   如图2-8a所示,当闭合开关SW0,电压施加到RC网络,输出变为逻辑1。假设当闭合SW0时,电压尚处在0V,输出端电压转换(Voltage Transition)由以下公式表示:

   该上升电压波形如图2-8b所示。乘积(Rdh*Cload)被称为RC时间常数(RC Time Constant),通常该常数和输出的转换时间(Transition Time)有关。

   当断开SW0并闭合SW1,输出从逻辑1变为逻辑0,输出电压转换如图2-8c所示。输出电容通过处于导通状态的SW1放电。这种情况下,输出电压转换由以下公式表示:
在这里插入图片描述


在这里插入图片描述


   在一个CMOS单元中,因为PMOS上拉晶体管和NMOS下拉晶体管会在极短的时间内同时导通,所以输出的充放电波形看起来不会像图2-8中RC的充放电波形那样。图2-9说明了在输出从逻辑1翻转到逻辑0的不同阶段,一个CMOS反相单元内的电流路径(Current Path)。图2-9说明了当上拉和下拉结构同时导通时的电流流动。随后,图2-9b说明了上拉结构关断后的电流流动。当输出到达最终状态后,由于电容Cload完全放电,此时没有电流流动。
在这里插入图片描述


   图2-10a说明了CMOS单元输出上的典型波形。注意转换波形(Transition Waveforms)是如何逐渐向Vss轨(Vss Rail)和Vdd轨(Vdd Rail)弯曲的,且波形的线性部分处于波形的中间位置。

   在本书中,我们将用图2-10b中所示的简化图来描述一些波形。它显示了波形具有转换时间,也就是从1个逻辑状态转换到另1个逻辑状态所需要的时间。图2-10c显示了同样的波形但是转换时间为0,也就是说,这是理想波形。在本书中,我们将交替使用这两种波形来解释概念,但是现实中,每个波形都有如图2-10a所示的真实的沿特性。

在这里插入图片描述

2.4 传播延迟(Propagation Delay)

   考虑一个CMOS反相单元以及它的输入和输出波形。单元的传播延迟(Propagation Delay)是用翻转波形上的一些测量点来定义的。比如用以下4个变量来定义的点:
在这里插入图片描述


   这些变量是一个指令集的一部分,该指令集是用来描述单元库的(该指令集在Liberty(详情见参考文献[LIB])中有描述)这些阈值参数是由Vdd或者电源的百分比定义的。对大多数标准单元库来说,通常50%的阈值被用来测量延迟。上升沿(Rising Edge)是指从逻辑0到逻辑1的转换。下降沿(Falling Edge)是指从逻辑1到逻辑0的转换。

   以图2-11中的反相器单元和引脚的波形为例。传播延迟用以下值表示:

  • 1)输出下降沿延迟(Tf)
  • 2)输出上升沿延迟(Tr)

   通常这2个值是不同的。图2-11说明了这2个传播延迟是如何测量的。

在这里插入图片描述


   如果我们只考虑理想波形,传播延迟就只是简单的2个沿(Edge)之间的延迟,如图2-12所示。

在这里插入图片描述


2.5 波形的转换率(Slew of a Waveform)

日常使用中,slew和transition常被当作同义词混用,并不区分。

在这里插入图片描述


   转换率(Slew Rate)被定义为改变的速率。在STA中,上升或下降波形是用电平转换的快慢来测量的。转换率通常是由转换时间(Transition Time)来衡量的,转换时间就是信号在2个指定电平之间转换所需要的时间。注意,转换时间实际是转换率的倒数——转换时间越大,转换率越慢,反之亦然。图2-10说明了CMOS单元输出上的典型波形。这个波形在末段是渐进的,很难判断转换时间精确的开始和结束点。因此,用指定的阈值水平来定义转换时间。例如,转换率阈值设置可以是:
在这里插入图片描述


   这些阀值被指定为Vdd的百分比。这些阀值的定义表明,下降转换率就是下降沿到达70%Vdd和30%Vdd的时间的差值。类似地,上升沿的阈值定义表明,上升转换率就是上升沿到达30%Vdd和70%Vdd的时间的差值。图2-13用图形来说明。
在这里插入图片描述


   图2-14展示了另一个例子。下降沿的转换率用20-80(20%-80%)来定义,上升沿的转换率用10-90(10%~90%)来定义。下面是这个例子的具体设定。
在这里插入图片描述

在这里插入图片描述


2.6 信号之间的偏移(Skew between Signals)

   偏移(Skew)是2个或多个信号的时序之差,信号可以是数据也可以是时钟。比如,如果1个时钟树(Clock Tree)有500个终点,有50ps的偏移,这意味着最长的时钟路径和最短的时钟路径的延迟差为50s。图2-15展示了1个时钟树的例子。时钟树的起点通常是定义时钟的节点时钟树的终点通常是同步元件(比如触发器)的时钟引脚

  • 时钟延迟(Clock Latency)是信号从时钟源(Clock Source)到终点的时间。
  • 时钟偏移(Clock Skew)是时钟树到达每个终点的时间差。

在这里插入图片描述


   一个理想的时钟树是假设时钟源拥有无限的驱动能力,也就是说时钟可以驱动无限多个终点且没有延迟。另外,时钟树包含的任何单元都假定为0延迟(Zero Delay)。在逻辑设计的早期,STA通常是假设理想时钟树来进行的,这是为了专注分析数据路径(Data Path)在理想时钟树中,默认时钟偏移为0ps。可以用约束set_clock_latency来明确指定时钟树的延迟(Latency)。下面的例子指定了时钟树的延迟:


在这里插入图片描述


   时钟树的时钟偏移(Clock Skew)也可以用约束set_clock._uncertainty来明确设定具体的值:
在这里插入图片描述


   set_clock_uncertainty指定了1个时间窗口,时钟的沿可能在这个窗口内的任意时间出现。这个时钟沿时序的不确定性(Uncertainty)是为了考虑到几个因素,比如时钟周期的抖动(Clock Period Jitter),以及时序验证需要的额外余量(Margin)。每一个真实的时钟源都有一定量的抖动(Jitter), 所谓抖动就是1个时间窗口,时钟沿可能出现在窗口内的任意时间。时钟周期抖动是由时钟发生器的类型决定的。现实中,没有理想的时钟,也就是说所有的时钟都有一定量的抖动,而且在定义时钟的不确定性时应包含抖动。

   在时钟树实现(Implemented)之前,时钟的不确定性也必须包含实现后可预期的偏移(Skew)

   我们可以为建立时间检查(Setup Check)保持时间检查(Hold Check)分别设定不同的时钟不确定性。保持时间检查的不确定性不需要包括时钟抖动,所以通常保持时间检查的不确定性(Uncertainty)比较小。

   图2-16的例子展示了1个具有250ps不确定性的时钟。图2-16b展示了逻辑传播到下个触发器的可用时间是如何减去不确定性的。这相当于验证设计可以运行在更高的频率上。

在这里插入图片描述

   如图2-16所指定,set_clock_uncertainty也可以用来建模任何额外的余量(Margin)。比如,一个设计师可能会用50ps的时序余量作为设计中的额外悲观余量。这部分余量可以被加到set_clock._uncertainty命令中。通常,在时钟树被实现(Implemented)前,set_clock_uncertainty指定的值通常要包括时钟抖动(Jitter)时钟偏移(Skew)、以及额外的悲观值
在这里插入图片描述
   我们之后将会看到set_clock_uncertainty是如何影响建立时间和保持时间的检查。最好把时钟不确定性考虑成最终裕量(Slack)计算时的偏离(Offset)


2.7 时序弧和单调性(Timing Arcs and Unateness)

每1个单元都有多个时序弧(Timing Arc)。举例来说,1个组合逻辑单元,比如与门(And)或门(Or)与非门(Nand)或非门(Nor)加法器(Adder)单元,**每个输人到每个输出都有时序弧。**时序单元比如触发器,有从时钟到输出的时序弧,有数据引脚(Data Pin)对时钟的时序约束(Timing Constraint)。每个时序弧都有时序极性(Timing Sense),也就是说,对应输入上不同类型的转换(Transition),输出是如何变化的。如果输入的上升转换引起输出的上升(或者不变),输人的下降转换引起输出的下降(或者不变),这都是正单调(Positive Unate)。比如,与门和或门的时序弧就是正单调,如图2-17a所示。

   如果输入的上升转换引起输出的下降转换(或者不变),输入的下降转换引起输出的上升转换(或者不变),这都是负单调(NegativeUnate)。比如,与非门和或非门的时序弧就是负单调,如图2-17b所示。

   如果输出的转换不能由输入转换的方向单独决定,也要取决于其他输入的状态,这就是非单调(Non-unate)时序弧。比如,异或门(XOR,Exclusive-Or)的时序弧就是非单调的(异或门(XOR)是正单调和负单调的,可为它指定依赖状态的时序弧。这在第3章中有描述),如图2-17c所示。单调性对时序是很重要的。它决定了电平沿(电平转换)是如何通过单元传播的,以及是如何出现在单元输出上的。

在这里插入图片描述


   单调性对时序是很重要的。它决定了电平沿(电平转换)是如何通过单元传播的,以及是如何出现在单元输出上的。


   可以利用时序弧的非单调性,比如使用异或门来翻转时钟的极性(Polarity),如图2-18所示。如果输入POLCTRL是逻辑0,单元UXOR0输出上的时钟DDRCLK输入时钟MEMCLK有一样的极性。如果POLCTRL是逻辑1,单元UXOR0输出上的时钟就有和输入时钟MEMCLK相反的极性。
在这里插入图片描述


2.8 最小和最大时序路径(Min and Max Timing Paths)

   逻辑传播通过逻辑路径的总时间被称为路径延迟(Path Delay)。这包括通过路径上各种逻辑单元(Cell)以及线(Net)的总延迟。通常情况下,逻辑可以通过几条不同的路径传播到终点。而实际路径取决于这条逻辑路径上其他输入的状态,如图2-19中的例子。因为到达终点有多条路径,可以得到到达终点的最大时序和最小时序。相应地,最大时序路径和最小时序路径被分别称为最大路径(Max Path)最小路径(Min Path)。2个端点的最大路径就是拥有最大延迟的路径(也就是最长路径)。类似地,最小路径就是拥有最小延迟的路径(也就是最短路径)。请注意,最长和最短指的是路径上的累计延退,而不是路径上的单元个数。

   图2-19展示了1条触发器间的数据路径。UFF1和UFF3之间的最大路径是经过UNAND0、UBUF2、UOR2以及UNAND6单元,而最小路径是经过UOR4和UNAND6单元注意在这个例子里,最大和最小路径的终点都是触发器UFF3的D引脚(Pin)。
在这里插入图片描述


   最大路径通常也叫最晚路径(Late Path),最小路径通常也叫最早路径(Early Path)。当考虑1条从UFF1到UFF3这样的触发器到触发器的路径,1个触发器发出数据,另1个触发器接收数据。这种情况下,因为UFF1发出数据,UFF1就被称为发射触发器(Launch Flip-lop)。UFF3捕获数据,UFF3被称为捕获触发器(Capture Flip-flop)。**注意,“发射”和“捕获”这样的术语不是固定的,是由触发器到触发器的路径决定的。**比如,如果1条路径中任何触发器捕获了UFF3发射的数据,UFF3就变成了发射触发器


2.9 时钟域(Clock Domains)

   在同步逻辑设计中,1个周期时钟信号(Periodic Clock Signal)将计算出的新数据锁存(Latch)到寄存器中。这个新数据是基于上1个时钟周期(Clock Cycle)的触发器值。该锁存的数据被用来计算下1个时钟周期的数据。

   1个时钟通常驱动(Feed)许多触发器。**由同一个时钟驱动的一组触发器被称为该时钟的时钟域(Clock Domain)。**在1个典型的设计中,通常有多个时钟域。比如,200个触发器可以被时钟USBCLK驱动,1000个触发器可以被时钟MEMCLK驱动。图2-20描述了寄存器和它们的时钟。在这个例子中,我们称这里有2个时钟域。
在这里插入图片描述


   1个有趣的问题是,这2个时钟域是相互独立的还是有关联的。**答案取决于是否有数据路径从1个时钟域开始,到另1个时钟域结束。如果没有这样的路径,我们可以肯定地说这2个时钟域是相互独立的。**这意味着,没有时序路径是从1个时钟域开始,到另1个时钟域结束。


在这里插入图片描述
   如果确实有数据路径跨时钟域(如图2-21所示),必须去确定这条路径是真还是假。例如,真实的路径就是1个有2倍速时钟的触发器驱动1个有1倍速时钟的触发器。伪路径(False Path)就是设计师将时钟同步器(Clock Synchronizer)逻辑明确地放在2个时钟域之间。在这种情况下,即使有从1个时钟域到另1个时钟域的路径,这也不是真实的时序路径,因为没有约束数据要在1个时钟周期内通过同步器逻辑传播。 所以这样的路径被称为伪路径,不是真实路径,因为时钟同步器确保了数据可以正确地从1个时钟域传递到另1个时钟域。可以使用set_false_path来指定时钟域之间的伪路径,比如:
在这里插入图片描述
   即使没有在图2-21中描述,跨时钟域也可以是双向的,从USBCLK时钟域到MEMCLK时钟域,从MEMCLK时钟域到USBCLK时钟域。在STA中需要理解并处理好这两种情况。

   为什么要讨论跨时钟域的路径呢?通常一个设计有大量的时钟,可能有海量的跨时钟域路径。判断哪些跨时钟域路径是真实的,哪些不是,是时序验证重要的一部分。这确保了设计师专注于验证真实的时序路径。

   图2-22展示了时钟域的另一个例子。1个多路复用器(Multiplexer)选择时钟源——根据设计的工作模式来选择是哪个时钟。只有1个时钟域,但是有2个时钟,而且这2个时钟是互斥的,同一时间只有1个时钟处于激活(Active)状态 所以,在这个例子里,要注意USBCLK时钟域和USBCLKx2时钟域之间永远不可能存在路径。(假设多路复用器是静态的,并且在设计中的其他部分不存在这种路径)。

在这里插入图片描述


2.10 工作条件( Operating Conditions)

   STA通常是在特定的工作条件(Operating Condition)下进行的(设计中的单元有不同的电压,STA可以分析这种设计。我们之后会介绍这种情况是如何处理的。STA也可以用统计的方式进行,这在第10章中会介绍)。工作条件是由工艺(Process)电压(Voltage)温度(Temperature) (PVT)共同定义的。单元延迟和互连延迟是在特定的工作条件下计算的。

   半导体代工厂(Semiconductor Foundry)会给数字设计师提供3种制造工艺模型(Manufacturing Process Model):慢速(Slow)工艺模型,典型(Typical)工艺模型,以及快速(Fast)工艺模型。慢速和快速工艺模型代表了代工厂制造工艺的极端工艺角(Corner) 。对于鲁棒(Robust)设计应该在极端制造工艺角,以及温度和电压都极端的环境下进行验证 。图2-23a说明了单元延迟是如何跟随工艺角变化的,图2-23b说明了单元延迟是如何跟随电压变化的,图2-23c说明了单元延迟是如何跟随温度变化的。所以,决定STA用什么工作条件是非常重要的。

在这里插入图片描述


   选用什么工作条件进行STA,也要受限于这些工作条件有哪些可用的单元库。3种标准的工作条件是:

  • 1.WCS(Wost-Case Slow):工艺是慢(Slow),电压是最低(比如额定电压减去10%),温度是最高(比如125℃) 。对于使用低功耗(Low Power)供电的纳米级设计,可能会有另1个WCS工艺角,它具有最慢工艺、最低电压以及最低温度。低温下的延迟并不总是比高温下的延迟小。这是因为对于纳米级工艺,器件的阈值电压(V)和供电电压的差值变小了。 在这种情况下,对于低供电电压,轻负载的单元在低温下的延迟要比高温下的大。对于高Vt(更高阈值,更大延迟)单元,或者标准Vt:(常规阈值,更低延迟)单元,情况更是如此。延迟在低温下的这种异常行为叫温度反转(Temperature Inversion),见图2-23c)
  • 2.TYP(Typical) :工艺是典型(Typical),电压是额定(比如1.2V), 温度是标称(比如25℃)
  • 3.BCF(Best-Case Fast) :工艺是快(Fast),电压是最高(比如额定电压1.2V加10%) , 温度是最低(比如-40℃) ,。

   进行功耗分析(Power Analysis)的环境条件通常和STA的条件不一样。对于功耗分析,工作条件可以是:

  • 1.ML(Maximal Leakage,最大漏电流)工艺是快(Fast),电压也是最高(比如1.2V加10%),温度是最高(比如125℃),。该工作条件有最大的漏电功耗(Leakage Power)。对大多数设计来说,该工作条件也有最大的动态功耗(Active Power)
  • 2.TL(Typical Leakage,典型漏电流)工艺是典型(Typical),电压是额定电压(比如1.2V),温度是最高(比如125℃)。该工作条件下大部分设计具有典型漏电流,因为正常工作时的发热,芯片温度会变高。

   STA是基于读入和链接的库(Library)来进行的。可以使用set_operating_conditions来明确指定设计的工作条件。

在这里插入图片描述
   各种工作条件都有相应的单元库,选择哪些工作条件进行分析取决于STA读入了哪些单元库。

  • 5
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 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
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值