在线咨询
eetop公众号 创芯大讲堂 创芯人才网
切换到宽版

EETOP 创芯网论坛 (原名:电子顶级开发网)

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
查看: 34538|回复: 51

[原创] 【干货】STA静态时序分析详细解析 - 连更

[复制链接]
发表于 2020-3-22 15:57:17 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?注册

x
本帖最后由 sinbad 于 2020-3-23 19:33 编辑

STA-0. 静态时序分析概述

您好,我在芯片后端领域工作有十年时间,负责过多颗SoC芯片顶层的STA的工作。从这一篇文章开始,我会尝试着系统性地去介绍STA,力争让这个领域的新人能有一份“读这一本就够了”的原理性材料,也希望让更多有经验的人了解STA的底层的逻辑。

静态时序分析(Static Timing Analysis, 以下统一简称STA)是验证数字集成电路时序是否合格的一种方法,其中需要进行大量的数字计算,需要依靠工具进行,但是我们必须了解其中的原理。在综合工具(DC / Genus 等),布局布线工具(ICC2 / Innovus 等),时序分析工具(PrimeTime / Tempus 等)中都嵌入了不同的STA引擎,这些引擎往往在时间和精度方面有一些折衷,但是目的就是以尽量小的误差去模拟物理器件和绕线的SPICE模型,从而更接近芯片生产出来后真实的性能。

为了更好地理解STA,有必要提一下时序仿真,它是另外一种验证数字集成电路时序是否合格的方法。下面用一张表来对比一下这两者之间的区别,第一点是激励波形,STA是不需要的激励波形的,但是需要SDC(Synopsys Design Constraint,时序约束),后续的文章会具体介绍SDC的内容, 而时序仿真时严重依赖激励波形的;第二点是完整度,STA能够对数字电路中所有的时序路径进行全面的检查,而时序仿真在覆盖率上有一定限制;第三点是效率,STA的比较简单,速度更快,而生成仿真需要的激励,建立仿真环境可能费时费力;第四点是鲁棒性,STA能够考虑到电路中串扰噪声以及OCV(On Chip Violation, 片上偏差)的影响,提高芯片制成后的良率,而时序仿真做不到这一点。

特性
STA
时序仿真
激励波形
不需要输入激励波形,但需要SDC
与激励波形有关
完整度
能够对电路中所有的时序路径进行全面检查
覆盖率有一定限制
效率
简单,速度快
仿真费时,产生激励费力
鲁棒性
能够考虑到串扰噪声以及OCV的影响
没有这方面的考量


既然,STA在数字集成电路中如此不可或缺,那具体是由哪些人负责,又是做什么具体地工作呢?关于这个问题,在不同的公司各有不同,但是负责STA的人一般都会同时负责综合,生成SDC,标准单元工艺库的选择,时序签核(Timing Signoff)及相关标准的制定等等。他们需要对设计有一定了解,更加需要对工艺的时序特性有全面地掌握,在系统性能指标的定义时需要提供参考意见。作为芯片时序性能检查的最后的把关人,需要一定经验的积累,同时也需要敏锐发现并解决潜在新问题的能力。(有没有感觉像是招聘JD:)

当然,STA也有它的局限性,需要通过仿真进行交叉验证,作为重要补充。下面简单列举几个方面:

(1) STA针对的是数字电路,和模拟电路相关的路径无法通过STA验证

(2) 数字电路中产生的不定态在STA不会验证,这个需要通过仿真进行仔细检查确认

(3) 电路中不同状态机之间的同步需求不能通过STA来验证

(4)对时钟生成电路的验证无法通过STA完成

(5) 时序约束中会有例外情况,需要人工处理


待续。。。。

扫码关注微信公众号RTL2GDS了解更多干货内容:
rtl2gds_15cm.jpg

