簡單快速的IBIS建模流程

對於新上手的建模工程師而言, “IBIS CookBook” [連結按此]提供了極佳的入門參考資料;最近的V4.0版本是在十幾年前的2005年出版的, 時至今日, 雖然其中所描述的大部份程序仍屬有效, 但也有許多其它部份或顯得繁瑣或未盡詳述。這些缺點在第四章”差分建模”的部份尤其特別明顯; 更有甚者, 近年來IBIS峰會上發表的文章大多是圍繞著新IBIS科技諸如IBIS-AMI等打轉, 對於傳統IBIS類比模型的部份著墨就相對少得多。在這篇貼文裡, 我打算首先替讀者重溫一下CookBook裡所談到的正式流程, 而後對其間的一些較具挑戰性的部份加以說明, 並以此倡議一個較為簡化又不失精確的建模方案, 最後提出一些正反意見讓讀者參考。

IBIS 模型組成元件:

在IBIS V3.2中所定義的最基本組成元件如上所示; 對於一個輸出BUFFER來說一般至少要有六個資料表: 即IV資料如Pull-up 及Pull-down, 及兩組不同負載情況下的VT資料(Rising/Falling各一); 若是輸入態的IBIS模型, Clamp的IV資料或也要, 而IBIS V5.1又加入了新的IT需求並以ISSO PU/PD及Composite Current等來描述電源供應網路PDN的效應。要為一IBIS模型建模, 一開始便需對這些各別表格所表述的電路部份加以驅動以激發得到相對的響應; 有了仿真的資料後便做後處理以產生出如SPEC規定的表格等的格式才能加以使用。由於一個模型通常也有TYP/MIN/MAX三種組態,所以實際上需要仿真的次數便是上述的六(個表格)再乘以三(種組態)而至少達十八個之多。

我們以下列摘要的方式再對包含於上面圖形但未為即將倡議的新建模流程所觸及到的部分加以簡述:

  • 封裝的寄生元件: IBIS CookBook裡並未談到這個部份, 一般來說buffer的封裝模型(package model)是由諸如HFSS或Q3D等套裝軟體由實際設計透過三維場解來算出來的, 其格式可為S參數或相對應的Spice等效電路; 一個IBIS模型可以用 Lumped R+L+C來對單一的針腳PIN來描述其寄生效應。或者也可把此lump值放在 “Package” 部份來套用到所有的針腳;需要更精確的描述的話則可用如下有樹狀結構的[Package Model]語法來描述。不論如何, 這些都是三維場解軟體所可以生成的而不在一般IBIS建模流程的討論範圍之內。
  • C_Comp: 在IBIS剛制定之初, C_Comp只用一介於PAD及地點間的單一值來描述頻率性的負載; 後來HSPCIE等發明了一些語法來把這單一值打散並分到PAD與各個不同的電源端點間; 又到最近IBIS Spec.便納入了這些語法而成為標準的一部份;話雖如此, 一般建模人員從網上仍可能只會發現單一的C_Comp值是如何算出來的。簡單地說, 其不外乎是透過時域的仿真以RC的充放電常數來得值、抑或是由頻域的虛部電流除以頻率來得到電容值。至於之後如何把這單一值分開來以便更佳描述如下的頻域二維表面則得仍由各人發揮所長(意即:cookbook裡根本沒說)。最後, 這個C_Comp值的效應在建模的過程裡是看不到的, 唯有在信號從另端因阻抗不匹配的緣故反射回來後才能看到這C_Comp值所造成的影響。凡此種種, 我們發現一般上此buffer的IC設計師比透過上述的時域/頻域仿真所算出的C_Comp值了解得更精確, 也就是說常常問他們就可得到大概的估值。
  • Clamp 電流: Power/Ground Clamp的電流和Pull-up/Pull-down的電流都是在穩態下得到的, 在仿真時這四者也是一同拿來做load-line的計算的;所不同處, 因為clamp所表示的是ESD的保護電路故其為總是存在 (always on), 當這兩組表格存在時, 為避免其又被在PU/PD表格裡又再被算一次 (double counting), 在做後處理時需把這部份自後者中移除。若要簡化這個麻煩, 其實一個有IO功能的buffer 在被拿來做輸出buffer使用時便可直接以output type buffer來建模而非io type buffer而可略過此一部份。

 

  • IT 電流(Power aware): 這些是為了描述buffer 在非理想供電或接地情況下的運作而需加入的資料, 其應用則主要用在如DDR DQ的單端點模型裡, 因為它們對PDN的擾動所造成的時間影響最為敏感。對於諸如SERDES的差分模型而言, 因為在P及N點的輸出端會被PDN同樣的影響, 在相減之下效應就抵消了, 所以影響很小而未必有此需要。最後, IT在瞬態的部份其實是和VT一同仿真的, 其只是在PAD端加上一個電流的Probe便可取得相對應的資料, 而且這IT和VT的各點間是需同步的, 所以只要在同一仿真裡就可完成。

