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