STA之一.时序分析

目录

一、STA

二、STA工具prime time(PT)

三、用PT工具实现STA的步骤

四、什么是timing path(重要)

五、怎么计算timing path delay

六、时钟约束之建立时间和保持时间(重要)


一、STA

        STA(Static Timing Analysis):静态时序分析,或称静态时序验证,是电子工程中,对数字电路的时序进行计算、预计的工作流程,该流程不需要通过输入激励的方式进行仿真。

        功能:分析大规模、同步、数字ASIC的时序。

        优点:与动态时序分析(DTA,Dynamic Timing Analysis,也叫门级仿真)相比,静态时序分析不依赖于激励(输入向量),且可以穷尽所有路径,运行速度很快,占用内存很少;它完全克服了动态时序分析的缺陷,适合进行超大规模的片上系统电路的验证,可以节省多达20%的设计时间。

缺点:

(1)STA只能对同步电路进行分析,而不能对异步电路进行时序分析。

(2)STA不能验证设计的功能,设计功能验证还必须使用动态仿真来完成。

(3)STA不能自动识别设计中的特殊路径,比如多周期路径(multicycle path)、非正常路径(false path)等,这些需要手动设置约束文件来完成时序分析。

        *注:STA分析就是通过时序库文件给出的各条时序路径的延迟,来确认在每个FF是否满足建立/保持时间,整个过程都是用静态算法实现,不需要测试向量,也不需要仿真。而DTA就需要给设计灌入激励在仿真的时候加上各元器件的延迟信息,然后分析设计在这些延迟信息下的正确与否。DTA一般是选择性的做,作为STA的补充。

二、STA工具prime time(PT)

        PrimeTime是Synopsys的一个单点的全芯片、门级静态时序(STA)分析器。

特点:

  1. Synopsys的所有的工具(DC/RSS/PT等)100% “db”兼容。

        Logic timing lib里有很多信息,但是对于后端(包括综合和STA)主要有2个功能,一个就是timing table,用来计算cell 延时,另一个就是表征cell逻辑功能。Logic timing lib有2种文件格式,一个是.db格式,一个是.lib格式。两种格式里内容是一样的,区别是.db是.lib 的二进制格式,人类不可读,.lib可读。通常情况下,Synopsys家的工具都是.db格式(Cadence家的工具都是.lib格式)。Foundry厂一般会提供.lib格式的文件,我们可以通过一些工具(如DC)转化成.db格式,这样Synopsys所有工具都能用了。

        2.Synopsys的工具(DC/RSS/PT等)指令都是相通的。但是某些选项或者属性不一样,要注意(靠经验积累)。

        3.PT工具可以做full chip级的分析。

       4.PT工具可以做模块化(modeling)处理。比如bottom up(由下至上)、top down(由上至下)。

        Bottom up(由下至上):当设计规模比较大的时候,如果从顶层直接做整芯片物理实现的话,可能工具做不了或者时间非常长,所以就可以把设计拆分成多块,先将每个小模块做好物理实现(包括synthesis、PR、signoff等)后,再将小模块拼接成一个full chip,然后再做一些验证,这就是bottom up。

        Top down(由上至下):当设计规模较小的时候,就不需要做细节上的划分了,直接从顶层做物理实现。

        *补充知识:用时序计算工具生成的时序信息存储在SDF(Standard Delay Format标准延时格式)文件中,SDF文件就是把布局布线过程中cell延时和net延时的信息保留下来,据此就可以在路径时序分析时将整条路径的时序计算出来,再判断时序约束条件就能知道是否满足时序要求。

        设计过程中如果时序不满足是需要多次迭代的,在每次布局布线之后,都可以得到当前的SDF时序信息。后端将SDF提供给设计人员,帮助设计人员将SDF反标到设计中从而对时序违背的路径进行修改。

三、用PT工具实现STA的步骤

        三个步骤:

  1. Modeling(模块化)。根据modeling的需求将设计拆分成多个的timing path
  2. 计算每条路径的延时;
  3. 查看延时是否满足设计要求。

四、什么是timing path(重要)

        时序路径是指设计中数据信号传播过程中所经过的逻辑路径。每一条时序路径都存在与之对应的一个始发点和一个终止点。

        时序路径的起点只能是两个:设计的主要输入端口或FF的时钟输入端;

        时序路径的终点只能是两个:FF的数据输入端或设计的主要输出端口。

        Timing Path根据起点和终点可以分为以下四种:

        1.由主要输入到FF数据输入,即in2reg path,如下图路径1;

        2.由FF时钟输入端到FF数据输入端,即reg2reg path,如路径2;

        3.由FF时钟输入端到主要输出,即reg2out path,如下图路径3;

        4.由主要输入到主要输出,即in2out path,如下图路径4。

        *补充知识:时序逻辑(Sequential logic)和register有什么区别?

        时序逻辑范围更广。比如一个存储器(memory),上面有时钟端、控制端、数据输出端,换言之,memory上有很多input pin和output pin,同时它也会有时钟的port。所以说时序逻辑不单指register。

五、怎么计算timing path delay

        path delay=cell delay+net delay

  1. 逻辑单元延迟cell delay

        信号转换时间(Transition time):信号从低电平转换到高电平所花的时间;或者信号从高电平转换到低电平所花的时间。

        Cell delay与输入信号转换时间和输出负载电容都成正比:

        Tcell=Function(Tinput_transition,Cfanout)

        Cell的输出信号转换时间与输入信号转换时间和输出负载电容都成正比:

        Toutput_transition=Function(Tinput_transition,Cfanout)

         如何计算cell delay?