完整IBIS建模流程:

本司的BPro軟體已將於上述IBIS cookbook裡所建議的建模程序標準化而總結如下, 其有從0~7的八個步驟:

  • 0, 搜集原始設計相關的資訊: 這包括了(PVT即製程、電壓、溫度)、矽智財、Buffer端點的偏壓及設定等等。一般的buffer設計都會預留許多腳位以便為日後調控所需, 因為一個IBIS的corner有TYP, MIN, MAX三種, 故建模者也得先決定那些組合的腳位設定對映到那種corner;
  • 1, 準備工作的環境: 即工作目錄;
  • 2, 產生仿真的網表: 即驅動不同buffer的組成部件及其仿真時的設定; 如前所述, 以一般的buffer來說, 最少就有十八個網表得在步驟末生成;
  • 3, 進行仿真: 一般可在建模流程軟體內依序地仿真或將所有的網表散到不同的機器上(simulation farm)同時並行;結果出來之後得檢查一下看是否有誤, 若然則得回到一開始的地方檢查看是連接有誤或偏壓不對, 不做修正就繼續往下走就會變成”垃圾進、垃圾出”..產生的模型一定有誤。
  • 4, 產生IBIS模型: 後處理由前一步所產生的仿真資料以產生IBIS模型。這裡面的計算或調整往往就是諸如本司建模軟體的精華所在, 很多步驟是可以用手動或人工去進行、但往往容易出錯又曠日廢時。
  • 5, 語法檢查: 一有了模型之後, 最基本的驗證是用golden checker進行語法檢查, 它也會對dc電位等做基本的測試; 若一模型有根本上的錯誤(比如說vt波型是平的), 在這一步就可以檢查出來;
  • 6, 用模型做仿真上的驗證: 把產出的IBIS模型連到 test load上進行仿真以便第三步由矽智財仿真出的結果相較, 理想的情況下, 除了信號從進去到能見於pad的Tco有別之外, 在波型上應是要能完全重合的;
  • 7, 產生報告: 建模者最後往往需將諸如PU/PD阻抗及slew rate等的模型參數列出來, 以便和data sheet相較或者做為模型報告的一部份。

本司BPro裡的完整建模流程

單端建模資料之轉出:

對於單端點的IBIS建模而言, 上述建模流程的第一個具挑戰性的地方是要能把十八個不同仿真的網表都建出來且順利仿真完成且結果無誤:

這裡面可能出現的問題很多在於DC IV的仿真部份: 很多的IC BUFFER設計裡都有clocking的信號, 這使得真正的dc掃描從-Vcc到2Vcc變得不可能而必需透過如pseudo transient的方式來進行, 其次, 若設計是於佈線後(post layout)的階段轉出來的則各個電路點之間會有一些寄生元件, 另一種情況是雖然我們只針對IO的buffer部份建模, 但電路是他人所設計而不是很容易把前級的部份和只有IO的部份分開來而最後必需一起仿真, 凡此種種, 都會使得仿真的時間變得冗長甚或是有時無法收歛。其結果是上述0~7的流程得從中間往返走上好幾回、每次調參數或除錯而終得費上好一番功夫才能得到所有建模需要的資料。以上雖繁瑣,但由於也就不過是那十八個網表, 所以大致上應該問題都能解決。

差分建模資料之轉出:

差分建模的複雜性就又比單端點的情況多上一個維度了(不只是多了一倍哦, 是多了一個dimension!) 首先, 依據IBIS規格…就像每一個IC的data sheet裡所呈現的一樣… 一個針腳只能連到一個buffer, 而不同針腳之間的連接是有很高的限制; 就差分模型而言, 一個series element能如下所示地用來描述p及n反相針腳間的相互情況。(本段落所用的圖型都出自於ibis cookbook第四章裡, 所以有興趣更深入了解的讀者可以按圖索驥以得到原始的描述)

