【转】后端基础概念:各种OCV一网打尽

2023-10-12 01:59
文章标签 基础 概念 一网打尽 ocv

本文主要是介绍【转】后端基础概念:各种OCV一网打尽,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

该死,竟然不让我创建专栏了!!!

学习一下前辈的后端知识,原文链接:https://zhuanlan.zhihu.com/p/40293737

一、前言-什么是OCV?

还在烦恼IC设计中的OCV、AOCV、POCV、SOCV和LVF傻傻分不清?今天我们就来逐个谈谈它们究竟是什么东西。

芯片在实际生产中,同一片晶圆上的不同区域的芯片,因为各种外部条件和生产条件的变化(variation)

比如:工艺(Process),电压(Voltage),温度(Temperature)等,可能会产生不同的误差从而**导致同一块晶圆上某些区域上的芯片里的晶体管整体速度变快或变慢,**因此有了corner的概念。

而与此同时,在同一块芯片上的不同区域,也会因为上述因素而有进一步的差异(variation),因此产生了OCV (On Chip Variation)的概念。

在这里插入图片描述
在设计中引入OCV的目的在于从设计角度考虑芯片在实际生产中可能出现的各种差异(variation),从而适度增加设计余量(margin),减少不必要的设计悲观量(pessimism)。那么在实际中是如何将OCV带入design的呢?

二、在实际中是如何将OCV带入design的呢?

从OCV的概念出现至今,随着工艺的发展,OCV也经历了如下的一系列进化:

在这里插入图片描述
那么它们都是什么意思呢?在设计中又有什么不同呢?在详细解说之前我们先考虑以下一条timing path的setup分析:

1-timing path的setup分析

在这里插入图片描述
在理想情况下,我们假设所有cell和net在实际生产后其delay都和我们设计中通过库和rc寄生参数计算出来的数值完全一样,那么setup应满足如下条件(如此处有疑问请复习一下setup hold的概念):

在这里插入图片描述
然而,在实际生产中,由于各种variation可能会出现如下情况:

在这里插入图片描述
此时的setup分析变成了下面的样子:

在这里插入图片描述
在x, y, z都是正数的时候,只满足理想状况下setup的电路是不一定能够满足上述条件的。

这样就会导致实际生产出来的芯片有一定的概率不能满足需要的频率等条件,严重的甚至会导致芯片失效而降低良率。那么对此我们有什么解决办法呢?

三、OCV (On Chip Variation)

这是针对上述问题提出的第一个方法。它的基本理念是,对launch, capture和data line上的cell或者net加一个固定的derate数值,使得setup和hold等时序约束比理想状况更加悲观从而能够覆盖部分实际生产中所产生的variation。实际设计中的效果如下:

在这里插入图片描述
可以看到,对于launch clock,加上一个统一的大于1的derate值,就会在timing report中反映出来,相应的delay也会在原始值的基础上乘以这个derate值。

对于capture clock line,相应地就会加上一个小于1的derate来计算delay。通过这样的方法来让时序约束更加悲观,以此来覆盖生产中和实际应用中的各种variation,提高良率。

四、AOCV (Advanced On Chip Variation)

AOCV的概念之所以被提出来,是由于OCV存在以下缺点:在实际中的variation,绝少是一个统一的数值,而大概率是服从正态分布的。

以一条timing path的data line为例,可能并不是所有的cell都因为variation而变慢或变快,而是大部分variation较小,少量variation较大。

如果我们采用OCV的方式,就会引入不必要的悲观量使得设计更难收敛,同时可能增加不必要的面积和功耗。

在这里插入图片描述

针对这个问题,AOCV提出:对于一条path上,级数越多其variation分布越接近正态分布,因而这条path整体的variation也越小。在实际设计中,会根据一条line上cell的级数不同而设置不同的dereate值。

实现这中设置的方法,是通过一种AOCV table来查表决定。这种table文件的内容格式大致如下:
在这里插入图片描述

有些AOCV表是depth和distance而对应derate数值的二维查表,有些只是depth对应derate的一维查表,上述例子属于后者。

我们可以看出,级数(depth)越深,对应的derate越小。通过这种方式来剔除部分不必要的悲观量,使得设计在尽量覆盖实际情况的前提下更加容易收敛。

简而言之,OCV是由于芯片上因工艺(Process)、电压(Voltage)、温度(Temperature)而导致的各种误差而加入的余量,而AOCV在考虑到实际误差并非统一值的情况下将余量值变成cell级数的函数,从而减少一定的设计悲观量(Pessimism)。

今天我们继续谈谈它们的升级版:POCV和LVF。上次我们说过,实际中由于PVT (Process, Voltage, Temperature) 导致的variation并不是一个或几个固定的值,而是服从类似高斯分布的形态。因此,反映在cell的delay上亦如此:

在这里插入图片描述

五、POCV (Parametric On Chip Variation)

在这里插入图片描述
在这里插入图片描述
(这玩意不就是置信区间)

如果在.lib中提供了sigma的数值,则可以通过公式(1)算出,如果通过read_aocvm读取的POCV的参数文件(包含参数C),则可以通过公式(2)算出,这种通过给定的参数计算cell的OCV delay的方式就是’Parametric’的含义。(参数(量)的)

