20180820

版权声明:未经允许请不要转发 https://blog.csdn.net/qq_34110120/article/details/81875871

 

  • Setup和hold的理解

Setup:建立时间描述的是lancth路径的数据要早于capture路径的时间,这样数据的数据才是想要的。

Hold:保持时间的意义就是数据的latch路径上不能太快,如果数据传输过快,导致d1输入值覆盖掉d1中原来存储的值,导致时序电路错误。

建立时间和保持时间是cell的属性和其他没关系。

  • Timingwindos的理解

T_setup+t_hold=timingwindows,

  • Lec检查

逻辑等价性检查,在rtl到网表,后端dft,布局布线,等过程中都会存在不一致的问题,都需要检查一致性。由于综合优化的存在导致优化后的网表和RTL不一致,比较的过程按照名字比较关键点之间的组合逻辑功能是否一致;网表对网表的比对是首先map匹配关键点,然后查找对应点之间的逻辑是否等价。Dc综合的过程有自己的命名规则,也可以修改命名规则,在lec查找的过程中要选择相同的命名匹配策略进行匹配,对于不匹配的点查看不匹配的原因,如果实际上是匹配的可以通过修改命名规则进行匹配设置。等价性检查有按照模块的和平铺的两种比较方式,对于现在的top-down的设计方式现在主要采用的是按照模块的这种方式,这样可以有效的减少比对的时间。

  •  PV(Physical verification)检查

物理验证主要是完成生成的gds的drc,lvs esd 等物理规则检查,检查是否满足物理上的可制造性。

  • MMMC检查

多模式多端角模式检查,多种模式(function,scan,bist,),多端角(pvt,rc_core),多模式多端角的随机组合组成设计的环境,这种测试环境就是芯片所处的边界点情况,在多模式多端角的模式下测试设计满足建立时间和保持时间。

  • si分析

在深亚微米下,金属线的宽度变得更细,线间距变得更小,这就使得连线的接地电容变小,线之间的耦合电容变大,这样就是增大了信号线之间串扰的可能性,串扰造成的影响主要是:信号传输时间变化和毛刺;信号transtion——time发生变化主要是串扰影响受害者的充放电时间,进而影响传输时间。毛刺的产生主要是串扰发生时产生的毛刺现象经过传播引起功能错误。串扰分析是首先要有def文件和cell的库文件利用star_rc抽取spef文件然后根据cell的特征产生sdf文件,根据sdf文件和网表文件进行si的分析。

  • 多周期时钟约束:多周期时钟指的是信号所经过的组合逻辑路径不是在一个周期内完成的,但是这是合法的,这种情况下也需要满足建立时间和保持时间,对于建立时间的约束launch信号可以在N个周期内到达,对于保持时间约束是信号不能传输太快,在同步逻辑设计中,通常都是按照单周期关系考虑数据路径的。但是往往存在这样的情况:一些数据不需要在下一个时钟周期就稳定下来,可能在数据发送后几个时钟周期之后才起作用;一些数据经过的路径太复杂,延时太大,不可能在下一个时钟周期稳定下来,必须要在数据发送后数个时钟周期之后才能被采用。针对这两种情况,设计者的设计意图都是:数据的有效期在以launch edge为起始到数个时钟周期之后的latch edge。这一设计意图不能够被时序分析工具猜度出来,必须由设计者在时序约束中指定;否则,时序约束工具会按照单周期路径检查的方式执行,往往会误报出时序违规。 
  • crpr:(Clock Reconvergence Pessimism Removal)

在0cv分析过程中由于lantch和capture路径上有comment path,但是对于这条路径上的cell不可能同时是best ,和worst,这个时候就需要进行特殊处理,即NOCV处理,

OCV模式和CPPR模式的技术层面解答:

OCV是on-chip variation. 是指在同一个芯片上, 由于制造工艺等原因造成的偏差. 具体表现在到两个ff的clk端的时钟路径. 本来时间应该是一样的. 但是因为制造工艺也就是OCV的原因, 造成工具无法计算的快慢偏差.

timing derate. 这个值就是告诉工具, OCV的影响有多大. 通常signoff的时候. derate会有5%到10%. 不同工艺不同设计, 由工程师的经验决定.
如果两个clk path 的长度都是1, 在OCV 分析模式下, 1.05和0.95的derate.
原本是0的 skew就变成了 1x1.05 - 1x0.95 = 0.1的skew.
以上就是OCV和timing derate的关系. 在.18um甚至.13um工艺下. ocv的影响很小, 基本可以不考虑. 但是90nm及以下,基本都会设.

cppr (clock path pessimism removal) 或者 crpr (clock reconveregence pessimism removal)是同一件事情的两种叫法. Cadence公司的叫前者, Synopsys公司的叫后者. 在开启OCV模式之后, 这个选项才有意义.

由于分析方式过于悲观了. 因为两个时钟可能有共同路径. 既然是共同路径, 逻辑上就不可能有偏差. cppr就是干这的. 去除共同路径上过于悲观的估计. 只计算不同路径的OCV影响.

首先因为有PVT,就是由于半导体器件的参数和很多因素有关,比如制造工艺/运行温度/电源电压等,相对于这些因素,工艺库就会针对不同的环境给出的不同的参数值,这些参数会影响线网和单元的时延delay值。