為了能建構出這麼一個series model, 就必需分就p及n輸出端點間做二維的dc掃描; 而且兩者的資料精度必需相近..也就是說如果就單端建模的p點iv曲線我們有一百點的資料, 則同樣在n點的維度上, 為了也要能得到一百個取樣點, 我們就得對一百個網表進行仿真;就三個corner來說, 就有三百個仿真要跑。這一dc iv掃描步驟的最終結果是一個能描述p及n點間dc相互關係如下所示的二維曲面; 唯有看到這二維曲面的形狀為何, 我們才能決定那個series element內有那些次組成元件(其可以是一或更多的R, RL, RLC, 非線性電阻或是一整個非線性平面), 而其中要能產生這二維平面所需先進行的處理步驟之一也包括了要能將同模的電流自P及N點間消去, 凡此種種皆算是第一道的難關。

第二道的關卡在於VT的仿真部份, 由上述的曲面建構出series model 之後, 我們要能在VT瞬態仿真時將其消除才能不被算了兩次 (double count); 對於一個spice 仿真器而言, 大部份的情況其都不允許負電阻、負電容等的存在, 也就是說, 它們會把這些負值元件看做是用戶的輸入錯誤而不讓仿真繼續進行, 解決之道, 吾人可以用如本司在2016年Asian IBIS Summit所展演的Verilog-A 電路或是仿真器大都會提供的控制電源來達成這種”負電阻”似的消去目的;即便是如此, 在Verilog-A的解決方案上, look-up table上每個grid的大小係由iv二維描描所決定, 而控制電源的解決方案上, 為了要能算出適當的控制電源參數, 建模者還得利用最佳化的原理才能算出何種組合的參數最能描述上一步算出的反應曲面; 而這些不論是表格或是參數變化間的圓滑性(smoothness), 也都更進一步地決定了仿真的收斂性。凡此種種情況,難怪cook-book裡描述此段的部份(見下圖描述的前兩行)作者只是輕輕一語帶過而不做詳述, 因為真的是說得比做得還簡單啊。

由於這兩大關卡及之間種種藏在細節裡的魔鬼, 我們發現差分的建模對一般的建模者而言不是那麼地簡單。讓我們更有此感悟的情況是: 當本司在提供建模服務時, 很多情況建模的仿真或因IP的考量、或因對原始設計的熟悉情況所限, 往往是由客戶所進行的, 我們雖已盡己所能地把這些該如何設定及其原理為何做最詳盡的描述,但在客戶端仍常常碰到問題或反應意見說要很久的時間才能得到所有需要的資料, 其次, 客戶之所以把建模工作交給本司就是不願去淌這混水…如果很多麻煩的地方仍得自己來過,那建模外包又有何益? 所以就本司而言, 對於去找出更快速有效的建模方式, 其實是都持續不斷地在進行的。如果我們建模的目的是為了能跑Channel Simulation (而非萬能地又做穩能又做時域依真), 也就是說如果了解模型的運用是在某種特於的環境之下, 那是否有更好(尤其是差分)的建模方案呢?

簡單快速的新建模流程:

之前的貼文中, 我們提到了IBIS模型內部的資料在仿真時是如何被運用的; 簡單地說, VT的資料在得到波型一樣的負載情況下, 是做為一個目標(target)的; 在此”目標”之下, IV的部份則會被拿來算出一組時變的切換參數以便使適量的電流能自PAD點輸入或流出, 基於KCL/KVL的考量, 這適量的電流就會造成仿真矩陣運算時節點的適當電壓而終能符於VT的曲線; 其次, 由於分有Pull-up及Pull-down的切換參數要解, 所以就得有在不同負載情況下的VT曲線才能由兩組資料解出兩組未知;這也就是說, 其時IV的資料和算出的切換參數是互為表裡的, 做為表面、看得到的IV部份需由看不到的參數來配合, 如果IV某電壓點的值小些,則用到那電壓點的某個時步上的切換參數值就得大些才能使最終電流維持不變。從這點來看, 待算出的切換參數可以視做是IV曲線的加權或調整參數。

在另一方面, 每一組的VT曲線裡也內含了對IV曲線一些部份的限制, 在這些限制之下, 兩者之間(即VT及IV)必需要相符否則就會有dc mismatch的錯誤情況發生。最後, IV本身的資料限制是只能有最多一百個點且其間必需單調性的遞增或遞減否則就易在仿真時產生不收歛的情況(stuck-at local minimum)。這些都隱喻了模型裡各個資料間的相互關連性。

