這篇文章,主要是 Model 的概覽。做 Model 的本質(zhì)目的是為了什么?想達(dá)到此目的的幕后推手是誰?做 Model 最核心的思想是什么;現(xiàn)在流行的 Model 都有哪些種類,可以分成幾個(gè)等級(jí)?和 Model 相關(guān)的、零散的、但是卻很有用的概念有哪些?現(xiàn)有 EDA 工具中有哪些和 Model 相關(guān)的產(chǎn)品?且 聽此文介紹。
如果去看大部分的介紹 Model 的書籍 /Paper/ 培訓(xùn)教材,都會(huì)從目前是 SOC 時(shí)代、Model 能大大提高仿真速度來作為背景介紹;我相信現(xiàn)在確實(shí)好多人都是在做 SOC,SOC 對于 Model 的需求遠(yuǎn)遠(yuǎn)大于純 Analog 的。但是作為一名 ADVer,一個(gè)以模擬出身的驗(yàn)證人,對于 Model,我有自己更個(gè)性的看法。
本篇文章主要是做 Model 的整體概述。首先介紹做 Model 的本質(zhì),繼而介紹控制它的仿真器的特點(diǎn),然后再介紹做 Model 的兩個(gè)方向:做加法和做減法;然后重點(diǎn)詳細(xì)講解 Model 的等級(jí)。隨后簡單介紹一個(gè)“另類”的 Table Model。然后強(qiáng)調(diào)做 Model 的戰(zhàn)略性問題 ---Plan 的重要性。另外簡單介紹下做完 Model 要驗(yàn)證;在 Model 的產(chǎn)生和驗(yàn)證方面的現(xiàn)有 Cadence 工具。下表更直接點(diǎn):其中前兩個(gè)章節(jié)為本文重點(diǎn)章節(jié)。
?
了解完 Model 的整體概述之后,以后會(huì)陸續(xù)推出具體技術(shù)細(xì)節(jié)。例如做 Model 的基本功:各種語言的(主要是 VerilogAMS)的寫作技巧;做 Model 本身的技巧,注意事項(xiàng),和 Model 的實(shí)例等等。
以下進(jìn)入主題。
1. Model 的本質(zhì)目的
雷軍雷布斯曾經(jīng)說過“不要用戰(zhàn)術(shù)上的勤奮掩蓋戰(zhàn)略上的懶惰”。做任何一件事情,搞清楚戰(zhàn)略、想清楚目的,至關(guān)重要。那么問題來了,我們現(xiàn)在這里討論做 Model,那做 Model 的本質(zhì)目的是什么呢?做 Model 的本質(zhì)目的是為了“洞見”。所謂的洞見,就是明察,清楚的看到、而且提前看到,不要做馬后炮的事情?!懊鞑臁⑶宄?,這就是對“精度”的要求;“提前”就是對時(shí)間的要求。所以做 Model 這件事情的本質(zhì)目標(biāo)就是“時(shí)間+精度”?!皶r(shí)間、精度”是其永遠(yuǎn)逃脫不了的兩個(gè)話題。
那問題又來了,“時(shí)間”和“精度”,到底是誰在控制呢?顯然是仿真器。所以搞清楚仿真器這玩意,才是基本功。就像我們高中回答所有政治題,只要有一句“生產(chǎn)力決定生產(chǎn)關(guān)系,生產(chǎn)關(guān)系反作用生產(chǎn)力”,那么肯定能得分一樣。金句,最底層的原理,其實(shí)很簡單,搞清楚之后,通常事半功倍。
仿真器
在 IC 設(shè)計(jì)的 EDA 領(lǐng)域,最重要的仿真器,其實(shí)無非兩種:數(shù)字 Digital 和模擬 Analog,當(dāng)然現(xiàn)在混合仿真器 Mix-Signal 也非常重要。他們是什么,之間有什么差別呢?仿真器其實(shí)也就是干兩件事情,一個(gè)是時(shí)間,一個(gè)是數(shù)值。就是你在什么樣的時(shí)間,會(huì)有什么樣的數(shù)值(什么樣的表現(xiàn));只是對于數(shù)字和模擬,它是完全不同的處理原理,這主要是因?yàn)樗麄儽澈笠獾姆匠探M是完全不同的。
Digital 仿真器
它是 Event driven 的,它解的是邏輯方程(logical expression),而且人家是順序執(zhí)行(sequential manner based),有很清晰的信號(hào)流和事件發(fā)生順序(well-definedscheme of signal flow and events),不會(huì)回頭計(jì)算,不做后悔的事情。所以它比較快,時(shí)間和數(shù)值都是離散的。也不容易出現(xiàn)不收斂性的問題。它甚至可以看完代碼之后,大致先做個(gè)心中有數(shù),知道有哪些 Event 要發(fā)生,然后等真正到達(dá)那個(gè)時(shí)間點(diǎn)附近時(shí)候,再看看有沒有和其他事情抵消掉,抵消掉了,就不用發(fā)生了;抵消不掉了再發(fā)生(腦補(bǔ)一下我們小時(shí)候計(jì)算一些數(shù)學(xué)題合并同類項(xiàng)的感覺)。唯一的問題就是它只是和邏輯方程打交道,而現(xiàn)實(shí)世界、實(shí)際 Transistor 哪里是非黑即白的 0,1 世界,所以它的精度之類的天然的低;不過只要把各種協(xié)議和糾錯(cuò)功能做好,也倒是不影響它的出錯(cuò)。很多大的 ASIC, SOC 等,尤其是大規(guī)模集成的 IC,都是 Digital-On-Top,妥妥地必須用數(shù)字仿真器,快是它最重要的特性。
Analog 仿真器
它須解決整個(gè) analog 大環(huán)境、大矩陣( system matrix),而且是在每一個(gè) simulationstep,它都得站在全局觀的角度,來看各種需求是否被滿足。人家可是真正的信號(hào)與系統(tǒng);所謂的信號(hào),就是電壓和電流;模擬仿真器都考慮。KCL,KVL,節(jié)點(diǎn)電流為 0,回路電壓為 0,這都是讓他們用簡單邏輯方程理不清楚的事情。大大的矩陣必須建立起來才能 Hold 住好多的關(guān)系。任何一個(gè) analog 里面的元素 / 器件(element)對其他原件都有直接影響(instantaneous influence);正所謂的“牽一發(fā)而動(dòng)全身”;當(dāng)然也有不少 EDA 工具對較大的 Analog 電路做一下分割(Partition),以減小矩陣的規(guī)模。Analog 仿真器每想往下走一步,都要先猜解一下,先給個(gè)結(jié)果的“小樣”(類似我們平時(shí)買東西的送的小樣兒),給了這個(gè)小樣兒之后,再返回頭看看是不是滿足 tolerance 等各種大 boss 設(shè)置的種種條件門檻和要求;符合了,算是通過了一小步;如果沒有符合,那再打回來、再改結(jié)果,再測試,再看看滿足與否,直到最終通過各種要求;所以有時(shí)候這種迭代就把仿真器搞瘋掉了,直接告訴你有 convergence issue,我收斂不住了,**了,你看著辦吧。
在 Analog 里面,就是這樣子的反復(fù)迭代。而且時(shí)間和數(shù)值都是連續(xù)的,而且 A 影響 B,B 反過來影響 A,一步三回頭,所以 Analog 仿真就會(huì)很慢,不過也會(huì)比較精確。所以很多高性能的 AnalogIC,都離不開 Analog 仿真器。
混合仿真器它就是采集了兩者之長,對性能不太 Care 的部分,我就是用邏輯方程來求解,我只對 AnalogPart 做矩陣計(jì)算,這樣子就取得了速度和精度兩項(xiàng)的這種。當(dāng)然混合仿真器需要建立自己的 Connection Module,把數(shù)字和模擬信號(hào)之間的橋梁嫁接好,這樣子才能 AD,DA 自由流通,暢通無阻的存活在整顆 IC 上面。
下表是以上三種仿真器的總結(jié)表格:
?
?
與非網(wǎng)原創(chuàng)內(nèi)容,不經(jīng)允許,不得轉(zhuǎn)載!
系列匯總:
之一:談模擬混合信號(hào)設(shè)計(jì)驗(yàn)證?先從這個(gè)職位說起吧!
之四:模擬混合驗(yàn)證如此重要,ADV 的前輩們也非等閑!
?