那么这和LVF和上面这些东西有什么关系呢?下面我们详细说说。

六、LVF(Liberty Variation Format)

从它的名字Liberty Variation Format我们可以看出LVF是一种和liberty库文件(.lib)有关的数据格式。我们知道一般情况下无论是AOCV或者POCV,都会有一个专门的文本文件通过特定的命令读取到工具中。

以PrimeTime为例,读取AOCV和POCV的命令如下:

read_aocvm $file_name

而除了这种方式之外,我们还有另外一种选择:将POCV的内容集成到类似于liberty文件中,如下图所示:

在这里插入图片描述
我们可以看出来,这种形式很像liberty文件中的delay查表。

在这里,POCV的coefficient同样是一个基于slew-load的表格。同时,LVF中也可以是基于distance的查表:

在这里插入图片描述

需要注意的是,在使用LVF的时候就不能通过read_aocvm读取专用的POCV文本。在PrimeTime中我们也可以通过如下方式report POCV的结果:

在这里插入图片描述
至此,关于OCV的话题我们就基本讲完了。在实际设计中虽然还有很多细节需要注意,但是就基本概念来讲,还是希望大家能够理解它们的差别。目前在尖端工艺中,POCV和LVF都在渐渐普及,如果有在做相关项目的童鞋,希望借此机会好好注意项目中是如何使用它们的,这将有助于我们深入理解它们的应用。

这篇关于【转】后端基础概念:各种OCV一网打尽的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!


原文地址:https://blog.csdn.net/weixin_45264425/article/details/130303180
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.chinasem.cn/article/192430

相关文章

安装centos8设置基础软件仓库时出错的解决方案

《安装centos8设置基础软件仓库时出错的解决方案》:本文主要介绍安装centos8设置基础软件仓库时出错的解决方案,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐... 目录安装Centos8设置基础软件仓库时出错版本 8版本 8.2.200android4版本 javas

Linux基础命令@grep、wc、管道符的使用详解

《Linux基础命令@grep、wc、管道符的使用详解》:本文主要介绍Linux基础命令@grep、wc、管道符的使用,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐... 目录grep概念语法作用演示一演示二演示三,带选项 -nwc概念语法作用wc,不带选项-c,统计字节数-

MySQL 事务的概念及ACID属性和使用详解

《MySQL事务的概念及ACID属性和使用详解》MySQL通过多线程实现存储工作,因此在并发访问场景中,事务确保了数据操作的一致性和可靠性,下面通过本文给大家介绍MySQL事务的概念及ACID属性和... 目录一、什么是事务二、事务的属性及使用2.1 事务的 ACID 属性2.2 为什么存在事务2.3 事务

python操作redis基础

《python操作redis基础》Redis(RemoteDictionaryServer)是一个开源的、基于内存的键值对(Key-Value)存储系统,它通常用作数据库、缓存和消息代理,这篇文章... 目录1. Redis 简介2. 前提条件3. 安装 python Redis 客户端库4. 连接到 Re

SpringBoot基础框架详解

《SpringBoot基础框架详解》SpringBoot开发目的是为了简化Spring应用的创建、运行、调试和部署等,使用SpringBoot可以不用或者只需要很少的Spring配置就可以让企业项目快... 目录SpringBoot基础 – 框架介绍1.SpringBoot介绍1.1 概述1.2 核心功能2

Spring Boot集成SLF4j从基础到高级实践(最新推荐)

《SpringBoot集成SLF4j从基础到高级实践(最新推荐)》SLF4j(SimpleLoggingFacadeforJava)是一个日志门面(Facade),不是具体的日志实现,这篇文章主要介... 目录一、日志框架概述与SLF4j简介1.1 为什么需要日志框架1.2 主流日志框架对比1.3 SLF4

Spring Boot集成Logback终极指南之从基础到高级配置实战指南

《SpringBoot集成Logback终极指南之从基础到高级配置实战指南》Logback是一个可靠、通用且快速的Java日志框架,作为Log4j的继承者,由Log4j创始人设计,:本文主要介绍... 目录一、Logback简介与Spring Boot集成基础1.1 Logback是什么?1.2 Sprin

MySQL复合查询从基础到多表关联与高级技巧全解析

《MySQL复合查询从基础到多表关联与高级技巧全解析》本文主要讲解了在MySQL中的复合查询,下面是关于本文章所需要数据的建表语句,感兴趣的朋友跟随小编一起看看吧... 目录前言:1.基本查询回顾:1.1.查询工资高于500或岗位为MANAGER的雇员,同时还要满足他们的姓名首字母为大写的J1.2.按照部门

Android Mainline基础简介

《AndroidMainline基础简介》AndroidMainline是通过模块化更新Android核心组件的框架,可能提高安全性,本文给大家介绍AndroidMainline基础简介,感兴趣的朋... 目录关键要点什么是 android Mainline?Android Mainline 的工作原理关键

Python 迭代器和生成器概念及场景分析

《Python迭代器和生成器概念及场景分析》yield是Python中实现惰性计算和协程的核心工具,结合send()、throw()、close()等方法,能够构建高效、灵活的数据流和控制流模型,这... 目录迭代器的介绍自定义迭代器省略的迭代器生产器的介绍yield的普通用法yield的高级用法yidle