由上所述, 我們可以推出一個簡單快速的建模法所需的資料產生步驟為:

  • 將原始silicon設計連到相對應的PVT及偏壓情況下後得到VT仿真資料, 而這VT是如此設定的:
    • 就單端點模型而言, 僅用兩組不同的負載情況(test load)
    • 就差分模型而言, 先做一般使用狀況下(比如說是一百Ohms的輸出差分電阻)的仿真, 得到電壓介在V1及V2之間
      • 設V3=(V1+V2)/2, 以V3為VFixture, RFixture=比如說是40及60, 分做兩次仿真並以此為資料VT波型;
      • 或者用RFixture=50, VFixture分為(V3+V1)/2及(V3+V2)/2並進行仿真, 以此為資料波型;
      • 這一步驟的主要目的是要取得能內含正常運作情況下的兩組波型;
  • 由IC設計師那兒得到C_COMP值;
  • 得到不同Corner的電壓及溫度等參數。

就這樣,再透過不足外為人道也的數學運算及解析, 我們就能透過最少的仿真步驟而產生IBIS模型, 且這模型不會有語法錯誤又能在相同負載情況下重現上述所提供的兩組VT資料。

我們雖不能詳述這中間倒底是怎麼做的, 但可以分享的是在我們的BPRO上,如此的流程僅需填值到如下的GUI裡就可在幾秒之內產生出來, 過去這大半年來,我們已用此法建出許多為客戶所用的模型, 跑起來亳無問題!

優缺點及限制:

我們運用此法建模的使用場景主要是含有IBIS-AMI的差分模型且用於channel simulation情況下, 以此來看, 如此倡議的快速建模法會有如下的優缺點:

優點:

  • 只要透過最少的仿真(即兩組VT仿真), 便能得到建模所需的資料;
  • 就數學及電路分析上會絕對正確, 故而不會有如DC mismatch或monotonic等的語法問題, 在驗證時相同負載的VT結果一定能重現原始資料的波型。

缺點:

  • 如果把這IBIS模型拿來做DC仿真/掃描的話結果未必會精確, 因為模型內的IV資料點是用演算法算出來而不是真的一步一腳印透過DC掃出來的;
  • 沒有”disable”或”high-z” 的state, 因為所有的clamp電流都已內含在算出的pu/pd IV曲線中;
  • 不能拿來做Power-Aware的仿真之用, 因為其中並無ISSO_PU/PD, Composite Current等的資料。

結語:

在這篇貼文裡, 我們首先重溫了在官版cookbook裡傳統IBIS的建模方式及流程, 而後談及了這流程中可能會遇到的困難…尤其是差分建模的部份; 以次我們提出了一個”簡單又快速”的建模方式….其運用了數學的演算來人工合成出模型的部份資料, 這倡議的方式僅用最少的仿真便可建出有效無誤的模型。它有些使用場景上的限制…比如說沒有High-Z State且不能拿來做power-aware的DDR仿真等。我們研發此法的主要運用是含有IBIS-AMI的channel analysis, 以過去大半年的使用來看可驗證其有效及方便性, 因此我們在近日的SPIBPro更新裡也加入了此一功能以使我們的軟體用戶也能同享此快速建模法所帶來的好處。

IBIS模型: 如何建立IBIS模型

在前面的文章裡,我們簡述了IBIS模型內所需有的資料。這些資料多是以IV, VT, IT的波型表方式呈現;所以所謂的為IBIS建立模型,即是激發原來的緩沖器設計並進行仿真、最後再將仿真的結果進一步處理以合乎IBIS語法的模型表示出來。下面簡單列出了為IBIS建模所需進行的幾道程序:

  • 搜集資料: 即獲得原緩沖器之設計資訊及相關操作係數;
  • 產生電路: 為所用的仿真器產生模擬電路以適當激發緩沖器來運作;
  • 進行仿真: 仿真上一步所產生的各種擬電路;
  • 分析結果: 後罝處理仿真的結果, 並加以運算或轉換;
  • 產生模型: 產生合乎IBIS語法的模型;
  • 語法檢查: 用IBIS公用的程式(Golden Parser)來檢查產生的IBIS模型;
  • 驗證模型: 為建立之IBIS模型產生相同操作情汜的電路並進行仿真;
  • 產生報告: 替驗證的結果做出量化的報告,為模型加上如生廠商等的資訊等。
