?
除了剛才介紹的 Model 的級(jí)別,還有一個(gè)非常另外的一種思路,“TableModel”的存在,它有點(diǎn)類似于大數(shù)據(jù)的概念。傳統(tǒng)的 Model,尤其需要用 Analog 仿真器的 Model,一般都先是根據(jù)器件的物理特性做的參數(shù),有物理的概念在里面,還要考慮高階效應(yīng),更要考慮 Model 的數(shù)學(xué)表達(dá)式的連續(xù)性和光滑性、使得盡量少的出現(xiàn) Convergence 的問題。所以有時(shí)候和 Silicon 的吻合程度就不一定那么高。
而 Table Model 呢?我才不去想那些亂七八糟的各種物理學(xué)特性呢,我直接把 Silicon 測試出來的數(shù)據(jù)都列舉出來,建立一個(gè)數(shù)據(jù),你在什么樣的溫度、電壓下有什么 Silicon 數(shù)值表現(xiàn),我就直接寫到表格里面;到時(shí)候仿真器用的時(shí)候直接查表就行了?;蛘呶也挪?Care 你電路是怎么用 Transistor 大器來,也不管你是一個(gè)比較器,還是一個(gè) Amp,我只關(guān)心你輸入什么值,能輸出來什么值就行了;至于他們之間的數(shù)學(xué)表達(dá)式關(guān)系,你以前是可以用 VerilogA、VerilogAMS 寫,而在我這里,你不用想他們的數(shù)學(xué)表達(dá)式了,我不在乎!我有表,一表在手,有 input 有 output。
看看 Table Model 的表現(xiàn),你是不是想起來一本書?那就是《大數(shù)據(jù)時(shí)代》,它的作者舍恩伯格就曾經(jīng)指出過一條有意思的理論,那就是在當(dāng)今信息和數(shù)據(jù)極大豐富的時(shí)代,咱們?cè)谥鸩椒艞墝?duì)因果關(guān)系的過分渴求,取而代之去關(guān)注“相關(guān)關(guān)系”;也就是說不需要知道“為什么”,而是強(qiáng)調(diào)知道“是什么”。不去看量子力學(xué)的各種效應(yīng),不去想 MOS FET,電容電阻的物理特性,只是根據(jù)實(shí)際測試到的 silicon 的數(shù)值,直接做一個(gè)數(shù)據(jù)庫,當(dāng)外界加什么電壓、有什么溫度時(shí)候,就來什么對(duì)應(yīng)的輸出電流等。這就類似于大數(shù)據(jù)的概念,不關(guān)心為什么,只在乎是什么。用互聯(lián)網(wǎng)的里面的熱詞,來理解半導(dǎo)體行業(yè),我自己寫出來的時(shí)候也是醉了。
當(dāng)然 Table 不可能窮盡所有的數(shù)據(jù),所以對(duì)于沒有在 table 里面的數(shù)據(jù),仿真器需要插入數(shù)值(interpolate)或者外推推斷數(shù)值(extrapolate) ,這也是一個(gè)技術(shù)活,我們以后有空可以講講??傊?,TableModel 可以做的和實(shí)際的 silicon 測試出來的數(shù)據(jù)一模一樣了;不過它也有短板,那就是連續(xù)性和光滑性,畢竟它是分離的數(shù)據(jù)。對(duì)于 Digital 自然是喜歡的,Analog 仿真器還是需要處理。
4.Model 前一定要 plan!plan!plan! ?
花了這么大的篇幅介紹完了 Model 的種類、讓大家對(duì) Model 的花樣心中有數(shù)之后,我再回過頭來強(qiáng)調(diào)一件事情,那就是做 Model 一定要 Plan!好多 Model 的教材,都會(huì)把 Plan 作為第一章節(jié)的頭等重要事情強(qiáng)調(diào)一遍,可見其是多么重要。而我把 Plan 放在這里,就像是你去商店買手機(jī),我先給你介紹完蘋果、華為、小米的各種好壞處,讓你有一個(gè)大致了解之后,再去真正想你所關(guān)心的是什么;也就是你做 Model 到底想“洞見”什么。這也是戰(zhàn)略性的事情,要想,想清楚。
做 Model 前一定要 plan!plan!plan!? 重要事情說三遍。Plan 這種事情,說起來很容易,大家也大概知道是什么意思。但是這個(gè)東西又有時(shí)候比較虛,你學(xué)習(xí)了一句語法怎么寫,然后你盡快應(yīng)用到了實(shí)際中,這種療程短、見效快,所以喜聞樂見。但是 plan 呢,你讀了 plan 的大致內(nèi)容,Cadence、老板等也教了你一些方法,但是這些都是療程長、見效慢的東西,沒有日積月累,很難突破。但是這種就像是電腦的操作系統(tǒng),在最底層,平時(shí)看起來最不起眼,但是這種東西一旦升級(jí)好了,就是融會(huì)貫通,就是“質(zhì)”的飛躍。
Model 是有好多好處,把仿真速度提高、把精度提高、可移植性(Portability)好、能夠在項(xiàng)目初始階段就做整體仿真、能讓數(shù)字模擬工程師結(jié)合起來,讓軟硬件工程師結(jié)合起來…問題是你最關(guān)心的是什么?哪個(gè)級(jí)別的 Model 是你所需要的,是你的 DVPlan 里面最最在乎的?
包括整個(gè) IC,在做設(shè)計(jì)的時(shí)候,要做好 Block 劃分;非常復(fù)雜的 blocks 要在細(xì)分可以 manageable 的 sub-blocks;如果一個(gè) Block 準(zhǔn)備用 Model 代替了,那么這個(gè) Model 下面,就基本不要再包含電路了。如果一個(gè) Block 的 transistor level 的各種 detailed 的信息都很重要,那就不用 Model 了,直接用 schematic 好了;如果做 Model,一定要搞清楚為了啥。一定要想清楚 DV 在這里是 Test 什么的,Model 到能夠 Test 就行了。
?
Model 是否需要統(tǒng)一的規(guī)范?因?yàn)槟憬裉熳鰝€(gè) Model,明天還想著 Reuse 呢。但是一旦想統(tǒng)一規(guī)范,可能就需要花費(fèi)更長的時(shí)間和精力,你們項(xiàng)目允許么?長遠(yuǎn)看值得付出不?哪些 Model 不要弄?例如對(duì)于非線性的 Non-linear 可能要考慮下是否可以轉(zhuǎn)化為線性的。對(duì)只有弱相關(guān)的東西(weak dependencies)可以近似成一個(gè)常數(shù);對(duì)于 delay,除非對(duì) Function 比較重要,否則一般都不需要 Model。如果進(jìn)入一個(gè) Model 的 inputcontrol/signal 不符合 Model 里面的預(yù)期,是否就要有 assertion,就要報(bào)錯(cuò)。
總之,哪些要 Model,哪些不 Model,Model 到什么級(jí)別,Model 和 Design 的關(guān)系等等,都需要 Plan。下手吭哧吭哧具體干活前,把 Plan 想清楚,才能讓功夫花在刀刃上。我挺喜歡獵豹傅盛有篇文章里面提到的一個(gè)圖(見下),做事情把想法想清楚,Plan 做徹底,那么在相同的時(shí)間內(nèi),行動(dòng)的斜率就高、收獲就大。所以做 Model 前一定要 Plan!
?
5. 對(duì)寫出來的 Model“不”做驗(yàn)證,就是耍流氓
只寫出來 Model,而不對(duì) Mode 進(jìn)行驗(yàn)證,這就是耍流氓。就像只生孩子、不養(yǎng)孩子,這就是耍流氓。
對(duì) Model 的驗(yàn)證,包括利用相同的 TestBench,對(duì)于 Model 和 Schematic 出來的結(jié)果的驗(yàn)證。驗(yàn)證 Model 和電路類似,有 Block 級(jí) Schematic 和 Model 的吻合,還有 Sub-System 能夠能通暢的利用 Model 仿真、以及 Model 和 Sub-System 的吻合。更有 Model 和整個(gè) Top 的吻合度。當(dāng)對(duì) Schematic 做各種加法、形成 Model 的時(shí)候,其實(shí)在項(xiàng)目中,很多時(shí)候是在流片回來之后,為了和測試吻合,把 Schematic 上面加各種東西而形成的 Model。
6. Model EDA 方面,Cadence 有 SMG 和 amsDmV 工具
Cadence 確實(shí)給了很多 Model 的例子。如果大家用的是 Cadence 家給的工具的話,以下路徑就有例子:
/ICXXX/tools/dfII/samples/artist/bmslib
SMG
Cadence 為了能夠讓喜歡”Graphical”的 Analog 工程師寫代碼方便點(diǎn),開發(fā)了一個(gè) Schematic Model Generator 的工具,在 Virtuoso 里面:CIW--> tools --> Behavior Modeling --> Schematic Model Generator。
它的主要好處是把一些 pin,你自己定義好了,他們給你最規(guī)范的 code;另外就是提供了一些很多內(nèi)置的 Model 的小模塊 BBT(BuildingBlock Text),其實(shí)就也是一些 example 的 code,然后讓你自己根據(jù)自己的 schematic,利用這些 BBT 積木,去搭建城堡。
不過,注意,請(qǐng)注意,工具目前還是不能完全支持一個(gè)“schematic 進(jìn)、code 出”的 So 智能的活兒;參見 Cadence 給的下圖。ADVer,你們做 Model 的工作,暫時(shí)計(jì)算機(jī)還是代替不了的。
amsDmv
前面說過了,不做驗(yàn)證的 Model 上來就用,這就是耍流氓。所以做 Model,肯定要和 Schematic 去吻合。用相同的 TB 打打,看看關(guān)心的結(jié)果是否符合預(yù)期。問題是很多 Schematic 經(jīng)常變,Model 本來做完了,可以伸伸懶腰打打哈欠,大功告成了;結(jié)果 Designer 又變化東西了;怎么讓這種反復(fù)迭代輕松點(diǎn)?Cadence 又給了一個(gè)工具,叫 amsDmv(AMS Design and Model Validation):在 Virtuoso 里面:CIW--> tools --> Behavior Modeling --> Model Validation。
它可以利用 ADE 的結(jié)果,去比較你關(guān)心的 schematic 和 Model 仿真的波形,可以設(shè)置兩者結(jié)果比較的精度 tolerance,以及踢掉不想比較的東西(exclude)等;更可以做最基本的 Pincheck 等。
以上兩個(gè) Tool,調(diào)查周圍朋友的結(jié)果是:用的人很少。Cadence 的一些培訓(xùn)教材也把它們標(biāo)志成 Optional 的章節(jié)。
小結(jié)
以上就是本次文章關(guān)于 Model 的整體概述。感謝朋友們對(duì)本文的建議和意見;歡迎更多公眾號(hào)朋友提供反饋(可惜我還木有被微信團(tuán)隊(duì)認(rèn)定為原創(chuàng)公眾號(hào)啊,所以只能消息留言了;微信公眾號(hào)背后的神秘團(tuán)隊(duì),請(qǐng)審核我是原創(chuàng)?。?。下期節(jié)目我們將深入一個(gè)技術(shù)細(xì)節(jié),談一個(gè)在 VerilogAMS 和 RVM Model 中,發(fā)揮著重要作用的一個(gè) KeyWord,叫 Wreal。
與非網(wǎng)原創(chuàng)內(nèi)容,不經(jīng)允許,不得轉(zhuǎn)載!
系列匯總:
之一:談模擬混合信號(hào)設(shè)計(jì)驗(yàn)證?先從這個(gè)職位說起吧!
之四:模擬混合驗(yàn)證如此重要,ADV 的前輩們也非等閑!
之五:Model 的本質(zhì)目標(biāo)就是“時(shí)間+精度”
?