发表于 2020-3-22 18:33:06 | 显示全部楼层
thanks
发表于 2020-3-22 21:10:00 | 显示全部楼层
thanks for sharing!
发表于 2020-3-23 13:11:09 | 显示全部楼层
谢谢分享,期待继续。
发表于 2020-3-23 13:18:44 | 显示全部楼层
thanks for your sharing , 希望能对先进制成(12nm以下)的sta sign-off 标准和注意事项做些讲解
 楼主| 发表于 2020-3-23 19:32:25 | 显示全部楼层
本帖最后由 sinbad 于 2020-3-24 00:00 编辑

STA-1 从一个反向器开始说时序

前一篇讲到STA其实嵌入在综合布局布线(简称PnR)时序签核(简称Signoff)等整个物理实现的过程中,对于STA的理解是每一个IC工程师,特别是后端工程师的必备素质。

看到文章的标题,我猜您也许会觉得反相器很简单,但其实反相器是所有数字设计的基本单元。下面就来考考您能回答到第几层问题。(注:有些是在应届毕业生面试中经常被问到的)

第一层:您能画出反相器的symbol吗?
STA-1-invert-symbol.png
肯定没问题,否则请出门左转,一定是走错场子了...


第二层:您能画出反相器的晶体管级电路图吗?
STA-1-invert-transitor.png
应该没问题,否则同上...


第三层:您能画出反相器的版图吗?

下图是量产工艺库里面一个最小反相器真实的版图:

STA-1-invert-layout.png


第四层:您能画出反相器的工艺横截面图吗?

横截面示意图如下,应届生面试时特别容易考这个问题,而且会扩展出让你画闩锁效应等效电路图等进一步问题,需要仔细了解。下图显示的是:在P型衬底中有一块N阱,PMOS管长在N阱中,NMOS管长在P衬底中,红色为poly层,绿色为VIA0或者M1层绕线。

STA-1-invert-cross-section.png

第五层:您知道反相器的延迟时间在STA中是如何得到的吗?

这些延迟时间(简称delay)都是通过库里面的查找表得到的,这些查找表是通过对标准单元进行建模,然后利用模型进行扫描仿真得到一个查找表,方便STA时使用。对于标准单元延迟时间的建模模型,需要特别了解的有两类,一类是基于电压源的NLDM(Non-Linear Delay Model),另一类是基于电流源的CCS模型(Composite Current Source)。

NLDM模型

NLDM模型的驱动端和接收端的模型如下:

STA-1-nldm.png

通过改变输入信号转化时间(Input Transition)和输出负载(Output Load),仿真得到标准单元(简称stdcell)delay值的查找表,存在标准单元库(.lib)中,如下图所示,查找表中一般有index1(Input Transition或者slew)和index2 (Output Load)两个维度,其中:index1是纵坐标,index2是横坐标。那如果Input Transition的值,或者Output Load的值不在查找表中,工具会通过插值运算来计算出delay值。


STA-1-nldm-tlu.png


NLDM模型的前提假设是接收端负责为纯电容性负载,但是随着集成电路尺寸的缩小,绕线电阻变得不容忽视,这种模型的误差也会变大。另外一点是因为在深亚微米工艺,绕线串扰引起的噪声影响越来越大,需要新的模型来更精确地来模拟噪声。CCS模型就是因此而引入的。

CCS模型

CCS模型的驱动端和接收端的模型如下,与NLDM不同的是,在驱动端采用电流源代替了电压源,在接收端采用两个电容,其中一个模拟近端的负载电容(C1),它的充放电速度快,另一个模拟的是远端的电容(C2),它的充放电速度慢,这样能够进一步提高上升和下降波形的精确度。


CCS模型在.lib中是以离散波形的形式存在的,如下图所示 :

STA-1-ccs-tlu.png

从精度上来说,NLDM模型跟SPICE模型的误差在正负5%左右,而CCS模型跟SPICE模型的误差能达到正负2%。


第六层:您知道反相器的延时的计算公式吗

一般反相器可以等效为下面的开关电阻电容模型,当输入为低电平时,NMOS管断开,PMOS管等效为一个电阻Rp,而当输入为高电平时,PMOS断开,NMOS等效为一个电阻Rn。


STA-1-invert-switch-model.png