SPISim BPro's 的IBIS建模流程

SPISim BPro’s 的IBIS建模流程

 

以下我們再對上列的步驟做進一步的說明:

  • 搜集資料: 以下面圖中的緩沖器設計為例,欲為其建立模型,首先我們先要從設計工程師那裡取得詳細的設計檔案,其次, 我們也需要拿到這個設計生產時的製程係數:比如說是用那個製程(Process), 理想的供電電壓是多少(Voltage),以及預設的操作環境溫度等(Temperature), 這些參數一般統稱為(PVT係數)。最後,我們還需要知道這設計正常運作時端點該如何連接? 也就是說那個節點應該的偏壓是多少。當代的緩沖器設計常有許多控制腳位(Control Legs), 藉由不同腳位的通路與否,可決定了這個設計的諸如輸出電流強度及速度等的效能。以上資料缺一不可。都完備之後即可進行下一步:產生適當的電路以對激發緩沖器並為其進行仿真。
緩沖器的設計及相關製程資訊

緩沖器的設計及相關製程資訊

 

  • 產生電路: 在這個步驟,我們需要產生各種電路以便能對其結果萃取出所需的IV/VT/IT資料波型。如之前所述:不同類型的緩沖器有不同的資料表需求,以下就為所需資料緩沖器需被激發運作的方式做一簡述:
    • IV for PU: 緩沖器需被致能(enable), 而後令其輸出邏輯1的高態,在輸出端以 -Vcc ~ 2Vcc進行掃描以獲得電流輸出/入資訊;
    • IV for PD: 緩沖器需被致能(enable), 而後令其輸出邏輯0的低態,在輸出端以 -Vcc ~ 2Vcc進行掃描以獲得電流輸出/入資訊;
    • IV for PC: 緩沖器需被放在高電阻態(High Z), 而後令其輸出邏輯1的高態,在輸出端以 -Vcc ~ 2Vcc進行掃描以獲得電流輸出/入資訊
    • IV for GC: 緩沖器需被放在高電阻態(High Z), 而後令其輸出邏輯0的低態,在輸出端以 -Vcc ~ 2Vcc進行掃描以獲得電流輸出/入資訊;
    • ISSO PU: 在理想供電點及緩沖器上拉端口間接一電壓,電壓值自-Vcc~Vcc進行掃描,同時在輸出端量測輸出/入的電流資訊。這個設置模擬了緩沖器在非理想供電電壓的情況下,輸出電流的變化情形。(Voltage Droop)
    • ISSO PD: 在理想接地點及緩沖器下端口間接一電壓,電壓值自-Vcc~Vcc進行掃描,同時在輸出端量測輸出/入的電流資訊。這個設置模擬了緩沖器在非理想接地的情況下,輸出電流的變化情形。(Ground Bounce)
    • VT for rising/falling waveform: 緩沖器的輸出端需連上測試電阻及電壓等的電路,以合乎實際情形(如100ps的上升時間)的數位信號輸入, 同時在輸出端量測瞬態的電壓波形。這種電路應對不同的測試負載情況再做一次。這兩組的測試情況應足以涵蓋了實際運作情況的操作範圍。
    • IT for composite current: 在緩沖器的上拉端口接一零電壓差的電壓源、用以監測流過的電流。在如同VT電路的測試負載運作時,量測並記錄這電流值。基本上IT 和VT的電路分析可在同一次仿真中同時進行。

BPro_ISSO

IBISIT

 

  • 進行仿真: 以上所產生的電路可分別放在不同的檔案…每個檔案只針對一個不同的資料仿宜需求, 抑或是它們都放在同一個檔案裡, 再用如HSpice裡的.alter依序進行仿真。前者的好處是不同的檔案可在同一機器上的不同執行緒裡、或是不同機器上同時進行仿真以結省建模時間。有些緩沖器的設計需含有時脈(Clock)的輸入, 在這種情況下穩態的掃描(DC Sweep)則不可得, 而得透過如假瞬態分析的方式才能得到結果。這分析技巧也套用在一些不易在DC仿真收斂的設計。

    BPro 產生的電路檔

    BPro 產生的電路檔

 

  • 分析結果: 這一步所要做的是對仿真結果讀出及計算。比如說要將無法剔除、一直都會有的PC/GC逆向偏壓時漏電電流自PU/PD電流裡減去, 以及將PU/PC的結果轉換為對VCC而非對地等等。 若是緩沖器還含有 on-die termination, 則PC/GC仿真所得的電流將不容忽略,而得進行更複雜的[如此所述]的運算。

 

  • 產生模型: 有了結果後,便是將其轉換成合乎IBIS模型的語法並輸出成檔案了。 為了使模型準確而精簡, 優化的程序常是不可或缺的。優化的需求在於仿真的時域結果常包含了上千甚至是上萬個資料點,但IBIS V3.2的規格只準許運用100個點。即便是IBIS V5.0 後準許用更多個點數,也因為Composite Current常是非常波動而不平緩的, 所以仍需要對現有資料點分析以選用最佳的點來表示波型。其次, 在IBIS的資料表裡TYP/MIN/MAX的各個欄位都有同樣的時間點(同一行表同一時間點), 這更曾加了優化的需求及難度。因為優化的程序需同時考量到三組波型資料的取捨。
