本文主要是介绍SignOff Criteria——AOCV(Advanced OCV) introduction,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
文章目录
- 1. O v e r v i e w Overview Overview
- 2. A O C V P r i n c i p l e I n t r o d u c t i o n AOCV\ Principle\ Introduction AOCV Principle Introduction
- 3. U s a g e o f A O C V Usage\ of\ AOCV Usage of AOCV
- 4. A t t e n t i o n s Attentions Attentions
前面一个介绍详细了 O C V OCV OCV的使用原因以及使用方法,参考 S i g n O f f C r i t e r i a —— O C V a p p l i e d a n d r e s u l t s SignOff\ Criteria——OCV\ applied\ and\ results SignOff Criteria——OCV applied and results。
O C V OCV OCV一般是针对工艺节点在 90 n m 90nm 90nm以上的芯片制造,到了 90 n m 90nm 90nm以下, 45 n m / 22 n m 45nm/22nm 45nm/22nm等等,如果还用这种 O C V OCV OCV的方法,直接在 d a t a p a t h data\ path data path和 c l o c k p a t h clock\ path clock path上增加统一的 d e r a t e derate derate值,可能会增加 s i g n o f f signoff signoff的悲观程度,并导致过度设计、降低设计性能和更长的设计周期。因此为了降低我们 s i g n o f f signoff signoff时候 O C V OCV OCV带来的悲观度,引入了更先进的 O C V OCV OCV分析方法: A O C V / P O C V AOCV/POCV AOCV/POCV。其实 A O C V / P O C V AOCV/POCV AOCV/POCV的引入,无非是在 O C V OCV OCV的基础上,降低我们 S T A STA STA的悲观度,从而减少 E C O ECO ECO的工作量。
1. O v e r v i e w Overview Overview
A O C V ( a d v a n c e o c v ) AOCV (advance\ ocv) AOCV(advance ocv)通过使用考虑位置和被分析的每条路径的逻辑深度的可变降额因素,对影响时序的 I C IC IC上的随机和系统变化进行建模。通过使用 l o c a l d e r a t e local\ derate local derate值而不是 g l o b a l d e r a t e global\ derate global derate值,也就是 d a t a p a t h data\ path data path和 c l o c k p a t h clock\ path clock path不再是统一的一个 d e r a t e derate derate,而是各个不同。通过这种方法降低悲观减少过多的设计余量并减少时序违规。
P O C V ( p a r a m e t r i c o c v ) POCV(parametric\ ocv) POCV(parametric ocv)的出现是因为 A O C V AOCV AOCV的方法,根据逻辑深度进行设置依然是一种简单的方法,依然可能造成过于悲观。 P O C V POCV POCV是基于每一个 c e l l cell cell进行单独的高斯分布的建模处理, c e l l cell cell的 d e r a t e derate derate不再受逻辑深度的影响。
如下图为不同的 O C V OCV OCV技术对应的 S T A STA STA的悲观程度:
2. A O C V P r i n c i p l e I n t r o d u c t i o n AOCV\ Principle\ Introduction AOCV Principle Introduction
A d v a n c e d O n C h i p V a r i a t i o n Advanced\ On\ Chip\ Variation Advanced On Chip Variation,相比较于 O C V OCV OCV来说,对于悲观度的去除很有效。相较于 O C V OCV OCV对于整个 d e s i g n design design中的 l a u n c h / c a p t u r e p a t h launch/capture\ path launch/capture path设置统一的 d e r a t e derate derate值, A O C V AOCV AOCV通过将 c e l l d e r a t e cell\ derate cell derate值与 c e l l cell cell的逻辑深度以及实际的位置结合起来进行 d e r a t e derate derate值的设定。那么这种derate如何能够设置到具体的cell呢,其实是我们在跑STA时候会读入相关的 a o c v l i b f i l e aocv\ lib\ file aocv lib file,里面有专门对相关的 c e l l cell cell进行的 a o c v d e r a t e aocv\ derate aocv derate值的描述。举例如下所示为 3.0 3.0 3.0版本的一个INV
的 A O C V AOCV AOCV描述:
> version: 3.0
> group_name: core_tables
> object_type: lib_cell
> object_spec: LIB/INVX1
> rf_type: rise fall
> derate_type: late
> path_type data clocck
> depth: 1 2 3 4 5
> distance: 500 1000
> table: \
> 1.123 1.119 1.080 1.060 1.054 \
> 1.125 1.121 1.082 1.062 1.056
该部分是一个二维表格的描述,如果只有一维表格描述,一般就只有 l o g i c a l d e p t h logical\ depth logical depth相关的内容,没有 d i s t a n c e distance distance相关内容。那我们知道了相关的 d e r a t e derate derate值如何查找表得到,可是这个查找表的输入两个值: l o g i c a l d e p t h logical\ depth logical depth和 d i s t a n c e distance distance又是从何而来呢?接下来介绍的两种技术: G B A m o d e GBA\ mode GBA mode和 P B A m o d e PBA\ mode PBA mode,其中两种 m o d e mode mode对应的悲观度不同,对应的 l o g i c a l d e p t h logical\ depth logical depth和 d i s t a n c e distance distance值不同,相应的结果也不同。
2.1 G B A − A O C V GBA-AOCV GBA−AOCV
2.1.1 A b o u t L o g i c a l D e p t h About\ Logical\ Depth About Logical Depth
基于 G B A m o d e GBA\ mode GBA mode的 A O C V AOCV AOCV技术,关于 l o g i c a d e p t h logica depth logicadepth的获取,如下图所示,拿buf0
为例来讲,用 G B A GBA GBA的方式获取buf0
相关的 p a t h path path ,那么他的 l o g i c a l d e p t h logical\ depth logical depth值就会有多个:
- 比如作为 d a t a p a t h data\ path data path时候,
buf0
到FF1
有三个 c e l l cell cell,因此 l o g i c a l d e p t h logical\ depth logical depth为 3 3 3; - 作为 l a u n c h p a t h launch\ path launch path时候,
buf0
到FF2/D
有两种可能5/6,取较小者 5 5 5; - 作为 c a p t u r e p a t h capture\ path capture path时候,
buf0
到FF2/CP
有 4 4 4个 c e l l cell cell,因此 l o g i c a l d e p t h logical\ depth logical depth为 4 4 4,而buf0
在报FF1
到FF2
的这条 p a t h path path时候会取 3 3 3。因为会取 G B A m o d e GBA\ mode GBA mode下抓取的所有的 l o g i c a l d e p t h logical\ depth logical depth中的最小值。因为在上面的 l i b lib lib里面可以看到, l o g i c a l d e p t h logical\ depth logical depth越小,相应的 d e r a t e derate derate值也越大。所以说 G B A GBA GBA会取最悲观的数据进行 d e r a t e derate derate设置。
2.1.2 A b o u t d i s t a n c e About\ distance About distance
无论是基于 c e l l cell cell计算 d i s t a n c e distance distance还是基于 n e t net net计算 d i s t a n c e distance distance, G B A m o d e GBAmode GBAmode下,总会选取整个 G B A m o d e GBAmode GBAmode组里面最大的那个 d i s t a n c e distance distance值作为我们 G B A c h e c k GBA\ check GBA check时候的 d e r a t e derate derate值的设置依据,因为在二维查找表总可以看出来的, d i s t a n c e distance distance越大,对应的 d e r a t e derate derate也是越大的,距离越远意味着我们工艺制造过程中的差距可能越大。
2.2 P B A − A O C V PBA-AOCV PBA−AOCV
P B A m o d e PBA\ mode PBA mode其实是在 G B A GBA GBA抓取的 p a t h g r o u p path\ group path group组里面进行更加细致的分析,不像 G B A GBA GBA那么的悲观,但是相对来说所需 r u n t i m e run\ time run time就要更长了。
2.2.1 b u i l d L o g i c a l D e p t h build\ Logical\ Depth build Logical Depth
关于 P B A m o d e PBA mode PBAmode下的 p a t h path path获取,如下图所示,首先会去除一个 c o m m o n p o i n t common\ point common point,因为相同的 c o m m o n common common点,也就是同一个 c e l l cell cell,在实际的特定的工作条件下的相关属性是一定的,不可能由于被分为 l a u n c h launch launch或者 c a p t u r e capture capture而改变,因此在 S T A p a t h STA\ path STA path中会增加 c r p r crpr crpr的技术取消除 c o m m o n p o i n t common\ point common point的悲观性。言归正传, P B A PBA PBA的就是非常具体的 p a t h path path的分析了,如下图所示,为FF1
到FF2
的 t i m i n g p a t h timing\ path timing path,针对这条 p a t h path path,buf0
作为 c o m m o n p o i n t common\ point common point点不用关注,而穿过FF1
的 p a t h path path就只能被认为是 l a u n c h p a t h launch\ path launch path, d e p t h depth depth 5 5 5/ 6 6 6不同对应不同的 t i m i n g timing timing报告。而 c a p t u r e p a t h capture\ path capture path在经过约束的分析之后也只能作为 c a p t u r e p a t h capture\ path capture path,因为它到FF2/ck
端口,不可能是 d a t a p a t h data\ path data path,因此 c a p t u r e p a t h capture\ path capture path的 d e p t h depth depth为 3 3 3。可以看到 P B A PBA PBA和 G B A GBA GBA的区别, P B A PBA PBA具体到每一条真实的 p a t h path path,不会把一个 g r o u p group group的 p a t h path path放在一起分析,而 G B A GBA GBA是把一个 g r o u p group group的 p a t h path path里面最差的情况用到了所有的 p a t h path path中。因此 P B A PBA PBA降低了悲观度。
2.2.1 G e t d i s t a n c e Get\ distance Get distance
关于 d i s t a n c e distance distance, P B A PBA PBA和 G B A GBA GBA也是不同的,这个不同之处和 d e p t h depth depth的获取有类似的情况。如下图所示, P B A PBA PBA针对的是一条具体的 p a t h path path,那么它的 d i s t a n c e distance distance就是唯一的,每一个 c e l l cell cell的 d i s t a n c e distance distance也就是唯一的,而不像 G B A GBA GBA中的选取这个 g r o u p group group组中的最大的 d i s t a n c e distance distance值去进行计算,因此来说 P B A PBA PBA是降低了悲观度的。
3. U s a g e o f A O C V Usage\ of\ AOCV Usage of AOCV
S T A STA STA阶段如何使用 A O C V AOCV AOCV,其实就是正常的需要的内容读入,参考Timing Check – Timing signoff env之后,设置 a o c v a n a l y s i s aocv\ analysis aocv analysis的 e n a b l e enable enable然后 s p e c i f y a o c v specify\ aocv specify aocv相关信息即可。
> set_app_var timing_aocvm_enable_analysis true
设置了这个命令之后,在 u p d a t e t i m i n g update\ timing update timing步骤,会自动进行 G B A a o c v GBA\ aocv GBA aocv的 t i m i n g u p d a t e timing\ update timing update。
> read_aocvm xxx.aocvm
这个就是 l i b lib lib相关的读入了,只有读入了才会有相关的二维查找表。
这两个就是主要的 A O C V AOCV AOCV读入的必不可少的内容。当我们搞完之后如何查看我们的 A O C V AOCV AOCV的设置呢?可以通过:
> report_aocvm 会打印出被aocvm annotated的cell的数量
> report_aocvm [get_timing_path -from FF1/CP -to FF2/D] -path_type full_clock -pba_mode path 会把相关的path的distance/launch depth/capture depth搞出来
> reportt_aocvm [get_timing_arc -from buf0/I to buf0/Z] 会把buf0相关的详细的aocvm信息打印出来
4. A t t e n t i o n s Attentions Attentions
- a o c v f i l e aocv\ file aocv file支持一维和二维查找表;
- 有很多相关的变量设置针对我们在实际计算时候如何考虑 d a t a / c l o c k d e p t h data /clock\ depth data/clock depth的内容,或者针对 c l o c k / d a t a clock/data clock/data设置 d e r a t e derate derate内容等等还是很复杂的不展开讨论,可自行研究;
- g u a r d − b a n d i n g guard-banding guard−banding是人为设定的和工艺无关的和 a o c v aocv aocv有关的影响因子,比如和 I R d r o p IR\ drop IR drop专门设定 m a r g i n margin margin等等。在设定了 g u a r d b a n d guardband guardband的影响因子之后,对于一条 a r c arc arc上的总的影响就是 F a o c v ∗ F g u a r d b a n d Faocv*Fguardband Faocv∗Fguardband。 g u a r d b a n d guardband guardband只对 a o c v aocv aocv的内容有影响,之外毫无影响;
set_timing_derate -aocvm_guardband -early 0.95
set_timing_derate -aocvm_guardband -late 1.05
- o c v ocv ocv和 a o c v aocv aocv之间的优先级是有一些规定的,感兴趣的可以自己研究。可以通过控制某些变量让 o c v ocv ocv的设置或者 a o c v aocv aocv的设置无效。如果 o c v ocv ocv和 a o c v aocv aocv都想用到,那么可以通过在命令中增加
-increment
命令,使得 d e r a t e derate derate可以叠加。比如本来 a o c v aocv aocv和 g u a r d b a n d guard band guardband计算之后buf0
的late derate
为 1.05 1.05 1.05,early
为 0.95 0.95 0.95,那么加上如下命令,最终late
为 1.08 1.08 1.08,early
为 0.92 0.92 0.92;
set_timing_aocvm_enable_analysis true 设置了aocv
set_timing_derate -increment -late 0.03 [get_cells buf0]
set_timing_derate -increment -early -0.03 [get_cells buf0]
这篇关于SignOff Criteria——AOCV(Advanced OCV) introduction的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!