在不同温度工艺电压下,把时延相关信息分为三档:best,typical,worst

那么,为了保证时许验证的结果是保守的,会采取集中不同的分析模式。STA分析方式主要有三种:single,worst_best,OCV

Single:在单一的情况下进行分析,即在做setup/hold分析时用同一种PVT模式下的时延信息

Worst_best:在分析时同时读入worst和best情况下的延迟信息,用worst下的延迟信息计算

Setup constraints,用best下的PVT模式计算hold  time constraints

OCV(on_chip_variation):在分析时同时读入worst情况下的PVT,在进行setup计算时,clock skew采用考虑到加工工艺的不确定性对时延的影响,用PVT中best(shortest)情况下计算,data delay用PVT中worst(longest)情况进行计算。计算Hold时相反。这种分析方式对芯片的timing非常严格。

在EDA工具对这个STA问题的处理时,引入了derate的概念,来对应worst和best的PVT时延影响,在不同path计算时可设置derate取其best或worst的时延delay。(在实际操作时,还可能只考虑一条路径上的悲观情况,另另一条路径derate=1,使约束条件更加乐观)

因为OCV模式过于严格,所以才用基于OCV分析方式下的CPPR模式来去除悲观路径的影响,而CPPR实际上还是保留了OCV模式的计算方法和原理,因此我当初理解是认为他们的最大差异在于是否考虑commom path的影响,OCV模式下计算简单电路时共同路径会影响slack的值(乘derate后共同路径延迟相减为负),而采用时cppr不会(共同路径延迟相减为0)。

然而,理解不透彻的是

实际上在工具中ocv模式和cppr都是针对delay来说的,这种情况下二者delay肯定都考虑共同路径的影响,否则delay计算不准确,区别在于是否考虑悲观影响。 

更准确地说:OCV模式考虑共同路径的悲观影响,本身过于悲观,CPPR不考虑common path的悲观估计(计算偏差)。

  • timing borrow:

time borrowing是老一辈full custom设计者喜欢的,但是现在的EDA都没法分析这个,所以现在基本上一般的ASIC design都不会用。基本的感念就是因为latch是电平触发的,数据只要在半T内通过都可以,所以上一级可以在下一级打开的时间段内继续算,只要在下一级关闭之前算出来就可以了。但是不能一直借下去。

  • GBA,PBA:

这种情况的出现主要是对于mul_x的多路信号处理过程中不同的分析模式,gba按照路径中最坏的那一条来分析建立时间和保持时间,pba是按照真是的路径去分析,每个cell根据路径算出实际的延迟,这样运算量巨大。一般来说gba比pba更悲观,

先弄懂GBA再懂PBA
假設有個條path   OR/Z -> AND/A -> AND/Z  -> NAND/A  請問AND/Z的output slew怎麼算
AND/A transition 0.1
AND/B transition 0.5
GBA : 拿0.5算, 考慮每顆cell最悲觀, 所以只算一次
PBA : 拿A算, 因為path是走A. 所以資料輛會很龐大, 因為每條path, 每個cell都要重算一次

不同的分析模式:

single:只读入一种时序库进行分析,这个阶段主要是前端design会利用这种模式对于设计的建立时间进行建立时间约束检查。

bc_wc:读入两种时序库进行建立时间和保持时间的检查,这种模式也主要考虑cell的不同延迟情况进行的分析。路径延迟只有一个值

on_chip_varition考虑到真实的情况,cell最好最坏和net_delay的最好最坏情况

aocv:sbocv根据实际情况选择每条路径延迟的derate的值,而不是采用统一的最坏路径延迟,防止过于悲观,根据逻辑深度和距离选择derate,

  • 即所谓的stage based OCV (SBOCV), 将derate 模拟成path depth 跟 distance 的函数,所以对同一段path 上不同depth、不同类型的cell 有不同的derate 值,而且同时还会考虑spatial 的影响 ( 即distance ) , 所以相较于OCV 更精确,但是AOCV 有两个局限:一是没有考虑cell 的trantion 跟 load 对variation 的影响,也没有考虑transition 的variation;二是depth 的计算,用GBA 过于悲观,而PBA runtime 又难以接受

socv/pocv:

  • 统计OCV 是一种使用单一local variable 的SSTA 简化模型,对每个cell 分别建模,cell 的derate 不再是path depth 的函数,而是一个基于单一 µ(均值) 和σ(方差) 的高斯随机变量函数。SOCV / POCV 可以弥补AOCV 的局限,它考虑cell 的transition 跟 load 对variation 的影响,也考虑variation 对cell transition 的影响;由于其不依赖于depth, 所以也不受depth 精度的影响

POCV / SOCV具有如下特点:

  • 每一级delay 都是一个(µ,σ) 的分布,时序分布作为独立的随机变量通过时序图传播。

  • 每个cell / net 的variation 都用统计参数表示。

  • variation 是输入transition 跟输出load 的函数。

  • 更精确,跟SPICE 仿真结果的correlation 更好。

  • timing report 中delay 值用µ + n*σ 表示,默认n 是3,即通常所说的3 sigma。

猜你喜欢

转载自blog.csdn.net/qq_34110120/article/details/81875871