BPro's 的演算法可優化並以最佳100/1000點來建模

BPro’s 的演算法可優化並以最佳100/1000點來建模

 

  • 語法檢查: 有了IBIS模型後,便需以IBIS委員會公開發佈的語法檢查器(Golden Parser)來檢查。除了一般語法外,它也會偵測可能的穩態電壓誤差。當誤差值大過容許值時,警告便變成了錯誤…一般業界的仿真器是不會對含有錯誤的IBIS模型進行分析仿真的。所以根除錯誤及了解並儘量減少警告的標示便是極重要的工作。
BPro 用 golden parser檢查語法等的錯誤

BPro 用 golden parser檢查語法等的錯誤

 

  • 驗證模型: 有了合乎語法的模型,下一步是為其建立如原緩沖器相同的測試負載情況下的電路來進行仿真。一個好的IBIS模型應是準確、精簡、且運作迅速的。所以這些電路應跑得非常快。當有了結果後就可先以視覺上將模型及原設計在同一測試負載情況下的結果一同比較。一般信號輸入到輸出間的延遲是不能由IBIS模型的所重建出來的。所以如果除經果些許的時間位移外,兩者的上升及下降波形都很近似、而且穩態的(高/低)電壓也都相符,則這就是一個可接受的IBIS模型。

 

  • 產生報告: 替驗證的結果做出量化的報告也常是建模標準之一, 以下的兩份資料已為量化的標準做了一些規範:IBIS accuracy handbook and quality spec. 對於圖形驗證上, 一種品質因數(Figure of merits)常被用來表示所建出模形和原設計在同一負載時輸出波形的相似度。
BPro's 視覺上的檢查及品質因數報告

BPro’s 視覺上的檢查及品質因數報告

以上我們簡單敍述了欲為緩沖器建立IBIS模型所需經過的程序。所謂”魔鬼藏在細節裡”, 很多細節之處雖是值得深入探討、但已在本篇文章的範圍之外。實務上來說, 以人工手動的方式來建立IBIS模型雖是可以做得到、但往往是曠日費時又易生錯誤。這也就是為什麼我們SPISim 使必信科技研發BPro模組來簡化這項建模工作的原因。

IBIS模型: IBIS模型的資料在仿真時是如何被運用的

*緩沖器模型:IBIS模型是如何組成的
IBISType