为了简化运算,我们暂时假设输入信号高低转换的时间为零,即为一个阶跃响应(实际上不可能,所以才需要考虑Input Transition),那么对于输出Vout来说,它从低到高的传输延时tpLH其实是电源VDD经过Rp对输出电容CL的充电时间。类似地,从高到低的传输延时tpHL其实是电容CL经过Rn对地的放电时间。公式如下:(如果对公式中0.69这个值不解,可以在公众号发消息给我)

STA-1-invert-tp.png

那么问题又来了,怎样才能尽量保证下降和上升延迟一样呢?这一点对于时钟树上的clock inverter 和clock buffer尤为重要。通过上面的公式可以知道,方法就是让Rp和Rn尽量一致,由于PMOS管是利用空穴传输电流,而NMOS是利用电子传输电流,它们的迁移率是不同的,为了让Rp = Rn, 一般需要PMOS管的宽长比(Wp/Lp)是NMOS管(Wn/Ln)的2-3倍。


第七层:您知道反相器的SPICE模型吗?

从前面的内容可以看出,衡量stdcell delay模型的好坏,其中一个指标是与SPICE模型的误差,那我们来看看一个标准单元库中最小尺寸反相器的SPICE模型:

STA-1-invert-spice.png


它仅仅由一个NMOS管(nch_mac)和一个PMOS管(pch_mac)组成,它们的沟道长度都为30nm,宽度分别为400nm和520nm,容易看出,这个反相器在上升下降延迟上可能会有一定差别。那具体nch_mac和pch_mac的模型就更复杂了,模拟电路设计工程师需要特别关注,但是作为数字电路设计,不必深究,不过需要知道MOS管大致工作的几个区域,比如线性区(resistive,功能等效为电阻),饱和区(saturated),以及截止区(off)。下图中的反相器输入输出传输特性曲线上标出了不同输入电压下NMOS和PMOS的工作状态,有兴趣可以深究,在这里就不继续挖了。

总结一下,一个简单的反相器能体现出数字前端和后端设计种很多方面的知识,远远不止上面七个问题而已。这篇文章想重点介绍的是,STA所用到的标准单元库中stdcell delay值是怎么计算出来的,以及两种stdcell delay模型NLDMCCS)相关概念。


还想系统地了解RTL2GDS方面更多内容,请关注 RTL2GDS 微信公众号:

rtl2gds_15cm.jpg




STA-2-elmore2.png
 楼主| 发表于 2020-3-24 00:02:02 | 显示全部楼层
本帖最后由 sinbad 于 2022-5-25 09:05 编辑

上一篇《STA-1. 从一个反相器开始说时序》中解释了STA中Cell Delay是从标准单元库中得来,那么绕线延时(Net Delay)是怎么计算出来的呢?Net Delay在整个路径延时(Path Delay)的占比又是什么情况呢?针对关键路径,工具会如何降低Net Delay呢?下面我们就来逐步阐述。

Net Delay占比多高?


明显地,Path Delay = Cell Delay + Net Delay

你可能好奇Net Delay所占的比重如何?这个跟工艺和设计是相关的,但是总体上的趋势是,随着工艺尺寸缩小,Net Delay占比越来越高。下面是Net Delay占比的分布图,统计对象是基于12nm工艺的一个SoC设计中的100万条路径。可以看出,很大一部分的Path中的Net Delay占比超过20%。


STA-2-net delay ratio.png

Net Delay 计算公式


为了计算Net Delay,我们需要先提取出电容和电阻,如果已经有真实的绕线(route)或者预估的绕线(global route),那么只需要根据route在不同层(layer)的分布就可以提取出相对准确的寄生参数值,下图是在log中显示每一层的layer的单位电阻和电容值的实例,这些值的源头是Foundary提供TLUPlus/ITF文件(本文以ICC为例,其他EDA工具会有较大差异,具体在PnR教程中会讲解):

STA-2-rc-log.png

但是问题来了,在综合(Synthesis)阶段,如果没有绕线的长度信息,也没有stdcell的位置信息,是怎么得到电阻电容值的呢?这就是Wire Load Model在起作用了。

