数字IC后端知识扫盲——OCV(上)
還在煩惱IC設計中的OCV, AOCV, POCV, SOCV 和 LVF傻傻分不清?今天我們就來逐個探探它們究竟是什么東西。
芯片在實際生產中,同一片晶圓上的不同區域的芯片,因為各種外部條件和生產條件的變化(variation)比如:工藝*(process),電壓(Voltage),溫度(Temperature),可能會產生不同的誤差從而導致同一塊晶圓上某些區域上的芯片里的晶體管整體速度變快或變慢,因此有了corner的概念,與此同時,在同一塊芯片上的不同區域,也會因為上述因素而有進一步的差異(variation),因此產生了OCV(On chip Variation)的概念。
在設計中引入OCV的目的在于從設計角度考慮芯片在實際生產中可能出現的各種差異(variation)從而適度增加設計裕量(margin),減少不必要的設計悲觀量(permission)那么在實際中是如何將OCV帶入design的呢?
從OCV的概念出現至今,隨著工藝的發展,OCV也經歷了如下的一系列進化:
那他們都是什么意思呢?在設計中又有什么不同呢?在詳細解說之前我們先考慮一下一條timing path的setup分析:
(這里多說一句,所有IC設計的timing 問題都離不開setup 或者 hold分析,不能從本質上理解建立保持時間的原理是做不好IC設計的)
理想情況下,我們假設所有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值。
對于captureclock 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的級數不同而設置不同的derate值,實現這種設置的方法是通過一種AOCV table來查表決定,這種table文件的內容格式大致如下:
可以看出對于不同的depth,有不同的table值。
有些AOCV表是depth和distance而對應derate數值的二維查找表,有些只是depth對應derate的一維查找表,上述例子屬于后者,我們可以看出,級數越深對應的derate越小,通過這種方法來提出部分不惜要的悲觀量,使得設計在盡量覆蓋實際情況的前提下更加容易收斂。
今天的OCV和AOCV就講到這里,下篇將介紹POCV和LVF的內容。
總結
以上是生活随笔為你收集整理的数字IC后端知识扫盲——OCV(上)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: qt html字体变红,QLineEdi
- 下一篇: B站季报图解:营收10.8亿同比增48%