證與調(diào)試實(shí)戰(zhàn)指南)
搞電源設(shè)計那會兒我剛?cè)胄胁痪糜肔Tspice仿真一個BUCK電路效率算出來96%心里美滋滋覺得這板子一出來肯定是行業(yè)標(biāo)桿。結(jié)果樣機(jī)實(shí)測只有77%差了將近二十個點(diǎn)。我當(dāng)時第一個反應(yīng)是電感選小了、MOS管太熱、PCB走線有問題排查了大半個月最后才發(fā)現(xiàn)問題出在模型上——我用的是一個理想開關(guān)再加導(dǎo)通電阻開關(guān)損耗、死區(qū)期間的體二極管反向恢復(fù)、驅(qū)動損耗全都沒建模進(jìn)去。從那以后我算是明白了SPICE模型選不對仿真做得再漂亮也是自嗨。這篇內(nèi)容就是圍繞SPICE模型入門到精通這條主線來寫的。我會先講清楚SPICE模型在仿真器里到底是怎么工作的再說工程中最常用的幾種模型形態(tài)怎么選然后給出一套從器件手冊到可用模型的實(shí)操路徑接著聊模型驗(yàn)證、收斂性調(diào)試這些實(shí)際項目里繞不開的坑最后聊聊進(jìn)階方向——從會用模型到能寫模型。無論你是剛接觸仿真的在校學(xué)生還是已經(jīng)在用SPICE但經(jīng)常被仿真結(jié)果坑的工程師這篇內(nèi)容都值得你花半小時認(rèn)真看完。1. 先搞明白SPICE模型在仿真器里到底是個什么東西1.1 網(wǎng)表、模型、仿真器三者的分工很多人一打開SPICE類的軟件就往原理圖里拖器件仿真能跑通就完事但對背后發(fā)生的機(jī)制完全沒概念。實(shí)際上一次仿真包含三個層次的東西網(wǎng)表、模型、仿真器。網(wǎng)表描述的是電路長什么樣也就是哪些節(jié)點(diǎn)連了哪些器件。SPICE最早就是靠純文本網(wǎng)表來定義電路的* 簡單的RC低通濾波器 V1 IN 0 DC 5 R1 IN MID 1k C1 MID 0 1u .tran 0 10m .end這個網(wǎng)表只說了一件事電壓源接在IN和地之間電阻一端接IN一端接MID電容一端接MID一端接地。至于電阻的阻值隨溫度怎么變、電容的高頻寄生電感到底多大網(wǎng)表不管這些是模型的事。模型描述的是器件的行為規(guī)律。SPICE里的模型本質(zhì)上是一組數(shù)學(xué)方程加上一套參數(shù)方程描述器件端口的電壓電流關(guān)系參數(shù)決定這組方程的數(shù)值解。仿真器則是負(fù)責(zé)數(shù)值求解的工具。它拿到網(wǎng)表和模型之后會建立節(jié)點(diǎn)電壓方程組然后用牛頓-拉夫遜迭代法去求解這個非線性系統(tǒng)。理解到這一步你就明白了一個關(guān)鍵問題仿真不準(zhǔn)很多時候不是仿真器的鍋而是模型不夠真實(shí)。仿真器只是一個合格的數(shù)學(xué)計算器你給它什么模型它就算出什么結(jié)果。1.2 模型為什么是一堆方程參數(shù)拿最簡單的二極管來舉例。SPICE中一個二極管的模型可以寫成.model D1N4148 D (IS2.52n N1.752 RS0.568 CJO4p VJ0.6 M0.55 TT4.32n BV75 IBV5u)這行語句里的每一項都對應(yīng)一個物理含義。IS是飽和電流決定了正向?qū)▔航档拇笮是發(fā)射系數(shù)影響I-V曲線的斜率RS是串聯(lián)電阻決定了高電流下的壓降偏差CJO是零偏結(jié)電容影響開關(guān)速度TT是少數(shù)載流子渡越時間決定反向恢復(fù)特性BV和IBV是擊穿電壓和擊穿電流。仿真器在計算時會調(diào)用內(nèi)建的二極管方程I IS * (exp(V/(N*Vt)) - 1) 結(jié)電容充放電電流溫度變化時IS、Vt這些參數(shù)還會按內(nèi)建的溫度修正公式做縮放。這個方程本身在SPICE代碼中是寫死的模型語句里的參數(shù)就是喂給方程的具體系數(shù)。MOS管就更復(fù)雜了。最早的MOSFET Level 1模型就是教科書里那個平方律方程參數(shù)只有VTO閾值電壓、KP跨導(dǎo)系數(shù)、GAMMA體效應(yīng)系數(shù)、LAMBDA溝道長度調(diào)制系數(shù)這幾個。但隨著工藝線寬不斷縮小短溝道效應(yīng)、亞閾值導(dǎo)通、漏致勢壘降低DIBL、量子效應(yīng)等一大堆物理現(xiàn)象都得建模進(jìn)去就出現(xiàn)了BSIM3、BSIM4這種動輒上百個參數(shù)的工業(yè)標(biāo)準(zhǔn)模型。BSIM4里光是描述襯底電流和柵極漏電的參數(shù)就有幾十個。所以SPICE模型的演進(jìn)本質(zhì)上是半導(dǎo)體工藝演進(jìn)倒逼出來的。工藝越先進(jìn)模型越復(fù)雜仿真收斂越難計算量越大。你在用45nm工藝做芯片設(shè)計時跑一次后仿真要算幾天很大一部分時間都耗在BSIM4模型方程的計算上。1.3 模型的粒度從粗到細(xì)怎么選工程中說到模型其實(shí)粒度差異很大。我習(xí)慣把模型分成四個層次理想模型一個開關(guān)就是零導(dǎo)通電阻、零開關(guān)時間一個運(yùn)放就是無窮增益、無窮帶寬。這種模型用來驗(yàn)證電路拓?fù)溥壿嫑]問題但任何和性能相關(guān)的結(jié)論都不可信。行為級模型用受控源和數(shù)學(xué)表達(dá)式描述器件的外特性不關(guān)心內(nèi)部物理機(jī)制。比如用一個壓控電流源加一個RC網(wǎng)絡(luò)模擬運(yùn)放的帶寬用查表方式模擬ADC的傳輸曲線。宏模型介于行為級和物理級之間保留一部分內(nèi)部結(jié)構(gòu)以體現(xiàn)重要效應(yīng)。運(yùn)放宏模型通常會包含輸入失調(diào)電壓、有限開環(huán)增益、擺率限制、輸出電流限制、共模抑制比這些參數(shù)。物理級模型基于器件物理結(jié)構(gòu)建立比如MOSFET的BSIM模型就是物理級模型一個管子對應(yīng)幾十個工藝參數(shù)能描述從弱反型到強(qiáng)反型、從線性區(qū)到飽和區(qū)的全部行為。這四個層次沒有絕對的好壞關(guān)鍵是匹配你的仿真目標(biāo)。做電源的系統(tǒng)仿真MOSFET用廠商提供的物理級模型但控制芯片里的運(yùn)放用宏模型就夠了沒必要把芯片內(nèi)部幾百個晶體管全建出來。做芯片設(shè)計則是反過來所有器件都得用foundry提供的物理級模型一個都不能省。2. 工程中最常用的SPICE模型形態(tài)model語句、子電路、宏模型2.1 用.model定義基礎(chǔ)器件最基礎(chǔ)的模型形態(tài)是.model語句適用于二極管、BJT、JFET、MOSFET這類單一器件。它的特點(diǎn)是一個模型對應(yīng)一種器件類型參數(shù)在語句內(nèi)平鋪。BJT模型常用的是Gummel-Poon模型語句長這樣.model BC847 NPN (IS1.6e-14 BF300 NF1 VAF100 IKF0.08 ISE2e-16 NE1.5 BR15 NR1 VAR30 IKR0.15 ISC1e-15 NC2 RB10 RE0.5 RC0.8 TF4e-10 TR2e-8 CJC4e-12 MJC0.5 VJC0.6 CJE8e-12 MJE0.33 VJE0.7)如果只是做小信號放大電路BF正向電流增益、VAF歐拉電壓、CJC、CJE這幾個參數(shù)稍微準(zhǔn)一點(diǎn)仿真結(jié)果就有參考價值。但如果你想做開關(guān)電源里的BJT驅(qū)動電路TF、TR這些決定開關(guān)速度的參數(shù)就必須準(zhǔn)確否則仿真出來的開關(guān)損耗和實(shí)際能差一個數(shù)量級。對MOSFET工業(yè)界現(xiàn)在基本都是BSIM模型參數(shù)數(shù)量動不動就上百。使用這類模型時建議直接采用foundry或器件廠商提供的完整模型文件不要自己手工改參數(shù)。我見過太多人為了讓某個仿真結(jié)果好看手改KP或者VTO改完自己又記不住最后模型庫一團(tuán)亂回頭查問題都不知道從哪查起。2.2 用.subckt把復(fù)雜器件封裝成黑盒對運(yùn)放、比較器、LDO、DCDC芯片這類復(fù)雜器件直接用晶體管級模型是不現(xiàn)實(shí)的——你拿不到芯片內(nèi)部電路而且就算拿到了仿真速度也慢到?jīng)]法用。工業(yè)界的標(biāo)準(zhǔn)做法是用子電路模型語法上以.subckt開頭、.ends結(jié)尾內(nèi)部用受控源、無源器件和少量簡單半導(dǎo)體器件搭出一個等效電路。一個簡化的運(yùn)放子電路模型大概長這樣.subckt OPAMP IN IN- OUT VCC VEE RIN IN IN- 10MEG EOUT MID 0 VALUE{AV*(V(IN,IN-))} ... .ends OPAMP子電路模型的好處是可以定義端口封裝成獨(dú)立的符號看起來就是一顆芯片。LM358、TL431、UC3843這些經(jīng)典芯片網(wǎng)上都能找到經(jīng)過大量驗(yàn)證的成熟子電路模型很多大廠也直接公開了自家芯片的SPICE模型。我在電源項目里用UC3843的廠商模型做的仿真和實(shí)測波形基本能對上尤其是啟動過程、過流保護(hù)這些動態(tài)特性參考價值非常高。使用子電路模型時需要注意端口順序。SPICE對端口順序極其敏感你如果按照數(shù)據(jù)手冊引腳順序連接但模型文件內(nèi)部定義的端口順序不一樣仿真結(jié)果會完全錯誤。所以在原理圖里放置這類模型前一定要先打開模型文件看清楚.subckt那一行的端口列表。2.3 行為級模型與宏模型的適用場景行為級模型在信號鏈仿真里用得非常頻繁。比如ADC的模型不需要建模內(nèi)部開關(guān)電容網(wǎng)絡(luò)只要用理想采樣器加量化噪聲源就行。又比如DCDC控制環(huán)路的小信號模型可以用拉普拉斯傳遞函數(shù)直接寫在G源里配合bode圖分析工具快速評估環(huán)路穩(wěn)定性。宏模型介于兩者之間。運(yùn)放的宏模型從一開始就是為了彌補(bǔ)理想運(yùn)放模型不足而出現(xiàn)的成熟方案在理想模型基礎(chǔ)上加入有限增益、帶寬、壓擺率、輸出阻抗、輸入偏置電流、共模抑制比、電源抑制比等非理想因素。這類模型仿真快精度對大多數(shù)應(yīng)用足夠是做信號鏈系統(tǒng)級仿真的首選。我自己的選型經(jīng)驗(yàn)是畫原理圖驗(yàn)證邏輯用理想模型評估系統(tǒng)性能用宏模型涉及具體芯片選型或者需要看開關(guān)波形細(xì)節(jié)用廠商提供的精確模型只有做芯片設(shè)計才用foundry的BSIM物理模型。按照這個思路選擇模型粒度既不會因?yàn)槟P吞謱?dǎo)致結(jié)論失真也不會因?yàn)槟P吞?xì)導(dǎo)致仿真慢到懷疑人生。2.4 四種模型形態(tài)的對比我把四種模型形態(tài)的適用特點(diǎn)整理成了表格方便你在實(shí)際項目里快速決策模型形態(tài)典型語法精度仿真速度適用場景理想模型R、V、E源直接搭低極快拓?fù)潋?yàn)證、學(xué)習(xí)原理行為級模型受控源表達(dá)式/傳遞函數(shù)中快系統(tǒng)級仿真、環(huán)路穩(wěn)定性宏模型子電路受控源組合中高中運(yùn)放/基準(zhǔn)源等通用器件評估物理級模型廠商BSIM模型、Gummel-Poon高慢芯片設(shè)計、功率器件選型需要特別強(qiáng)調(diào)的是模型形式的選擇不是一成不變的。同一個器件在不同的仿真目的下可以同時存在宏模型和物理級模型。比如一個MOSFET做系統(tǒng)效率估算用宏模型就好但做驅(qū)動波形、尖峰電壓分析就必須用包含寄生電容的物理級模型。3. 從器件手冊到可用模型一套能直接落地的實(shí)操路徑3.1 當(dāng)廠商沒有提供SPICE模型怎么從數(shù)據(jù)手冊自己建做工程時經(jīng)常遇到這種情況選了一顆很合適的器件結(jié)果廠商官網(wǎng)上沒給SPICE模型只給了一份PDF數(shù)據(jù)手冊。這時候自己動手提取參數(shù)就成了繞不開的活兒。以二極管為例從數(shù)據(jù)手冊提取參數(shù)的步驟我一般這樣做從正向I-V曲線上取兩個不同電流下的正向壓降代入二極管方程可以解出IS和N。從反向恢復(fù)時間規(guī)格查TT從結(jié)電容曲線查CJO、VJ、M。從最大反向電壓規(guī)格填BV。很多情況下你不需要提取全部參數(shù)。關(guān)鍵是識別出和當(dāng)前電路有關(guān)的參數(shù)。假設(shè)你在做的是低壓差穩(wěn)壓器里的整流二極管最重要的參數(shù)就是正向壓降、反向恢復(fù)時間和結(jié)電容至于擊穿電壓只要你的工作電壓遠(yuǎn)低于BV值填個大概就行。MOSFET的參數(shù)提取就更復(fù)雜了建議借助仿真工具的優(yōu)化擬合功能來操作。ngspice和LTspice里都支持把仿真結(jié)果和數(shù)據(jù)手冊曲線做對比然后通過參數(shù)掃描找到最優(yōu)解。我不會建議純手工折騰二十幾個參數(shù)效率和準(zhǔn)確率都太低了。3.2 LTspice導(dǎo)入第三方SPICE模型的標(biāo)準(zhǔn)流程這一節(jié)我重點(diǎn)講講LTspice導(dǎo)入第三方模型因?yàn)檫@個是提問率最高的問題也是剛上手的人最容易卡住的地方。整個流程可以分四步第一步下載模型文件。廠商給的模型格式一般有.lib、.txt、.sub、.mod等后綴本質(zhì)都是純文本用記事本就能打開查看。第二步把模型文件放到LTspice的搜索目錄下。最簡單的方式是拷貝到Documents\LTspiceXVII\lib\sub這個路徑放好后不需要重啟軟件原理圖里直接能用。第三步在原理圖里放置對應(yīng)的器件符號并關(guān)聯(lián)模型。對二極管、BJT、MOSFET這類基礎(chǔ)器件直接放對應(yīng)的符號然后在符號屬性Value欄填模型名。對子電路模型最穩(wěn)妥的方式是用一個通用符號然后把前綴改成大寫XValue填子電路名。第四步用.include指令把模型文件引到當(dāng)前原理圖。.include D1N4148.mod這里我要提醒一個非常容易踩的坑模型文件內(nèi)部定義的模型名不一定和文件名一致。你必須在原理圖里填的是模型文件內(nèi)部的模型名而不是文件名。打開模型文件找到.model后面的那個名字或者在子電路文件里找到.subckt后面的名字那才是你該填的內(nèi)容。另外一個坑是第三方模型和LTspice內(nèi)置模型可能存在語法兼容性問題尤其是某些老式PSpice模型里用了LTspice不認(rèn)識的關(guān)鍵字。遇到這種情況不能用LTspice的自動符號生成功能而應(yīng)該手動放置通用符號并確認(rèn)模型的前綴和端口定義。3.3 無源器件建模別忽略寄生參數(shù)很多人的仿真和實(shí)測對不上問題不在于有源器件模型而在于無源器件的寄生參數(shù)完全沒建。一顆0805封裝的電容在100kHz時幾乎是理想電容在1MHz時開始呈現(xiàn)容抗下降在100MHz時可能變成電感特性。這種頻率特性在原理圖里用一個理想電容根本不可能體現(xiàn)。工程上常用的做法是給無源器件建立寄生參數(shù)模型。電容的等效模型是ESR等效串聯(lián)電阻 ESL等效串聯(lián)電感再加上電容本體注意可能還有一個并聯(lián)的絕緣電阻。電阻的高頻模型則要考慮引線電感和寄生電容。我在做電源的輸入濾波電路仿真時曾經(jīng)因?yàn)殡娙軪SR設(shè)置和實(shí)際不符導(dǎo)致仿真出的紋波電壓只有實(shí)測的一半。后來查了電容的規(guī)格書把ESR從默認(rèn)的0.01歐改成0.08歐仿真結(jié)果就和實(shí)測對得上了。所以不要懶用數(shù)據(jù)手冊里的ESR和ESL參數(shù)給你的無源器件建模這比糾結(jié)有源器件模型里的某個參數(shù)值重要得多。3.4 關(guān)于FOPDT這類非SPICE模型的澄清在工程領(lǐng)域模型這個詞含義極廣。SPICE模型描述的是電子器件的行為而在過程控制領(lǐng)域溫控系統(tǒng)常用的FOPDT模型一階慣性加純滯后模型描述的是被控對象的動態(tài)響應(yīng)形式上是K/(Ts1)*e^(-Ls)這樣一個傳遞函數(shù)。它的參數(shù)是通過階躍響應(yīng)實(shí)驗(yàn)辨識出來的加一個階躍輸入記錄輸出曲線然后從曲線中提取增益K、時間常數(shù)T和滯后時間L。雖然這兩種模型所在領(lǐng)域完全不同但建模的思想是相通的都是從研究對象中提煉出能夠反映關(guān)鍵特性的數(shù)學(xué)描述只不過SPICE模型的數(shù)學(xué)載體是器件方程加參數(shù)集而FOPDT的數(shù)學(xué)載體是傳遞函數(shù)。理解了這層共性再去看不同領(lǐng)域的建模你就能舉一反三。4. 模型準(zhǔn)不準(zhǔn)不是仿真器說了算驗(yàn)證與調(diào)試方法論4.1 仿真與實(shí)測對不上先別急著換參數(shù)很多工程師一遇到仿真和實(shí)測不一致第一反應(yīng)就是模型不行然后開始亂改參數(shù)改到仿真結(jié)果湊合能看就完事。這種做法極其危險——你在用一個錯誤的模型去擬合另一個錯誤的條件得出一個偶然正確的答案但根本不知道為什么正確也無法擴(kuò)展到其他設(shè)計。我的建議是系統(tǒng)地排查。排查順序是先確認(rèn)外圍無源器件的寄生參數(shù)是否建模再確認(rèn)工作點(diǎn)是否與模型適用范圍一致最后才懷疑有源器件模型本身。如果前兩項都沒問題再考慮是不是模型版本老舊需要到廠商官網(wǎng)找更新版本。一個典型的例子室溫28度環(huán)境下仿真和實(shí)測差了5%但是把仿真溫度改到85度兩者又對上了。這種不是模型出錯而是環(huán)境溫度變化導(dǎo)致的參數(shù)漂移。很多模型都有標(biāo)稱溫度TNOM參數(shù)默認(rèn)是27度如果你的實(shí)際工作環(huán)境差異較大需要考慮溫度對模型參數(shù)的影響。4.2 用數(shù)據(jù)手冊曲線做模型驗(yàn)證的完整流程拿到一個新模型后不要直接拿去仿整個電路先做一個最簡單的驗(yàn)證電路用模型仿真出該器件的特性曲線和數(shù)據(jù)手冊的典型曲線做對比。以MOSFET為例驗(yàn)證電路可以很簡單掃描VGS看轉(zhuǎn)移特性曲線是否和手冊一致。掃描VDS看輸出特性曲線族的飽和電流是否和手冊一致。固定VGS給柵極加脈沖看開關(guān)波形的時間常數(shù)和手冊的開關(guān)參數(shù)是否一致。這個過程看起來費(fèi)時間但能讓你在正式仿真前對模型的準(zhǔn)確性心里有底。我在拿到一個新的MOSFET模型后花了半小時做這套驗(yàn)證發(fā)現(xiàn)某廠商的模型在低壓大電流工況下仿真出來的導(dǎo)通電阻比手冊標(biāo)稱值大了30%就繞開了這顆管子改選其他器件。如果沒有這半小時驗(yàn)證直接做到整板仿真才發(fā)現(xiàn)功耗異?;仡^排查浪費(fèi)的時間會多得多。4.3 溫度、工藝角和模型適用范圍一個模型不是在所有條件下都準(zhǔn)確的。廠商模型通常會在模型文件中標(biāo)注適用范圍比如溫度范圍是-40到150攝氏度電流范圍是0到額定電流的3倍。超出范圍后模型的數(shù)學(xué)方程可能不收斂或者仿真出來的結(jié)果完全不符合物理實(shí)際。在芯片設(shè)計領(lǐng)域工程師還會特別關(guān)注工藝角process corner問題。同一款芯片不同晶圓批次之間的工藝參數(shù)會有隨機(jī)偏差foundry會提供TT、FF、SS、FS、SF等不同角點(diǎn)下的模型參數(shù)文件。設(shè)計要保證在所有工藝角下都能正常工作而不是只在典型參數(shù)下滿足指標(biāo)。這類仿真在模擬IC設(shè)計流程中是強(qiáng)制要求但在板級設(shè)計中往往被忽略。板級設(shè)計如果對器件批次一致性要求高也應(yīng)該做一下參數(shù)掃描或者蒙特卡洛分析看電路對器件參數(shù)漂移的敏感度。5. 仿真跑不通、跑得慢收斂問題與性能調(diào)優(yōu)的實(shí)戰(zhàn)經(jīng)驗(yàn)5.1 收斂失敗的常見根因和排查路徑玩過SPICE仿真的基本都遇到過No convergence或者其他迭代報錯。這個問題的本質(zhì)是牛頓-拉夫遜迭代在解非線性方程組時找不到一個滿足誤差條件的解。就好比你讓一個盲人通過摸象找平衡點(diǎn)每次都從當(dāng)前猜測出發(fā)走一小步結(jié)果來回震蕩就是落不下去。常見的收斂失敗原因包括初始條件設(shè)置不合理尤其是帶有反饋的電路啟動時各節(jié)點(diǎn)電壓全為0跟實(shí)際工作點(diǎn)差太遠(yuǎn)。模型中存在導(dǎo)數(shù)不連續(xù)的邊界比如理想二極管在零電壓處從截止到導(dǎo)通的突變。電路電感電流或電容電壓在仿真啟動瞬間存在突變導(dǎo)致數(shù)值溢出。仿真步長過大漏掉了極窄的脈沖或極陡的邊沿。電路中存在上電時序?qū)е碌恼袷幏抡嫫鞣磸?fù)嘗試認(rèn)定無法收斂。排查時我習(xí)慣自己按鏈路逐項核對而不是亂調(diào)option參數(shù)。先把電路簡化去掉非必要部分只保留核心拓?fù)淇词欠袷諗咳绻皇諗吭僦鸩郊踊貜?fù)雜度二分定位問題模塊。這是效率最高的定位方法。5.2 仿真選項調(diào)整迭代次數(shù)、容差、步長如果定位到某個模塊導(dǎo)致了收斂問題可以有針對性地調(diào)整仿真選項。以下是我常用的一組設(shè)置.options RELTOL1e-3 ABSTOL1e-6 VNTOL1e-6 ITL1500 ITL450 .tran 0 10m 0 100nRELTOL是相對誤差容限默認(rèn)1e-3收緊到1e-4會更精確但迭代次數(shù)可能翻倍。ITL1是直流工作點(diǎn)求解的最大迭代次數(shù)默認(rèn)值偏低時加大這個值可以解決部分不收斂問題。ITL4是瞬態(tài)分析每步最大迭代次數(shù)加大這個值也能解決部分不收斂但單步計算時間變長。最大步長的設(shè)置對瞬態(tài)仿真很關(guān)鍵。LTspice默認(rèn)情況會自動調(diào)整步長但遇到快速變化的波形可能還是會漏細(xì)節(jié)。手動設(shè)置一個合理的最大步長比如100ns可以強(qiáng)制仿真器去捕捉快速邊沿。還有一個很實(shí)用的技巧給容易出現(xiàn)電壓突變的節(jié)點(diǎn)加一個初始條件比如.ic V(SW)5可以幫仿真器在啟動時更快找到工作點(diǎn)。5.3 模型化簡從能跑到跑得對模型越復(fù)雜仿真越慢這是個繞不開的trade-off。在實(shí)際項目中我拿到一個芯片的精確模型后經(jīng)常會在保證關(guān)鍵特性前提下做化簡。比如某個隔離電源芯片的模型包含幾百個節(jié)點(diǎn)仿真一次要幾分鐘。分析環(huán)路穩(wěn)定性時我只需要用小信號模型替代它仿真時間能從幾分鐘降到最后幾百毫秒?;喌脑瓌t是只保留和分析目標(biāo)相關(guān)的特性。分析啟動時序時必須保留軟啟動、過流保護(hù)等非線性特性分析環(huán)路穩(wěn)定性時只需要保留誤差放大器、PWM調(diào)制器和輸出級的中頻增益和極點(diǎn)位置其他都可以砍掉。我見過有的工程師一套模型走天下不管是做環(huán)路分析還是做EMI仿真都拿同一個精確模型跑結(jié)果就是仿真時間長得離譜很多項目等不起。學(xué)會按需化簡模型是仿真能力能否從初級往高級邁進(jìn)的標(biāo)志之一。6. 進(jìn)階路徑從會用模型到能寫模型6.1 自己動手寫一個行為級模型當(dāng)你對SPICE模型的理解深入到一定程度你會開始不滿足于只用現(xiàn)成模型而是想針對自己的特定需求寫一些定制模型。我建議從行為級模型入手這類模型的寫法最靈活也最接近電路直覺。以壓控電流源為例SPICE里的G源表達(dá)能力非常強(qiáng)可以直接寫數(shù)學(xué)表達(dá)式、條件判斷也可以用拉普拉斯傳遞函數(shù)描述頻域特性。比如我想要一個帶帶寬限制的跨導(dǎo)放大器模型可以這樣寫GM OUT 0 VALUE{G*V(IN) / (1 s/(2*PI*BW))}這種模型在建環(huán)路仿真時非常有用。你可以把運(yùn)放的直流增益、主極點(diǎn)、輸出擺率限制、飽和電壓全部用行為級表達(dá)式寫進(jìn)去跑出來的波形和宏模型基本一致但思路更透明參數(shù)可調(diào)性更強(qiáng)。6.2 從Verilog網(wǎng)表到SPICE網(wǎng)表v2lvs的完整流程如果你做的是數(shù)字或混合信號芯片設(shè)計你可能需要在版圖后仿真階段把Verilog門級網(wǎng)表轉(zhuǎn)成SPICE網(wǎng)表這一步在工業(yè)界經(jīng)常用Calibre的v2lvs工具完成。典型用法是v2lvs -v digital_netlist.v -o digital_netlist.sp -l standard_cells.lib這樣生成的SPICE網(wǎng)表結(jié)構(gòu)就是一堆子電路實(shí)例每個標(biāo)準(zhǔn)單元對齊到foundry提供的SPICE模型庫。生成的網(wǎng)表可以配合版圖提取出的寄生參數(shù)RC文件做帶寄生的晶體管級后仿真。這種仿真雖然慢到令人發(fā)指一個幾百K門的模塊可能要跑好幾天但它能發(fā)現(xiàn)版圖寄生引起的時序問題和信號完整性問題是流片前最后一道數(shù)字驗(yàn)證關(guān)卡。v2lvs的執(zhí)行邏輯其實(shí)不復(fù)雜解析Verilog網(wǎng)表中的單元實(shí)例查標(biāo)準(zhǔn)單元庫映射表把每個單元替換成對應(yīng)的SPICE子電路把信號和電源地連接關(guān)系按照端口映射逐一轉(zhuǎn)換。但實(shí)際使用時需要注意幾個點(diǎn)電源地需要在轉(zhuǎn)換時正確識別并連接到對應(yīng)的全局電源節(jié)點(diǎn)否則所有邏輯門的驅(qū)動都會異常另外浮空輸入、未連接輸出這些Verilog允許的情況在SPICE網(wǎng)表中會導(dǎo)致電路無法正常工作轉(zhuǎn)換前需要先做端口的連通性檢查。6.3 想往器件建模方向深耕應(yīng)該學(xué)什么器件建模是個相對小眾但技術(shù)含量極高的方向。如果覺得自己對半導(dǎo)體物理和數(shù)值計算方法都感興趣可以考慮往這個方向發(fā)展?;A(chǔ)的學(xué)科儲備包括半導(dǎo)體物理、固態(tài)電子學(xué)、數(shù)值分析。工具層面需要掌握至少一種編程語言Python或C因?yàn)榻9ぷ骱芏鄷r候要靠寫腳本來做參數(shù)提取和模型驗(yàn)證。此外熟悉foundry的PDK工藝設(shè)計包結(jié)構(gòu)和BSIM模型標(biāo)準(zhǔn)也是必須的。目前BSIM-CMG、BSIM4、PSP這些模型家族還在持續(xù)演進(jìn)跟上最新標(biāo)準(zhǔn)需要持續(xù)閱讀IEEE的器件和EDA方向論文。如果不想全職做建模工程師但想在設(shè)計中用好模型我建議你至少掌握兩項進(jìn)階能力一是會用Python腳本批量提取器件模型參數(shù)并做交叉驗(yàn)證二是理解模型在仿真器中如何參與數(shù)值計算這樣在遇到模型導(dǎo)致不收斂這類問題時你能從更底層去定位問題而不是只會亂調(diào)option參數(shù)?;氐介_頭那個BUCK效率翻車的故事。后來我用廠商提供的MOSFET精確模型重新仿真加上電感的DCR、電容的ESR效率仿真結(jié)果變成78%和實(shí)測的77%幾乎一致。這個案例讓我徹底改掉了仿真能用就行的思維慣性。從那以后每拿到一個新器件我都會先跑一輪模型驗(yàn)證確認(rèn)模型文件的來源、適用范圍和參數(shù)完整度。做好這一步至少能幫你省掉一周的調(diào)試時間。我個人始終認(rèn)為SPICE模型是仿真工作的地基地基不牢上面蓋的樓再高也沒底氣。希望這篇內(nèi)容能幫你把這個地基打得扎實(shí)一些。