邸老师STA笔记(一)

这段时间学习IC设计,学到了STA静态时序分析,观看了邸老师的STA课程,感觉讲的很不错,顺便记了笔记,分享出来供大家交流学习。
课程中有关TCL的笔记我没写,主要是前段时间写了两篇详细介绍TCL语言的文章,所以只记了Synopsys TCL的相关笔记。详情请看:
EDA05–TCL脚本语言(一): link
EDA05–TCL脚本语言(二): link

首先交代一下前文:
至此我在前面已经介绍了Linux操作系统、TCL脚本语言、VCS仿真、DC逻辑综合,数字芯片前端的主要工作就完成了,接下来就是后端,后端包括PT、formality、ICC。这里再次回顾一下数字芯片设计的流程。因为到这里我对于数字设计流程有了更加深刻的认识。

一、回顾流程

数字设计流程如下图:
在这里插入图片描述
数字设计流程通俗来讲:
第一步:有一个实际问题需要解决(功能指标定义);
第二步:用高级语言(c、c++…)把解决问题思路描述出来,先验证解决问题的思路是正确的(架构设计);
第三步:把高级语言描述的思路转换为硬件描述语言Verilog等(详细设计);
第四步:验证(无延迟)硬件代码的功能正确(前仿真功能验证);
第五步:把硬件代码转化为门级网表(逻辑综合优化);
第六步:验证(有延迟)门级网表功能正确;
前端完成啦!!!
第七步:静态时序分析,接下来重点。

二、PT概述

2.1 概述

静态时序分析就是检查建立时间和保持时间
建立时间:数据再时钟上升沿到来之前,数据要稳定的时间。即数据要想传输必须先稳定不变,时钟才能采到正确的值。建立时间是发生在数据传输前,也就是寄存器D端接受数据数据前。
在这里插入图片描述
保持时间:数据在时钟上升沿之后,依然能保持稳定的时间。即数据接受后依然能保持一段时间,确保把数据传给下一级。保持时间是发生在数据接收后,也就是寄存器D端接收数据之后,要把数据给Q传递。
在这里插入图片描述
对于同步电路来讲,所有触发器必须满足建立时间和保持时间;而异步电路的设计指标是不一样的,所以静态时序分析的主要目标是同步电路。异步电路通常是要单独拿出来,做一些特殊的处理。现在的SCO电路很复杂,我们是以“全局异步、局部同步”来处理的。所以异步电路是在局部用静态时序分析研究建立时间和保持时间,在全局研究降低时钟传输的亚稳态概率。
在这里插入图片描述
上图可知,静态时序分析存在数字设计的流程,确保每一步的结果中,寄存器都能准确地采样和传输。其中物理实现是重中之重。

2.2 simulation 和STA区别

在这里插入图片描述
Simulation是用Testbench生成一系列的测试向量,所有的测试向量加起来要能覆盖到芯片的每一个功能点, 以保证芯片功能运行正确。
STA不关心功能,只关心触发器的建立保持时间是否满足要求,是否可以正确的采样,至于采样的数据是什么,它在完成什么功能STA是不关心的。
Simulation需要穷举而STA不需要,故时间花费差距很大。

三、TCL入门

Tcl用处:
在这里插入图片描述
在这里插入图片描述

四、Synopsys TCL

4.1 get_*

4.1.1 get_ports

查看是否有端口叫wclk。则语句:

dc_shell> get_ports wclk
{wclk}

若是没有则返回警告:

dc_shell> get_ports q
Warning: Can't find port 'q' in design 'fifo'. (UID-95)

通配符查找:

dc_shell-t>get_ports *
{rdata[7] rdata[6] rdata[5] rdata[4] rdata[3] rdata[2] rdata[1] rdata[0] wdata[7] wdata[6] wdata[5] wdata[4] wdata[3] wdata[2] wdata[1] wdata[0] wfull rempty wclk wrst wr_en rclk rrst rd_en}

4.1.2 get_cells

查看设计中有几个cells。则语句:

dc_shell> get_cells *
{i1 i2 i3 i4 i5 U1 U2 U3 U4 U5 U6 U7 U8 U9 U10 U11 U12 U13 U14 U15 U16 U17}

类似的还有其他名称,比如reference、pin ……

4.2 sizeof_collection [get_*]

4.2.1 sizeof_collection [all_clocks]

例如: 在逻辑综合阶段要统计设计中有几个时钟,则语句:sizeof_collection [all_clocks],返回时钟数。

dc_shell> sizeof_collection [all_clocks]
2

4.2.2 sizeof_collection [get_ports]

在逻辑综合阶段要统计设计中有几个ports,则语句:

dc_shell> sizeof_collection [get_ports]
24

4.3 get_attribute

dc_shell> get_attribute [get_cells -h i1] ref_name
fifomem

上句话的意思是,先用get_cells 把i1的cells取出来,再用get_attribute 把i1的reference的名字取出来。

4.4 owner_net

get_attribute [get_pins i5/rq2_wptr[2]] owner_net

此语句用来保存与之相连的net的名称。

4.5 get_attribute [get_ports wclk] direction

此语句用来保存端口相连的输入输出方向。

dc_shell> get_attribute [get_ports wclk] direction
in

4.6 -f

