门级静态时序分析(Static Timing Analysis)与PrimeTime使用

更新时间:2023-11-14 22:10:01 阅读量: 教育文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

第六章 门级静态时序分析与PrimeTime

使用

一、PrimeTime简介

PrimeTime是Synopsys的一个单点的全芯片、门级静态时序分析器。它能分析大规模、同步、数字ASICS的时序。PrimeTime工作在设计的门级层次,并且和Synopsys其它工具整合得很紧密。

基本特点和功能: 时序检查方面:

建立和保持时序的检查(Setup and hold checks)

重新覆盖和去除检查(Recovery and removal checks) 时钟脉冲宽度检查(Clock pulse width checks) 时钟门锁检查(Clock-gating checks) 设计检查方面: 没有时钟端的寄存器

没有时序约束的结束点(endpoint)

主从时钟分离(Master-slave clock separation) 有多哥时钟的寄存器

对层次敏感的时钟(Level-sensitive clocking)

组合电路的反馈环(Combinational feedback loops)

设计规则检查,包括最大电容(maximum capacitance)、最大传输时间(maximum transition)和最大扇出(maximum fanout)

PrimeTime 时序分析流程和方法: 在时序分析之前需要做的步骤: 1、 建立设计环境

- 建立搜索路径(search path)和链接路径(link path) - 读入设计和库 - 链接顶层设计

- 建立运作条件、连线负载模型、端口负载、驱动和传输时间 2、 说明时序声明(约束)

- 定义时钟周期、波形、不确定性(uncertainty)和滞后时间(latency) - 说明输入、输出端口的延时

3、 说明时序例外情况(timing exceptions)

- 多周期路径(multicycle paths) - 不合法路径(false paths) - 说明最大和最小延时、路径分割(path segmentation)和失效弧(disabled arcs) 4、 进行分析和生成报告

- 检查时序 - 生成约束报告 - 生成路径时序报告

二、静态时序分析中路径延时的计算

静态时序分析工具一般将电路网表看成一个拓扑图,图中的节点(node)代表电路中的引脚(pin)。节点之间的边(edge)表示时序弧(timing arc),有两种:

# 连线延时(net delay)---驱动引脚(drive pin)和扇出(fanout)之间的连接

# 单元延时(cell delay)---输入引脚(input pin)和输出引脚(output pin)之间的连接

延时计算就是计算每条时序弧的值,可能是单元延时也可能是连线延时。通过累计这些延时可以计算时序路径(timing delay)的上升延时(rise delay)或下降延时(fall delay)。

正函数时序弧(positive unate timing arc):

将上升延时和上升延时相加,下降延时和下降延时相加。例如一个AND门单元延时和连线延时。

负函数时序弧(negative unate timing arc):

将新得到的上升延时和原来的下降延时相加,而新得到的下降延时和原来的上升延时相加。例如NAND门。

非函数时序弧(non-unate timing arc):

将原来的延时和新得到的最差情况延时(worst-case delay)相加。非函数时序弧出现在不能从输入量的变化预测输出端逻辑值变化的地方,例如XOR门。

下图展示了一个电路逻辑网络是如何转化成一张时序图的:

非线性延时模型(nonlinear delay model):

非线性模型是供应商以查表(lookup table)形式在工艺库中提供的延时信息,它和时序分析计算有着紧密的联系。

总的延时包含了单元延时和连线延时:

Dtotal = Dcell + Dc Dc

连线延时。它有两种计算方法,一是通过operating_conditions中的tree_type属性和wire_load模型;二是在标准延时方程中读入一个SDF文件。

Dcell

门自身的延时,典型地是取从输入引脚电压变化到50%到输出引脚电压变化到50%的之间的时间。

CMOS非线性模型有两种计算Dcell的方法,在一个工艺库中可以混用。一是用插值法在库所提供的单元延时表里查找;二是通过查传输(propagation)表和过渡(transition)表得到传输延时和过渡延时,再计算单元延时:Dcell = Dpropagation + Dtransition 。

Dpropagation

典型衡量Dpropagation的方法是从输入引脚电压变化了50%到门输出电压即将开始转变(比方说变化了10%)之间的时间。这样,如果Dtransition值定义为输出电压从10%变化到50%之间的时间的话,它就要被加到Dpropagation上去。这样结果就是输入变化了50%到输出变化了50%之间的时间。

Dtransition

输出引脚转变状态所需要的时间,有时也指输出斜坡(ramp)时间。它是输出引脚两个参考电压之间变化的时间,可以是20%到80%或10%到50%。它是通过插值查表法得到的。

如果提供的是单元延时表,那么总延时就是:Dtotal = Dcell + Dc ;

如果提供的是传输延时表,那么总延时就是:Dtotal = Dpropagation + Dtransition + Dc 。

库单元延时时序弧的种类有: 上升传输(Rise propagation) 单元上升(Cell rise)

下降传输(Fall propagation) 单元下降(Cell fall)

上升过渡(Rise transition) 下降过渡(Fall transition)

注:每个条延时弧可以有传输延时表或单元延时表,但不能都有;同时必须有过渡延时表。

每一个延时表可以通过以下六个变量中的一个到三个查找: input_net_transition output_net_length

total_output_net_capacitance

related_out_total_output_net_capacitance output_net_pin_cap output_net_wire_cap

延时计算举例

看下图的下降传输(fall propagation)表:一个两维的表,由输出端总电容和输入过渡时间查找。输出端总电容由网络n1处的引脚电容、连线电容所决定。输入过渡时间由前面的U0门所决定。因为U1中的时序弧是负函数性质的,所以U0的上升过渡延时表就可以用来确定U1的输入过渡延时。假设Ctotal是110.1,输入过渡延时是0.34,用这两个值在下降传输延时表中查找。

图中的黑点表示表中定义的点。四个点和Z轴的高度值组成了供插值查找的领域,即图中的阴影部分。

下降过渡延时由下降过渡延时表得到,这个例子中它是基于输出端总电容的一维表。前面提到了输出端总电容是110.1,通过简单的线性插值查表就可以得到延时。

然后将传输延时和下降的过渡延时相加即得到了通过U1单元的下降传输延时时间。 如果库中为U1定义的不是传输延时表,而是单元延时表,那么过渡延时时间将不计入单元延时之内。

环境缩放比例(Environmental Scaling) 当计算总延时说,时序分析器会分别考虑影响Dtotal的因素。每一种因素都有它自己的全局参数来反映它对总延时的影响。在通常情况下这些因素包括工艺(process)、温度(temperature)和电压(voltage)。

下面的因子可以分别应用到延时方程中去:

△v:库中定义的电压变化的值 Kv:电压对总延时影响的因子 △t:库中定义的温度变化的值 Kt:温度对总延时影响的因子 △p:库中定义的工艺变化的值 Kp:工艺对总延时影响的因子

本文来源:https://www.bwwdw.com/article/ofmv.html

Top