IBIS規格裡定義了不同類型的緩沖器,不同類型對於模型裡的構成資料即有不同的要求。一般而言,IBIS模型一般有下列的模型資料/對應表:

  • 環境設置:及這模型建模的環境為何, 一般包括了理想電壓及操作溫度的資訊等。
  • 負載情況:如C_COMP:伴隨電容及各截取各瞬態波型時緩沖器的測試負載等等。
  • I/V:電源/電壓的穩態曲線,通常包括了Pull-up(PU):上拉穩態曲線、Pull-down(PD):下拉穩態曲線、GND Clamp (GC):地箝位曲線及Power Clamp(PC): 電源箝位曲線等。這些曲線可視為對上拉下拉電路通道上非線性電阻的描述。
    要注意的是這些曲線的掃描範圍在規格上是要求要由-Vcc至2Vcc (Vcc是理想的供電電壓), 之所以如此是因為在無耗損傳輸的情況下,若接收端因完全開路或完全閟路而造成全反射,則全反射的Vcc振幅再加在原0~Vcc的工作範圍就會有-Vcc至2Vcc間的可能。另一要注意的是對於上拉型電路、如PU和PC, 其電壓波形相對應是是理想電壓Vcc值而非對地。也就是說:在這些波形裡的V=0實際上是V=0 to Vcc即V=Vcc的。有時在除錯的情況下,要把這值轉換過來才不易出錯。SPISim IBIS模組BPro的模型查驗界面就有直接將對應Vcc轉成Vss/Gnd的按鈕可使用。IBISPUPD
    IBISPCGC
  • ISSO PU/PD:這曲線描述了在非理想供應電壓及接地電壓情況時,緩沖器輸出電流的變化。當分析電路含有電源供應電路(Power delivery network)時,必需要有這些資訊才能對電源完整性的影響做出評估。一般而言,當供電端電壓下降或接地端電壓上升時, 橫跨場效體的端點電壓差會減少而使的輸出強度變弱,這即使所謂的閘道調變效應(Gate modulation effect);所以ISSO PU/PD定義了端點電壓在非理想值時,輸出有效電流的變化。IBISVT
  • V/T:這曲線描述了緩沖器切換後瞬態的輸出電壓;在不同的測試設置中(不同的外接測試阻抗及測試電壓),所產生節VT波形會不同;在稍後會細述的運作過理論可看到,一般的IBIS緩沖器應都至少含有兩組在不同測試設置下所產生的VT波形。這些測試情況需涵括了在現實情況下這被建構的IBIS模型會運作的環境。IBISIT
  • I/T:這曲線描述了緩沖器切換後瞬態的取用電流;亦是IBIS5.0(含)之後才有的關鍵字。這波形裡的橫軸的時域變量和上面的VT裡的時域是同一時間點。也就是說, 這IT曲線的資料用以在VT波形裡的同一瞬間點自電源拉出相對應的電流。這”組合電流”(IBIS關鍵字是Composite Current)大致上包含了下面幾種電流成分(詳細請見IBIS Spec.):旁路電流、前級驅動電流、切換電流及端點阻抗電流。

* IBIS模型是如何運作的:
那這些IBIS模型裡IV/IT/VT的波形資訊又是如何在仿真器裡運用的呢? 為簡化起見, 讓我們先不管靜電保護電路(ESD)的PC/GC電路部份,它們在大多數的操作情形都是在反向偏壓區而有極小的漏電電流。對於主要的上拉(PU)及下拉(PD)電路而言,我們可以把它們看做是非線性電阻; 就好比是場效體的P/N通道般,其電阻值隨著端電電壓值而改變。這兩組電路之相互同時運作,便決定了在不同輸出負載情況下的緩沖器的瞬態反應 VT及IT。
IBISKuKd0
在瞬態的上升期間,上拉電路PU可視為由完全斷路變成到完全通路,而下拉電路是由完全通路而變成完全斷路。由於接到地線間的通路成為斷路而造成輸出電壓的升高到邏輯1態。瞬態的下降期間則是相反地運作。於是吾人可定義一”切換係數(Ku(t), Kd(t))”…來相乘到對應的PU/PD電流的輸出。這切換係數的X變數是時域的…即像VT/IT裡的時域變數般。Ku(t)=1表示PU完全通路。反之,Kd(t)=0表示PD完全斷路。這Ku(t)及Kd(t)的組合即可用以說明VT/IT的相對應變化情形。

為著這Ku(t)及Kd(t)的兩個變數,我們也需要有兩組方程式才能對其求解。假設IBIS模型裡有至少兩組的VT波形及其負載測試情況, 則我們恰用這兩組資料來對Ku(t)及Kd(t)進行求解。因為Ku(t)及Kd(t)只和緩沖器裡的場效體切換的經過時間有關、而和其負載無關,所以我們恰可用兩組方程來得到Ku(t)及Kd(t)的真解。這也就是為什麼一般的IBIS模型裡需要至少有兩組的VT波形原因了。
IBISKuKd1

實務上而言,若欲求兩組波形而不可得,則仿真器也可做另一假設:即在每一時間點都滿足Ku(t) + Kd(t) = 1。大體上而言,這組假設在緩沖器的穩態高電位或穩態低電位輸出時是成立的,但在其間的瞬態轉換期間則未必。另一種可能是仿真器也可用IBIS模型裡的斜率(Ramp rate)資料來形成假設的上升/下降VT波形, 以達到能對切換係數求解的目的。
IBISKuKd2
在這架構之下,為求精確起見,所有有關的支流電流最後也都要加入方程式裡,如此解得的切換係數才算精確。這些後來才加上的支流電流包括了常在反向偏壓的ESD電路PC/GC,以及會通過伴隨電容C_COMP的電流等等。比如我們可用I=C_Comp * dV/dt來算出流過伴隨電容的電流且將其自總輸出電流中減去,才不會在日後模型的仿真時造成重算(double counting)的情形。

