前面一个介绍详细了ocv的使用原因以及使用方法,参考Signoff Criteria — ocv applied and results。
OCV一般是针对工艺节点在90nm以上的芯片制造,到了90nm一下,45nm/22nm等等,如果还用这种ocv的方法,直接在data path和clock path上增加统一的derate值,可能会增加signoff的悲观程度,并导致过度设计、降低设计性能和更长的设计周期。因此为了降低我们signoff时候ocv带来的悲观度,引入了更先进的ocv分析方法:AOCV/POCV。其实AOCV/POCV的引入,无非是在OCV的基础上,降低我们STA的悲观度,从而减少ECO的工作量。

1. Overview

AOCV (advanced ocv)通过使用考虑位置和被分析的每条路径的逻辑深度的可变降额因素,对影响时序的 IC 上的随机和系统变化进行建模。通过使用local derate值而不是global derate值,也就是data path和clock path不再是统一的一个derate,而是各个不同。通过这种方法降低悲观减少过多的设计余量并减少时序违规。
POCV(parametric ocv)的出现是因为AOCV的方法,根据逻辑深度进行设置依然是一种简单的方法,依然可能造成过于悲观。pocv是基于每一个cell进行单独的高斯分布的建模处理,cell 的derate不再受逻辑深度的影响。
如下图所示,为不同的ocv技术对应的STA的悲观程度。接下来讲比较详细的讨论AOCV和POCV

2. AOCV原理介绍

Advanced on chip variation,相比较于OCV来说,对于悲观度的去除很有效。相比较与ocv对于整个design中的lauch/capture path设置统一的derate值,aocv通过将cell derate值与cell的逻辑深度以及实际的位置结合起来进行derate值的设定。那么这种derate如何能够设置到具体的cell呢,其实是我们在跑STA时候会读入相关的aocv lib file,里面有专门对相关的cell进行的aocv derate值的描述。举例如下所示为3.0版本的一个INV的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

该部分是一个二维表格的描述,如果只有一维表格描述,一般就只有depth相关的内容,没有distance相关内容。那我们知道了相关的derate值如何查找表得到,可是这个查找表的输入两个值:depth和distance又是从何而来呢?接下来就要介绍两种aocv技术,GBA mode和PBA mode,其中两种mode对应的悲观度不同,对应的depth和distance 值不同,相应的结果也是不同的。

2.1 GBA-AOCV

2.1.1 首先关于depth:

基于GBA mode 的AOCV技术,关于depth的获取,如下图所示,拿buf0为例来讲,用GBA的方式获取buf0相关的path ,那么他的depth值就会有多个可能,比如作为data path时候,buf0到FF1有三个cell,因此depth为3,作为lauch path时候,buf0到FF2的D有两种可能5/6,取较小者,作为capture path时候,buf0到FF2的CP端口有四个cell,因此depth为4,那么buf0在报FF1到FF2的这条path时候,他会取几呢?答案是会取3。它会取GBAmode下抓取的所有的depth中的最小值。因为在上面的lib里面可以看到,depth越小,相应的derate值也越大。所以说GBA会取最悲观的数据进行derate设置。

2.1.2 其次关于distance:

无论是基于cell计算distance还是基于net计算distance,GBAmode下,总会选取整个GBAmode组里面最大的那个distance值作为我们GBA check时候的derate值的设置依据,因为在二维查找表总可以看出来的,distance越大,对应的derate也是越大的,举例越远意味着我们工艺制造过程中的差距可能越大。

2.2 PBA-AOCV

PBA mode其实是在GBA抓取的path group组里面进行更加细致的分析,不像GBA那么的悲观,但是相对来说用的run time就要更长了。

2.2.1 depth获取

关于PBA mode下的path获取,如下图所示,首先会去除一个common point,因为相同的common点,也就是同一个cell,在实际的特定的工作条件下的相关属性是一定的,不可能由于被分为lauch或者capture而改变,因此在STA path中会增加crpr的技术取消除common point的悲观性。言归正传,PBA的就是非常具体的path的分析了,如下图所示,为FF1到FF2的timing path,针对这条path,buf0作为common point点不用关注,而穿过FF1的path就只能被认为是lauch path,depth5/6不同对应不同的timing 报告。而capture path在经过约束的分析之后也只能作为capture path,因为它到l FF2的cp端口,不可能是data path,因此capture path的depth为3。可以看到PBA和GBA的区别,PBA具体到每一条真实的path,不会把一个group的path放在一起分析,而GBA是把一个group的path里面最差 的情况用到了所有的path中。因此PBA降低了悲观度。

2.2.1 distance获取

关于distance,PBA和GBA也是不同的,这个不同之处和depth的获取有类似的情况。如下图所示,pba针对的是一条具体的path,那么它的distance就是唯一的,每一个cell的distance也就是唯一的,而不像GBA中的选取这个group组中的最大的distance值去进行计算,因此来说PBA是降低了悲观度的。

3. AOCV使用

STA阶段如何使用AOCV,其实就是正常的需要的内容读入,参考Timing Check – Timing signoff env之后,设置aocv analysis的enable然后specify aocv相关信息即可。

> set_app_var timing_aocvm_enable_analysis true

设置了这个命令之后,在update timing步骤,会自动进行GBA aocv 的timing update

> read_aocvm xxx.aocvm

这个就是lib相关的读入了,只有读入了才会有相关的二维查找表。