get_ports * -f "direction==in"
{wdata[7] wdata[6] wdata[5] wdata[4] wdata[3] wdata[2] wdata[1] wdata[0] wclk wrst wr_en rclk rrst rd_en}

dc_shell> get_cells * -f "ref_name==fifomem"
{i1}

4.7 -of

get_nets -of [get_ports wclk]
{wclk}

五、STA基本概念

5.1 PT概述

Prime Time是一个全芯片、门级静态时序分析工具,是当今大型芯片设计和分析流程的重要组成部分。Prime Time通过检查所有可能的时序违规路径来详尽地验证设计的时序性能,而不使用逻辑模拟或测试向量。PrimeTime非常适合Synopsys的物理综合流程,因为它使用许多与其他Synopsys工具(如Design Compiler)相同的库、数据库和命令。它还可以在其他设计流程中作为独立的静态定时分析器运行。
在这里插入图片描述
Prime Time在不同的阶段都能做时序分析,不同的是所对应的时序标注文件不同,有.sdc,.sdf等。

5.2时序弧

静态时序分析是基于timing arc数据的时序分析。
时序弧是用来描述两个节点延时信息的数据,是时序的最小路径片段,时序弧的信息分为连线延时和单元延时。
连线延时是单元输出端口和扇出网络负载之间的延时信息;单元延时是单元输入端口到输出端口的延时信息。因此一条完整路径的时序信息计算由连线延时和单元延时组成。
在这里插入图片描述
cell延迟包括两部分,分为Transition delay和Logic gate delay 。翻转延迟指的是信号在cell端口上由高到低或由低到高的延迟。
在这里插入图片描述
逻辑延迟指的是cell由输入端口到输出端口的延迟。
在这里插入图片描述

5.3 建立保持时间

建立时间:在时钟上升沿到来之前,数据必须稳定的时间,如下图所示理解为,FF2的D端采样时,clock path数据有效要比data path 数据有效到来的更早,而且是至少要早来Tsetuo的时间。
建立时间约束规定了数据路径相对于时钟路径上的最大延迟。

在这里插入图片描述
保持时间:在时钟上升沿到来之后,数据必须稳定的时间,如下图所示理解为,FF2的D采样后要把数据传给FF2的Q,下一个clock path的数据有效要比FF2的D到Q要慢,即要等FF2的D把数据传给Q之后,下一个clock path 再来,且至少要等Thode的时间。
保持时间约束规定了数据路径相对于时钟路径上的最小延迟。

在这里插入图片描述

5.4 时序路径

PrimeTime进行时序分析的第一步是将设计分解为一组组的时序路径。每个路径都有一个起点和一个终点。
时序路径的起始点可能是D触发器的时钟引脚(clock_pin),也可能是整个设计的输入端口(clock_port)。
时序路径的终止点可能是D触发器的输入D端(input_pin),也可能是整个设计的输出端口(output_port)。
时序路径一共有四种。
如下图:

Path1:input_port_A 	>	ff_input_pin_D;
Path2:clock_pin_ff 	>	ff_input_pin_D;
Path3:input_pin_ff 	>	output_port_Z;
Path4:input_port_A 	>	output_port_Z;

在这里插入图片描述

5.5 时钟域

数字电路全局异步,局部同步,在每一个时钟域下的电路为同步,使用DC、PT等EDA工具来开发。在不同时钟域下的电路路径不能用工具来开发,需要用TCL命令指示工具忽略这些异步路径。
在这里插入图片描述
在这里插入图片描述

5.6 工作环境

静态时序分析通常在特定的操作条件下进行,操作条件定义为(PVT)的组合。通常用最快(ff)的情况计算保持时间,最慢的(ss)情况计算建立时间。

六、STA标准单元库

6.1 库举例

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

6.2 非线性时序模型

首先考虑一个简单的反相器逻辑的时序弧。由于是反相器,一个输入端的上升(下降)跃迁导致输出端的下降(上升)跃迁。该单元的两种延迟特征是:
Tr : Output rise delay 输出上升延时;
Tf : Output fall delay 输出下降延时。

延迟是根据单元库中定义的阈值点来度量的,即一般为50% Vdd。
在这里插入图片描述
通过反相器单元的时序弧的延迟取决于两个因素:
1、输出负载(output load),即反相器输出引脚处的电容负载;
2、信号在输入端的转换时间(transition time)。

其中延时值与负载电容直接相关,负载越大电容越大,延时越大;在大多数情况下,延迟随着输入转换时间的增加而增加。
一个简单的延时模型是线性延迟模型,其中延迟和输出的转换时间可以表示为输入转换时间和输出两个参数的线性函数:在这里插入图片描述
其中D0, D1, D2为常数,S为输入跃迁时间,C为输出负载电容。
线性延迟模型在输入转换时间和输出负载内是不准确的,因此目前大多库使用的比较复杂的非线性延迟。
非线性模型是通过一个二维查找表完成的,二维表用于延迟,输出转换,输出负载电容或其他延迟查找。这里举个例子:
在这里插入图片描述
查找表规定了 pin(OUT) 引脚到 ”INP1” 引脚的延迟值,一种是上升cell_rise另一种是下降cell_fall ,通过输入反转时间input transition time 和输出负载 output load capacitance 来进行查找对应的延迟值。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值