?
了解完仿真器的特點(diǎn),你也就明白了做 Model、想“洞見”所需要的“時(shí)間”和“精度”怎么辦呢?想要時(shí)間上快快快,就盡量的向 Digital 仿真器靠攏;想讓精度上準(zhǔn)準(zhǔn)準(zhǔn),就盡量的向 Analog 靠攏。做 Model,就是永遠(yuǎn)在做兩件事情:做加法、做減法。做不同的加減法,就得到不同的 Model 級別。由于大部分 Analog 出身的人,最熟悉不過的就是 Schematic 了,所以對于一個(gè) ADV 而言,對 Schematic 的加法,可以得到:Critical Part Model;BA Model。對 Schematic 的減法,可以得到:VerilogA;VerilogAMS;Real Valued Model(RVM);Verilog;Reference Model 等。下文將分級介紹。
Schematic
Schematic,也就是通過工藝直接給的 PDK,利用現(xiàn)在 EDA 工具,直接仿真,這對于 Design 而言,基本上狹義而言就就沒人說它是 Model。但是它本質(zhì)也是一種 Model,只不過 Process/EDA 等人已經(jīng)把環(huán)境和數(shù)據(jù)妥妥得給你設(shè)置好了,像傻瓜照相機(jī)一樣,你不用管三七二十一,直接用就行了。這個(gè) Schematic 不需要耗費(fèi)任何額外的經(jīng)歷,它是生活必需品。Layout 就指望著這玩意干活呢,DV 也指望著這玩意 Verification 呢。所以如上圖所示,劃分 Model 等級的時(shí)候,也特意把它作為 Golden 標(biāo)準(zhǔn),其仿真速度也設(shè)置為 1x。
2.1 對 Schematic 的加法
問題是 PDK 總是能 cover 到我們想要的么?什么情況下,我們應(yīng)該給這個(gè)自動的傻瓜式的 Schematic Model 做做加法呢?
Critical Part Model
其實(shí)工藝提供的 PDK,也是一種 Model,只不過是一種 Fab 經(jīng)常驗(yàn)證、感覺比較精準(zhǔn)的 Model。當(dāng)電流太小的時(shí)候,PDK 曲線上給的數(shù)據(jù)還精準(zhǔn)么?記住 PDK 上給的東西,大部分時(shí)候也是根據(jù)大多數(shù)人常用的范圍、那里的數(shù)據(jù)是比較準(zhǔn)確的;但是過大、過小了偏,都可能導(dǎo)致 Model 和實(shí)際的 silicon 之間有很大的不吻合;因?yàn)槿缜懊娼榻B,Analog 要求處理的數(shù)據(jù)最好是連續(xù)的、光滑的;大大小小的電流、尺寸都照顧到,這該需要多么萬能的數(shù)學(xué)表達(dá)式啊?如果都搞得這么精準(zhǔn),仿真器會不會更是慢成翔呢?當(dāng)市場要求低功耗、你也在拼命的減小每條支路上面的電流的時(shí)候,千萬記得,當(dāng)你減小的太狠的時(shí)候,先去問問 PDK 當(dāng)年建立 Model 的時(shí)候,那些數(shù)據(jù)是不是真實(shí)的;會不會只是數(shù)學(xué)表達(dá)式自己的外推推斷(extrapolate)而得到的虛假數(shù)值而已。
當(dāng)管子太大、layout 走線太長的時(shí)候,PDK 上面單個(gè)管子的參數(shù)是不是就不能那么比例的擴(kuò)大了呢?所以就需要加入對大的管子,例如 powerFET 本身的走線電阻電容網(wǎng)絡(luò),對其人肉手工做 Model。
又例如,其實(shí)每個(gè) device 都是有噪聲的,Cadence 的仿真工具,也有這個(gè)功能:trans noise,ac noise。但是如果平時(shí)仿真,把 transnoise 功能打開(做個(gè)小廣告:transnoise 可以在仿真的時(shí)候設(shè)置什么時(shí)候 turn on,什么時(shí)候 turn off,以后有空本公眾號會介紹),那么仿真時(shí)間就蹭蹭的往上漲了。對于一些關(guān)鍵的、敏感的節(jié)點(diǎn),如果很在乎噪聲的影響,想快速的得到有噪聲影響之后的結(jié)果的話,可以再發(fā)揮人肉 Model 的作用,自己去用 VerilogA/VerilogAMS 等去寫一個(gè)隨機(jī)變化的噪聲源,那么就可以在不用打開 transnoise,不用大費(fèi) CPU 仿真時(shí)間的情況下,初步得到有 noise 時(shí)候芯片的表現(xiàn)了。
總之,就是當(dāng) PDK 提供的東西,已經(jīng)不能滿足你日益增長的 performance 的需求的時(shí)候,就要自己對于關(guān)鍵節(jié)點(diǎn)、自己在乎的信息“擼起袖子加油干”了,這就是所謂的 CriticalPart Model(這個(gè)詞語沒有看到哪里有專門介紹過,算是本人創(chuàng)造的哈)
?
BA Model
當(dāng) Layout 拿到手的時(shí)候,EDA 工具已經(jīng)有非常完善的 LVS,QRC 了,所以你可以不花費(fèi)太多力氣就能拿到提取了 R,C,RC 等寄生參數(shù)的 av_extracted view 了,所以做做后仿真(很多人也叫它 Back? Annotated simulation,BA sim)本身在設(shè)置上沒有多大的困難。不過本來就是仿真笨拙的 schematic 仿真,現(xiàn)在又加了這么多 R,C,會不會仿真就更是慢了呢?而 Layout 都出來的時(shí)候,項(xiàng)目正是催著要流片的火急火燎的時(shí)候,有啥好辦法不?當(dāng)然傳統(tǒng)的第一個(gè)方法就是 Subsystem 仿真了,把一些不重要的 block 換成 schematic,甚至 Model,只關(guān)心重要 block 的性能。另外,在提取 RC 的時(shí)候,把最小值設(shè)置的高一點(diǎn),否則太多的蝦兵蝦將,將 Analog 仿真器要解的矩陣增大好多,而實(shí)際影響不大。還有一點(diǎn)有意思的事情是,如果只提取 C,而不提取 R 的話,那么整個(gè)電路的仿真時(shí)間并不會增加多少。原因是 C 并沒有將電路仿真時(shí)候要求解的矩陣的信息增大。而如果提取了 R 的話,則大大的增加了求解矩陣的復(fù)雜程度,所以仿真時(shí)間長了很多。有一高手朋友特意給畫了圖,來解析這背后的原理:如果只有 C,A 節(jié)點(diǎn)依然是 A 節(jié)點(diǎn);如果提取了 R,A 得裂變成 A1,A2…瞬間環(huán)路就來了。有木有一種瞬間秒懂的感覺哈?
?
總之,做加法的目的,主要就是在于提高精度。這是高性能的模擬 IC、模擬 IC 占很大比重的混合 IC 所在乎的。這還是僅僅討論的芯片本身的做加法,如果再加上 Thermal Model, Package Model, Board Model,? Transmission Line Model 等,就更是精準(zhǔn)的實(shí)際 IC 應(yīng)用環(huán)境了,這也是大的話題了,這里不再贅述。
2.2 對 Schematic 的減法
顯然對 Schematic 做加法的弊端就在于其速度。如果關(guān)心速度,關(guān)心時(shí)間,就需要做減法的 Model。這也是很多 SOC,包括 Digital 芯片的做法,一層層的做各種減法。
VerilogA
首先想的就是能不能先和工藝 PDK 脫離了關(guān)系,反正我就是用的電阻電容,它就是一堆電流電壓方程,我自己來寫就行了,不要仿真器費(fèi)力了;抑或是一些電流源,放大器 AMP,我自己知道他們是啥數(shù)學(xué)表達(dá)式,我來表達(dá)一下就行了;就不需要好多個(gè) Transistors 在那里搭啊搭的了,幾句電流電壓關(guān)系式就搞定了。所以 VerilogA 比 Schematic 還是要快的。
?“Analog”這個(gè)處理連續(xù)時(shí)間的行為(continuous-time behavior)的 Key Word 躍然紙上,這也是 Verilog 和 VerilogA 重大的不同了。VerilogA Model 和 VerilogAMS 相比,其好處也在于是純 Analog 仿真器,這樣子由于引入 digital 等、接口處理不好等導(dǎo)致的收斂性等較少,也算干凈。但是其缺點(diǎn)在于還是慢。另外就是懂 VerilogA 的工程師遠(yuǎn)遠(yuǎn)少于懂 Verilog 的工程師;即使不少模擬出身的人,精通 VerilogA 語言的也不多??磻T了 Verilog 的人,如果是去看純 VerilogA 寫的東西,當(dāng) Control 等信號太多的時(shí)候,有時(shí)候會覺得 VerilogA 太啰嗦。
VerilogAMS
盡管 VerilogA 已經(jīng)走上了語言的道路,但是利用的還是純 Spice 的模擬仿真器,還是前面介紹的純模擬仿真器的天然劣勢,一步三回頭的矩陣求解作風(fēng),是很多控制信號、高頻 Switching 信號所不 Care 的;但是這些控制信號又給 Analog 仿真器增加了好多負(fù)擔(dān),Analog 最討厭高頻亂動的信號了,尤其是方波,連續(xù)性還差,出力不討好。既然 Analog 看不慣高頻亂動信號、控制信號,而控制信號、高頻信號又不喜歡 Analog,那就分家吧。所以 AMS 橫空出世,誰不喜歡 Analog 仿真器,就都到我們 Digital 家里去吧。于是乎,很多高速 Switching 信號、控制信號、trim 信號等,屁顛屁顛的就被 Model 帶走了。想寫 Model 的人,終于知道帶誰玩了:首當(dāng)其沖的就是這些很占用 Analog 仿真器精力又出力不討好的東西們。于是乎,一些 cross,above 等 Key Word,聯(lián)合著 Analog 里面的 transition,timer 等 KeyWord,把這 A-2-D,D-2-A 的事情做了。我這里說的簡單,其實(shí)里面細(xì)節(jié)非常多。我們公眾號會在以后挑選一些重要技巧來詳細(xì)講解。
為了能夠把 Analog 和 digital 仿真器聯(lián)系在一起,仿真器在背后也是默默做了大量工作的,這就是 Mix-signal 的仿真器了;其中重要一項(xiàng)就是 Connect? Module??傊?,引入兩個(gè)仿真器,好處是大大的,同時(shí)卻也提高了做 Model 人的經(jīng)驗(yàn)要求。Model 想建立好,還是非常需要經(jīng)驗(yàn)的。手生的人,即使建立的 Model,可能已經(jīng)把精度 accuracy 消減了很多、只是功能描述,但是如果它和仿真器契合度太低,那么它可能就并不會真正的提高多少速度,即使它精度已經(jīng)下降了很多。甚至有的時(shí)候,A 到 D, D 到 A,寫的不好的話,相互纏繞,還會給仿真器帶來不收斂問題。所以想學(xué)習(xí)做一個(gè)好的 Model 很有必要,一個(gè)不好的 Model 甚至不如不做,一些項(xiàng)目在緊張的時(shí)候,可能不做 Model;也是有其道理的。做 Model 的能力,也是需要培養(yǎng)的。一旦培養(yǎng)好了,力大無窮。
總之呢,這些付出是值得的。因?yàn)?VerilogAMS 寫好的話,速度嗖嗖提高個(gè)上百倍那都不是夢,那都不是事兒(背景音樂:天空飄來五個(gè)字,那都不是事兒。。。)
?
Real Valued Model(RVM)
激進(jìn)的人要求的更多,能不能再快點(diǎn),再快點(diǎn)?把那些殘留的 Analog 信號也干掉,但是同時(shí)也不要光禿禿的給我只留下“0,1,x,z”的 digital 信號。一個(gè)非常重要的東西,RealValued Model 就是解決這些人的夢想的。老前輩們制造出來了”wreal”的物種,來專門解決這個(gè)問題(嚴(yán)格意義 / 更全面的說,VHDL 和 SystemVerilog 中的 real,也是解決這個(gè)問題的)。Wreal 是一個(gè)很好的東西,很有創(chuàng)意,很值得探討。下篇就詳細(xì)講講 Wreal 的故事。
Real value Model 是一個(gè)非常重要的突破,因?yàn)樗K于成功拋棄了 Spice,它將 Analog 信號用離散的 real 數(shù)值來代替了。于是乎不像 VerilogAMS 里面有太多的交互,它直接在 Digital 的領(lǐng)域里面自由奔跑了,下一個(gè)數(shù)值僅僅依靠當(dāng)前的就行了,對光滑性、連續(xù)性要求大大降低,那速度能不快么?想不快都不行。
Verilog
這玩意就不用詳細(xì)說了,很多人都懂。所以很多 Cadence 等業(yè)界 Model 培訓(xùn)教材,都拿它開涮,作為學(xué)習(xí)初始章節(jié)。我本著不讓大家“一上來就沒有睡著”的認(rèn)真負(fù)責(zé)態(tài)度,果斷把它放到這大后面了。
Reference Model
其實(shí)尤其對于模擬 ICer,了解到硬件描述語言 Verilog 已經(jīng)算挺夠的了,因?yàn)樵酵厦婢透?Transistor 啥的相關(guān)性小了(所以上面圖片也就到 Verilog 結(jié)束了)。但是其實(shí)做數(shù)字的、尤其大規(guī)模數(shù)字的,對 Verilog 形成的 Model,也依然存在不滿意度。還慢,還不夠友好到讓軟件工程師一下子就看懂。如何打通軟件和硬件之間的聯(lián)系?
蘋果曾經(jīng)被記者點(diǎn)名稱贊過自己是一個(gè)“能夠?qū)④浻布昝澜Y(jié)合的公司”,蘋果本身很重視 IC 研發(fā);“安卓的 OEM 廠商們可以‘復(fù)制’出指紋傳感器或者是 3D Touch 機(jī)制,但他們無法復(fù)制蘋果對底層芯片的把控能力?!弊屢粋€(gè)軟件工程師去懂硬件描述語言,顯然太痛苦了。但是如果每次都是硬件生產(chǎn)完了,再看軟件,顯然在這個(gè)快速的時(shí)代有些笨拙。
顯然用更高級的語言來對 Verilog 進(jìn)行再抽象就很有必要。很多驗(yàn)證工程師,尤其熟悉 UVM(Universal Verification Methodology)的,搞出來的 Reference Model,或者系統(tǒng)工程師的 virtual prototype 或者算法(algorithm)模型 Model 就是進(jìn)一步的做減法而得到的 Model。System Verilog,System C,總是有各種給力的語言來支持你的需求的。這個(gè) Model 硬件工程師輕松看懂,軟件工程師也能看懂,很好的又實(shí)現(xiàn)了一次跨界連接。軟件工程師也就不用再等硬件了、兩者都可以很 happy 的同時(shí)開工了,在研發(fā)早期、Silicon 出來之前,就能一起看看是不是能達(dá)成大 boss 布置的宏偉愿景了:例如手機(jī)更省電、手機(jī)更快,快的讓你飛起來(沒有給 VIVO 做廣告啊。。。)
以上就是 Model 做減法的東西,VerilogA, VerilogAMS,RVM, Verilog,Reference Model,一步步脫離 Analog,一步步走進(jìn) Digital,甚至脫離硬件飛向軟件。這就是 Model 做減法的魔力,火箭做起來,速度飛起來;當(dāng)然也是以精度一步步掉血為犧牲代價(jià)的。
?
總之,想到 Model 就兩件事情,做加法,做減法。想讓 Model 準(zhǔn),就做加法,模擬各種真實(shí)的環(huán)境和存在;甚至 OverModel,模擬得比實(shí)際環(huán)境更惡劣點(diǎn)。想讓 Model 快,就不停的做減法,向數(shù)字靠攏,像更抽象靠攏。總結(jié)下剛才介紹的各個(gè) Model 級別,如下表所示:
?
與非網(wǎng)原創(chuàng)內(nèi)容,不經(jīng)允許,不得轉(zhuǎn)載!
系列匯總:
之一:談模擬混合信號設(shè)計(jì)驗(yàn)證?先從這個(gè)職位說起吧!