这两个就是主要的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. 注意事项

  1. aocv file支持一维和二维查找表
  2. 有很多相关的变量设置针对我们在实际计算时候如何考虑data /clock depth的内容,或者针对clock/data设置derate内容等等还是很复杂的不展开讨论,可自行研究
  3. guard-banding是人为设定的和工艺无关的和aocv有关的影响因子,比如和IR drop/专门设定margin等等。在设定了guardband的影响因子之后,对于一条arc上的 总的影响就是Faocv*Fguardband。guardband只对aocv的内容有影响,之外毫无影响。

    set_timing_derate -aocvm_guardband -early 0.95
    set_timing_derate -aocvm_guardband -late 1.05

  4. ocv和aocv之间的优先级是有一些规定的,感兴趣 的可以自己研究。可以通过控制某些变量让ocv的设置或者aocv的设置无效。如果ocv和aocv都想用到,那么可以通过在命令中增加-increment命令,使得derate可以叠加。比如本来aocv和guard band计算之后buf0的late derate为1.05,early为0.95,那么加上如下命令,最终late为1.08,early为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]

就先到这这吧,下一章节介绍POCV

Signoff Criteria --- ocv/aocv/pocv之AOCV介绍相关推荐

  1. Signoff Criteria --- ocv/aocv/pocv之POCV介绍

    POCV (parametric on chip variation)## 本小节介绍pocv相关内容 1. Overview Process variation可以简单分成die-to-die和on ...

  2. Signoff Criteria --- ocv applied and results

    ocv ,全称on chip varation,是用于signoff过程中为了弥补工艺制造过程中的不稳定情况的技术. 1. Overview 1.1 what is ocv? on chip vara ...

  3. OCV、AOCV、POCV、LVF介绍

    芯片在生产过程中,由于外界条件和生产条件的变化,比如PVT,可能会产生不同的误差从而导致同一晶圆上不同区域上的芯片里的晶体管速度变快或者变慢,并因此产生corner概念. BCWC:即为best ca ...

  4. 【转】OCV、AOCV、POCV、LVF都有什么作用?

    一.前言 这一期我们来讨论一些名词,就是标题里满满当当的英文单词.当然,其中最核心也是最基本的,就是OCV.什么是OCV?它又有什么含义呢?或许后端的朋友们对它相对熟悉些. 某种意义上来说,芯片很脆弱 ...

  5. 片上偏差模式OCV,AOCV,SOCV

    文章目录 片上偏差模式OCV,AOCV,SOCV 一.片上偏差模式OCV,AOCV,SOCV 二.AOCV 三.SOCV 片上偏差模式OCV,AOCV,SOCV OCV:On Chip Variati ...

  6. 数字IC后端知识扫盲——OCV(上)

    还在烦恼IC设计中的OCV, AOCV, POCV, SOCV 和 LVF傻傻分不清?今天我们就来逐个探探它们究竟是什么东西. 芯片在实际生产中,同一片晶圆上的不同区域的芯片,因为各种外部条件和生产条 ...

  7. 静态时序分析-OCV和time derate

    文章目录 基础概念 分析模式 如何选取path? 建立时间的OCV分析 保持时间检查的OCV 基础概念 OCV(on-chip variation) 是指在同一个芯片上,由于制造工艺和环境等原因导致芯 ...

  8. VLSI Basic2——OCV

    PVT - Corner 是什么 芯片在生产过程中,由于外界条件和生产条件的变化,比如PVT,可能会产生不同的误差从而导致同一晶圆上不同区域上的芯片里的晶体管速度变快或者变慢,并因此产生corner概 ...

  9. Hibernate之Criteria查询

    Hibernate中提供了三种查询方式,分别为HQL.Criteria查询.本地化SQL查询,实际应用中,有很多人忽略了Criteria的用处,觉得不如另外两种贴近SQL方式便捷,实际则未必,很多情况 ...

最新文章

  1. 数据结构--树和二叉树
  2. ***入门基础知识(超全)
  3. Gigaset ME/pure/pro体验:就是这个德味
  4. java web批量下载_JAVAWEB批量文件下载器
  5. 爬虫练习:爬豆瓣读书的短评
  6. 浅谈数据库设计二三事
  7. AE “每用户订阅上的所有人SID 不存在”
  8. 基于微信小程序的记账系统
  9. matlab验证时域采样定理,时域采样定理
  10. Python爬虫 requests使用post请求发送文件
  11. java 接收 char字符型
  12. 怎么用计算机搜索文件,如何查找文件 巧用Win7快速查找文件
  13. 下载图片到指定文件夹
  14. [开心幽默]一对北京情侣是如何吵架的 !(暴笑)
  15. 批处理——提取SRT文字中的文字
  16. Win11怎么改系统语言?Win11系统语言简体改繁体的方法
  17. 计算机公式与函数的定义及两者的关系,excel(公式与函数).ppt
  18. 【FPGA】vivado Error:‘launch_simulation‘failed due to earlier errors.
  19. windows录屏html文件,windows怎么录屏带声音,简单高效的两种录制法
  20. 分治策略——输油管道问题

热门文章

  1. 深度强化学习——DQN算法原理
  2. .NET中XUnit和NUNIT对比
  3. Filco win10 蓝牙问题
  4. Qt6与OpenCV4.7教程1----Qt6.4与OpenCV4.7配置
  5. centos的删除与修复
  6. tinyproxy http代理服务
  7. 基于STM32的4位数码管模块驱动
  8. 聚类效果评价指标:MI, NMI, AMI(互信息,标准化互信息,调整互信息)
  9. html双击事件 jq,jQ双击事件用原生写的方法.html
  10. 【Android】ReactNative实现计算器