文獻標識碼: A
DOI:10.16157/j.issn.0258-7998.199807
中文引用格式: 廖璐,,候春源,,李躍平,等. 行為級模型功能比對驗證的自動方法學[J].電子技術(shù)應(yīng)用,,2019,,45(8):63-67.
英文引用格式: Liao Lu,Hou Chunyuan,,Li Yueping,,et al. Automatic simulation method for functional equivalence check[J]. Application of Electronic Technique,2019,,45(8):63-67.
0 引言
隨著集成電路技術(shù)的進步與發(fā)展,,混合信號芯片現(xiàn)今被廣泛使用,該芯片設(shè)計領(lǐng)域通常需要采用大量測試矢量進行全芯片功能驗證仿真,,因此,,對模擬和混合信號模塊建立快速、準確的行為級模型至關(guān)重要[1],。這些行為級模型既要和實際電路端口一致,,還要能正確體現(xiàn)實際電路的功能和重要行為特性,且不能對全芯片功能驗證仿真速度造成太大影響[2],。為了更準確地描述模擬和混合信號模塊的行為特性,,例如電路中的電壓都是實數(shù)值,而不是簡單的0和1,,采用了Wreal模型和SV-UDT來實現(xiàn)模塊實數(shù)電壓的建模,。此外,為保證正確,、有效和全面的全芯片功能驗證仿真,,需要對各個模塊的行為級模型和晶體管級電路進行功能比對驗證。采用Cadence XPS仿真器的矢量檢查功能對行為級模型的Verilog仿真結(jié)果和晶體管級電路的Spice仿真結(jié)果進行比對驗證,,把這套方法稱為BVS流程或者BVS檢查,。
在此之前,利用現(xiàn)有的EDA工具,,只能進行邏輯狀態(tài)的BVS矢量檢查,,而不能進行實數(shù)類型的矢量檢查,,因此,對EDA工具提出了新的要求,,需要其支持實數(shù)類型的矢量檢查,。此外,功能比對驗證時所采用的輸入激勵傳統(tǒng)上是根據(jù)工程師對于電路模塊的理解手動生成的,,這樣采用的輸入激勵覆蓋率不夠全面,,因此,需要一種自動生成覆蓋率全面的輸入激勵的方法,。
基于BVS功能比對驗證的重要性,,本文描述了一種行為級模型功能比對驗證的自動方法學,采用Cadence XPS仿真器的矢量檢查功能,,可以同時實現(xiàn)邏輯狀態(tài)和實數(shù)類型的自動比對驗證,。
1 傳統(tǒng)的邏輯狀態(tài)矢量檢查
傳統(tǒng)的邏輯狀態(tài)矢量檢查可以通過圖1所示的BVS自動比對流程實現(xiàn)。其中,,模塊的行為級模型用NC-Verilog進行仿真,,對應(yīng)的晶體管級電路用XPS進行仿真,并通過在XPS仿真中添加測試矢量文件,,對上述兩種仿真結(jié)果進行自動比對,,用以驗證行為級模型和晶體管級電路的功能是否匹配。
圖2給出了通過行為級模型Verilog仿真生成的測試矢量文件以及XPS如何基于該文件進行自動比對的實例,。生成的測試矢量文件主要包含了如下幾個分支:vname,、io定義,檢查時間窗口以及信號切換監(jiān)測,。其中,,vname用于列出所仿模塊所有輸入和輸出pin腳的名字。io定義用于說明每個pin腳的類型,,輸入pin為“i”,,輸出pin為“o”,,對于矢量文件中的輸入pin腳,,它在XPS仿真時會根據(jù)矢量文件中設(shè)定的Vih和Vil值轉(zhuǎn)換成PWL電壓源;對于矢量文件中的輸出pin腳,,它的值會被認作為預(yù)計邏輯輸出,,然后XPS的模擬實際輸出會根據(jù)矢量文件中設(shè)定的Voh和Vol值轉(zhuǎn)換成實際邏輯輸出,并與預(yù)計邏輯輸出進行比對驗證,;對于io定義為“u”的pin腳,,表示為沒有用到的pin腳,仿真時會被接到高阻態(tài),,并且不會對這個pin腳進行任何比對驗證,。檢查時間窗口定義了在哪個時間段對實際輸出和預(yù)計輸出進行比對,,通常會選擇實際輸出信號建立穩(wěn)定后的時間窗口,如圖3所示,。信號切換監(jiān)測會打印出所有輸入pin腳和輸出pin腳的信號切換值,,以確保用于行為級模型Verilog仿真和晶體管級電路Spice仿真的輸入激勵相同,并且所有相應(yīng)的輸出都會被比對驗證,。
進行邏輯狀態(tài)自動比對時,,如果實際邏輯輸出和預(yù)計邏輯輸出不匹配,也即是違反了匹配需求條件,,如表1所示,,則警告和錯誤信息會被寫入矢量檢查出錯報告中,如圖4所示,。如果完全匹配,,則出錯報告會是一個空文件。
2 新改進的實數(shù)類型矢量檢查
只包含邏輯狀態(tài)的行為級模型用來描述模擬模塊行為特性會有較大的局限性,。如圖5所示,,例如:(1)不能描述輸出電壓和電源電壓之間的相關(guān)性;(2)電路中被不同模塊多級驅(qū)動的節(jié)點不能被正確描述,,從而不能正確反映實際電路真實情況,;(3)模塊內(nèi)部中被多級驅(qū)動的節(jié)點不能被正確描述,對應(yīng)的電壓轉(zhuǎn)換不能被正確體現(xiàn)出來,。Wreal模型和SV-UDT的引入和組合應(yīng)用可以幫助克服這些局限性[3],,通過SV-UDT,可以基于建模需求去定義一些特定的信號類型,,例如同一個端口可以包含邏輯狀態(tài)和實數(shù)值兩種類型,,因此這就需要矢量檢查同時支持邏輯狀態(tài)和實數(shù)類型兩種檢查。圖6給出了Wreal模型和SV-UDT組合應(yīng)用的一個具體示例,。
在利用XPS仿真器進行邏輯狀態(tài)矢量檢查的基礎(chǔ)上,,對EDA供應(yīng)商Cadence提出了實數(shù)類型矢量檢查的新需求,具體的實現(xiàn)細節(jié)如下:首先,,在矢量文件中增加了一個新的參數(shù)“sig_type”,,用來幫助區(qū)分是邏輯狀態(tài)檢查還是實數(shù)類型檢查。此外,,還增加了2個新的參數(shù)用來定義電壓容差,,一個是允許的絕對誤差(abstol),另一個是允許的相對誤差(reltol),。這個電壓容差,,定義了行為級模型Verilog仿真預(yù)計實數(shù)輸出和晶體管級電路Spice仿真實際模擬輸出之間允許的電壓誤差,只有當實際模擬輸出在“預(yù)計實數(shù)輸出±(絕對誤差+預(yù)計實數(shù)輸出*相對誤差)”范圍以內(nèi)時,兩者才算匹配,。例如,,行為級模型Verilog仿真預(yù)計實數(shù)輸出為1.2 V,允許的絕對誤差為0.01,,允許的相對誤差為0.1,,也就是10%,根據(jù)公式計算,,晶體管級電路Spice仿真實際模擬輸出只有在1.07 V~1.33 V之間時,,兩者才算匹配。
除此以外,,還提出了進一步的改進需求,,例如需要矢量檢查支持實數(shù)類型的x狀態(tài)(`wrealXstate)檢查和實數(shù)類型的z狀態(tài)(`wrealZstate)檢查。當進行z狀態(tài)檢查時,,如果行為級模型的預(yù)計實數(shù)輸出是`wrealZstate,,對應(yīng)晶體管級電路的實際模擬輸出需要是高阻狀態(tài),否則不匹配,;當進行x狀態(tài)檢查時,,如果行為級模型的預(yù)計實數(shù)輸出是`wrealXstate,對應(yīng)晶體管級電路的實際模擬輸出需要是多驅(qū)動狀態(tài),,否則不匹配,。這些進一步的改進需求也已經(jīng)在XPS仿真器中實現(xiàn)了。
圖7給出了一個用于實數(shù)類型矢量檢查的測試矢量文件的實例,。行為級模型Verilog仿真的預(yù)計實數(shù)輸出可以和晶體管級電路Spice仿真的實際模擬輸出在檢查時間窗口內(nèi)直接進行自動比對驗證,,如圖8所示。
進行實數(shù)類型自動比對時,,如果實際模擬輸出和預(yù)計實數(shù)輸出不匹配,,也即是違反了匹配需求條件,如表2所示,,則警告和錯誤信息會被寫入矢量檢查出錯報告中,,如圖9所示。如果完全匹配,,則出錯報告會是一個空文件,。
3 用于產(chǎn)生輸入激勵覆蓋率全面的IO配置表
傳統(tǒng)上,功能比對驗證時所采用的輸入激勵是根據(jù)工程師對于電路模塊的理解手動生成的,,然而這樣采用的輸入激勵覆蓋率不夠全面,,進而影響功能比對驗證的準確度[4]。為了解決這個問題,,提出了一種利用帶設(shè)計約束的IO配置表產(chǎn)生覆蓋率全面的輸入激勵的方法,圖10給出了這種方法的工作流程圖。
IO配置表不僅用于定義產(chǎn)生輸入激勵的輸入約束,,也用于定義輸出比較的輸出約束,。例如,對于用作輸入的pin腳,,其設(shè)計約束包含:(1)Vih/Vil,,用于指定邏輯高和邏輯低狀態(tài)轉(zhuǎn)換成模擬輸入時的電壓值;(2)信號強制,,用于定義是否強制某個輸入信號為邏輯狀態(tài)“1/0/x/z”中的某一個或者遍歷這些狀態(tài),;(3)限制性輸入,用于定義某個輸入信號和其他輸入信號之間的相關(guān)性,;(4)優(yōu)先級,,用于指定遍歷某些輸入信號組合時的優(yōu)先順序;(5)周期,,用于定義輸入組合激勵之間的間隔周期,。
對于用作輸出的pin腳,設(shè)計約束包含:(1)是否包含實數(shù)電壓值,,如果“是”,,則對這個輸出信號既要進行邏輯狀態(tài)檢查,又要進行實數(shù)類型檢查,;如果“否”,,則只對這個輸出信號進行邏輯狀態(tài)檢查;(2)Voh/Vol,,用于指定邏輯狀態(tài)檢查時,,XPS實際模擬輸出電壓轉(zhuǎn)換成邏輯高和邏輯低狀態(tài)對應(yīng)的電壓值;(3)沒有用到的pin腳,,用于指定是否要跳過對這個輸出信號的矢量檢查,;(4)Z態(tài)檢查,指定是否要對這個輸出信號進行Z狀態(tài)檢查,;(5)X態(tài)檢查,,指定是否要對這個輸出信號進行X狀態(tài)檢查。
4 功能比對驗證的自動方法學
混合信號芯片設(shè)計中需要對大量模塊進行行為級建模和功能比對驗證,,因此需要引入一種自動仿真方法來自動生成功能比對模塊清單,,啟動行為級模型Verilog仿真和晶體管級電路Spice仿真,進而從XPS仿真中自動生成邏輯狀態(tài)矢量檢查出錯報告和實數(shù)類型矢量檢查出錯報告,,最后提取其中的有用信息并匯總到自動比對檢查報告中,。
這套功能比對驗證的自動仿真方法流程圖如圖11所示:第一步,根據(jù)電路模塊清單從Cadence數(shù)據(jù)庫中抽取出行為級模型和Spice網(wǎng)表,;第二步,,為每個模塊生成帶有所有pin腳的IO配置表;第三步,為IO配置表中的所有輸入pin腳和輸出pin腳定義設(shè)計約束,,這一步可以幫助確保生成覆蓋率全面的輸入激勵,;第四步,基于IO配置表,,自動生成每個模塊的行為級模型Verilog仿真平臺和晶體管級電路Spice仿真平臺,;第五步,用NC-Verilog啟動所有的行為級模型Verilog仿真,,并生成矢量檢查需要用到的測試矢量文件,;第六步,用XPS啟動所有的晶體管級電路Spice仿真,,仿真時會用到已經(jīng)生成的測試矢量文件,,并進行矢量檢查,邏輯狀態(tài)矢量檢查和實數(shù)類型矢量檢查都會在此涉及,;第七步,,從邏輯狀態(tài)矢量檢查和實數(shù)類型矢量檢查結(jié)果中提取有用信息并生成自動比對檢查報告。
5 結(jié)論
在混合信號設(shè)計中,,創(chuàng)建準確的行為級模型對于能否實現(xiàn)正確,、有效和全面的全芯片功能驗證至關(guān)重要。因此,,對行為級模型和晶體管級設(shè)計之間進行功能比對驗證非常關(guān)鍵,。Wreal模型和SV-UDT可以幫助實現(xiàn)更準確的行為級模型。本文介紹了一種基于覆蓋率全面的輸入激勵,,對大量電路模塊同時進行邏輯狀態(tài)矢量檢查和實數(shù)類型矢量檢查,,從而實現(xiàn)行為級模型功能比對驗證的自動方法學。實數(shù)類型矢量檢查是我們向EDA供應(yīng)商Cadence提出的一種新的概念和需求,,該需求已經(jīng)在XPS仿真器中成功實現(xiàn),。在此基礎(chǔ)上,XPS實數(shù)類型矢量檢查進一步改進,,以支持高阻態(tài)檢查和多驅(qū)動態(tài)檢查,。覆蓋率全面的輸入激勵是根據(jù)帶設(shè)計約束的IO配置表自動生成的。本文提出的這套自動方法學,,可以幫助顯著提高全芯片驗證的精度,、效率和覆蓋率。
參考文獻
[1] THELEN D,,MACDONALD J.Simulating mixed analog-digital circuits on a digital simulator[C].ICCAD,,1988:254-257.
[2] MALCOVATI P,BRIGATI S,,F(xiàn)RANCESCONI F,,et al.Behavioral modeling of switched-capacitor sigma-delta modulators[J].IEEE Transactions on Circuits System I,,2003,50(3):352-364.
[3] O’LEARY M,,KOLPEKWAR A.Cadence wreal technology contribution to Accellera Verilog-AMS standard[Z],,2010.
[4] LIM B C,,KIM J,,HOROWITZ M.An efficient test vector generation for checking analog/mixed-signal functional models[C].Proceeding DAC,2010:767-772.
作者信息:
廖 璐1,,候春源1,,李躍平1,王 美1,,劉歡艷2,,黃丞權(quán)2,徐南南2,,董麗霞2
(1.紫光長存(上海)集成電路有限公司,,上海200120;2.Cadence Design System,,上海200120)