Wire Load Model

下图是标准单元库.lib中定义的一种Wire Load Model,名字是“ZeroWireload”,它是根据net的扇出(fanout)来预估长度(length),然后再根据所定义的单位长度的电阻(0.00001),以及单位长度电容(1)来计算net的寄生RC参数。不过图中的例子比较理想化,都是设成了0,完全不考虑net delay。在实际项目中,必要时,可以自己定义Wire Load Model,尽量在综合阶段将Net Delay的影响考虑进去。更细节的关于Wire Load Model的使用可以在公众号(RTL2GDS)中回复“WLM”了解更多内容。

STA-2-wlm.png

Elmore Delay 模型

既然已经有了寄生的RC信息,那怎么计算Net Delay呢?

对于单输入单输出的net,假设不考虑net之间的耦合电容(即不考虑噪声的影响),并且也不存在电阻性的反馈回路的情况,可以用Elmore Delay模型来计算Net Delay,如下图:

STA-2-elmore1.png
根据Elmore Delay公式,各节点的delay可以表示为:
STA-2-elmore2.png


如果把绕线用分布式RC模型来表示(如下图),

STA-2-elmore3.png

那么,Net Delay可以进一步化简为:
STA-2-elmore4.png

其中,Cwire只能往前看到Rwire/2的电阻,Cload往前能看到Rwire的电阻。


AWE模型和Arnoldi模型

AWE(Asymptotic Waveform Evaluation)和Arnoldi都是是更高级的对RLC网络延时进行瞬态响应匹配近似的方法。当然,AWE本身也有一阶模型,结果与Elmore类似,但是误差也较大(与SPICE模型相比),可能达到74%,二阶AWE模型的误差可以减少到22%,四阶AWE的近似结果和SPICE模型的结果误差已经很小了。AWE模型的优点是容易实现,缺点是数值不稳定,而Arnoldi模型会更加稳健,在目前EDA工具Postroute阶段应用比较多。

如果你还有好奇心和多余时间,可以搜一搜这两篇论文进一步了解AWE和Arnoldi模型:《Asymptotic waveform evaluation for timing analysis》和《Reduced-Order Modeling Techniques Based on Krylov Subspaces and Their Use in Circuit Simulation》。



Net Delay的优化


前面讲到Net Delay占整个Path的比重很大一部分已经超过20%了,如何去优化这一部分Net Delay呢?

根据Net Delay的计算公式,减少R*C的值就能优化Net Delay。由于高层金属通常会比底层金属的单位长度RC更小,所以把关键路径上的net更多地绕在高层金属上,可以把关键路径优化得更好。具体到PnR工具的实现上,通常会有一个“Layer Promotion”的功能。

另外,对于高速的net,尤其是clock net,一般会给特殊对待,给它们设置NDR(Non-Default-Rule),让它们用更大的width和space,甚至加上shielding隔离它们,以保证这些高速的net不会被其它的net影响。当然这些NDR都是有代价的,它们会占用更多的绕线资源,并不是越严格越好,常见的设置是,对clock net设置2倍宽度2倍间距(2w2s)的NDR。其实高速的net用更宽的rule还有一个原因是考虑到DFM的原因,这些高速net的电子迁移(Electro-Migration,EM)导致的绕线缺陷机率比普通net要高。

总结


对于Net Delay,需要了解它在整个Path Delay占的份量,熟悉Wire Load Model,Elmore Delay,AWE,Arnoldi等概念。有些在后端的面试中也经常被问到。

 楼主| 发表于 2020-3-24 00:08:42 | 显示全部楼层
#预留
 楼主| 发表于 2020-3-24 00:12:14 | 显示全部楼层
#预留
 楼主| 发表于 2020-3-24 00:15:16 | 显示全部楼层
#预留
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐 上一条 /2 下一条

×

小黑屋| 手机版| 关于我们| 联系我们| 在线咨询| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2024-12-19 12:52 , Processed in 0.026296 second(s), 7 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
快速回复 返回顶部 返回列表