IBISCComp
最後, 在IBIS 5.0之後的、含電源完整性資訊的、IBIS模型而言,另一組瞬態端點電壓相關的係數也要再加上去。如此,因為閘道調變效應而使得緩沖器輸出變弱的因素才能被列入考量。

以上所簡述的操作細節,讀者若有興趣,可參閱下列的原學術論文:

IBIS模型: 什麼是IBIS(輸入輸出緩沖器信息標準)

IBISLogo
IBIS是 I/O Buffer Information Specification的縮寫,中文即譯為輸入輸出緩沖器信息標準。它是在上世紀末之90年代初為提倡可為不同仿真器或分析工具所接受運作的模型而制定出來的標準。時至今日它仍不斷地演化而時有更新的制定出現。茲在下面列出其規格上的重大進程:

  • V3.2: 利用不同的電流/電壓曲線及電壓/時間曲線來建構出緩沖器在穩態及瞬態的特性。這一規格的模型以供電電壓及接地電壓是理想狀態為前提,故僅能做為信號整合性上的仿真分析所用。
  • V4.0:這一版本首度將其它也常見的建模語言,如Verilog-A, VHDL及Spice等也列入模型的成分之一, 以便能在IBIS標準關鍵字不易更新改變的限制之下亦能有效地為特別的緩沖器進行建模。
  • V5.0:這個版本加入了ISSO PU/PD以為在非理想供電或接地電壓的情況下、諸如由供電網路(Power delivery network)所造成的Voltage droop或Ground bounce情況下、亦能正確地描述緩沖器的行為。其亦包括了[Composite Current]關鍵字以對緩沖器在切換間電流與當下的時刻做出連結。這一版本的模型可以同為信號及電源整合性(SI/PI)共同分析所使用。
  • V5.1:這個版本加入了AMI (Algorithmic Modeling Interface, 即演算法建模界面),以為在單純類比緩沖器之外加上等化器等的建模需求。透過常是用C/C++語言所建構之AMI模型,可和原類別緩沖器為主的模型搭配而在通信渠道做Latch to latch的高速仿真運算以得到誤碼率(Bit error rate)類之參數。最常用在SerDes (串化/解串化器)之界面上。也由於建模語言的低階化、以及建模前對等化器EQ運作細節了解的需求,使得建模的門坎及難度都相對應地增加了。

IBISEvolve

 

在我們談到IBIS這個語詞時,也需同時地對IBIS規格, IBIS檔案以及IBIS模型三者的分別做一簡單說明:

  • IBIS規格:是由IBIS標準委員會經會員投票制定出的規格。廣義上而言ICM (InterConnect Modeling Spec),即連接器建模標準,亦是由這委員會制定出而同屬IBIS規格的一部分。ICM定義出了通信渠道間所有被動性連接元件的建模標準。這些元件包括了如傳輸纜線(Cable)、連接器(Connector)及印刷電路版(PCB)之間的繞線等。之前的EBD (Electric board description)標準即為ICM所取代。
  • IBSI檔案:IBSI檔案是一描述某晶片廠商所生產的某一或更多晶片模型的檔案。一如一般市面上的晶片封裝內含不同的針腳(Pin)…每一針腳內連到一同的電路輸入;IBSI檔案在檔案前面也有這製造廠商等的資訊,而後是晶片封裝的不同針解及其與其相連之緩沖器模型名稱,最後才是緩沖器單獨的模型資料。故一個IBSI檔案可內含有許多的IBSI模型,也可含有如封裝模型(Package model)之相關資訊。
  • IBIS模型:這即是我們一般所言之緩沖器模型;IBIS規格定出十數種不同類的緩沖器模型,每一種類別有其所必需要有的模型資料。一般來說,這些資料包含了如:電流/電壓(穩態)、電壓/瞬態、電流/瞬態等的對應表格;也包括了這個模型在建模時的運作及負載環境設置等等。如果模型在仿真時超出了這些當初建模時所採用的設計範圍,則仿真出來的效果也就未必準確了。
IBIS Files vs Models

IBIS 檔案 vs 模型

Viewing model data of an IBIS file in SPIBPro

在SPIBPro中查看一IBIS檔案內不同模型的波形資料