根据logic timing lib里的timing table可查找到cell delay。(Timing table:如下图二维查找表)

        *补充知识:Delay Model

        STA中,cell delay是通过查找表并进行插值来得到的,但是对于在timing table查不到的值,有3种模型来得到cell delay:LDM、NLDM、CCS。

        LDM:linear Delay Model线性延迟模型

        NLDM:Non-linear Delay Model非线性延迟模型

        CCS:composite current source复合电流源模型

具体可参考《STA概念:一文了解NLDM与CCS》(http://t.csdn.cn/z4Gfg)

        2.金属连线延时net delay

        把金属线等效成单位长度的寄生电容和电阻。金属连线延时与单位长度的寄生电容C和寄生电阻R成正比:

Twire=Function(C,R)

        如何计算net delay?

分两种情况:

        (1)做完layout之后(Post-layout),有了真实的物理绕线,用专门的寄生参数提取工具提取出来的net的电阻电容,在STA工具(PT)里计算出net delay。

        (2)在layout之前(Pre-layout),还没有真实的物理绕线,对于0.18um以上的工艺cell delay占比大,net delay占比小,此时net delay精度要求不高,使用的是线损模型(WLM,wire load model)。它是一种粗略估计线延迟的模型方法。

        WLM 实际上就是综合库中,根据fanout查找length的一个表格。知道了一个net的length,乘以单位长度的电容(根据特定工艺条件,也是由线负载模型提供的),然后根据该net上的电容就可以估计它造成的延迟了。

        每个net都有一定数量的pin连接在上面,所谓一个net的fanout,就是除了驱动该net的pin以外的所有pin的数目。Wire load model,就是一个根据net驱动负载的数量,来估计该net产生的延迟的模型。

        (对于更小尺寸的工艺,门延迟显著减小,线延迟的比重增大,而且集成度的提高,造成了布线的复杂。所以不能简单根据一个net的负载,来确定它的length。这也是物理综合走向前端的原因。)

         *引申:通俗来讲,金属连线延时就是跟线的粗细和长短有关。对于一个设计来说,每层金属的粗细已经固定下来(有默认值),一般在PR的时候不会改变这个默认值,所以只能通过改变长度来优化net delay。       

        问:PR之后,一条线很长,延时很大,该怎么解决?

答:插入多个buffer。

假设连线长度为1000个单位,单位长度寄生电容和寄生电阻分别为C和R,

则T= K * 1000C * 1000R = 1000000*KCR   (K表示比例因子)

现均匀插入10个Buffer,则T= 10 * Twire + 10 * T buf

其中, Twire = K * 100C * 100R = 10000*KCR,

由于Tbuf相对比较小, T= 10 * Twire = 10000*KCR

六、时钟约束之建立时间和保持时间(重要)

建立时间和保持时间是怎么来的呢?

在仿真器上,时钟的上升沿或者下降沿是没有延时的(表现为直上或者直下),但是在实际过程中,时钟上升沿或者下降沿是倾斜的,即时钟的上升或者下降是需要一定时间的。

所以这就要求在时钟上升沿到来之时,寄存器的输入数据需要保持稳定;另外,在时钟上升沿到来之后,需要保证寄存器里的数据保持一定的稳定,否则可能会造成前一寄存器的输出太快而冲掉了后一寄存器的正确数据。这是触发器的固有属性。

简而言之就是:

(1)在时钟信号clk到来之前,需要数据保持稳定,即需要数据在clk到来之前“预先准备好”,这段时间称为建立时间;

(2)在时钟信号clk到来之后,需要数据保持稳定,即需要数据在clk到来之后“不能变化”,这段时间称为保持时间。

        1.什么是建立时间setup time?如何计算?

        定义:时钟沿到来之前数据稳定不变的时间 (就是说数据要比clk先到FF2)

         如何计算setup time(Tsu)呢?

        以上图一为例,数据从FF1传递到FF2,与此同时clk也在往FF2传递,数据的传递路径的时间是Tc1+Tck+Tcmb,clk传递路径的时间是Tc2。

        时序逻辑电路设计的期望是,在一个时钟的上升沿发出数据,在下一个上升沿时捕获数据(参考图二)。结合data要比clk先到,得到下列式子:

            (Tc1+Tck+Tcmb)+Tsu<Tc2+T

转化为:Tsu<Tc2+T-(Tc1+Tck+Tcmb)

而时间偏移Clock Skew:Tskew=Tc2-Tc1

上述不等式可转化为:Tsu<Tskew+T-Tck-Tcmb

2.什么是保持时间hold time?如何计算?

        定义:时钟沿到来之后数据稳定不变的时间 (就是说FF2里的数据要比clk走得慢)

        如何计算hold time(Th)呢?

        结合图一和图二,接收端FF2在时刻2刚刚捕获到了来自FF1时刻1的数据,此时,如果FF1在时刻2发出的数据过快地到达FF2,那么他就会冲掉FF2刚刚采集到的时刻1的数据。因此保持时间约束的是同一个边沿。

        换言之,对于FF2来说,它在时刻2抓取的是FF1时刻1发出的数据,FF1在时刻2(也就是当前)发出的数据应该在FF2的下一个上升沿抓取,对于时刻1发出的数据,他要在FF2里面保持一段时间。结合数据要比clk走得慢,得到下列式子:

            (Tc1+Tck+Tcmb)>Tc2+Th

转化为:Th<(Tc1+Tck+Tcmb)-Tc2

               Th<Tck+Tcmb-Tskew

  • 5
    点赞
  • 66
    收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

sddhyl

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

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

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

打赏作者

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

抵扣说明:

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

余额充值