文獻(xiàn)標(biāo)識碼: A
DOI:10.16157/j.issn.0258-7998.199807
中文引用格式: 廖璐,候春源,李躍平,等. 行為級模型功能比對驗證的自動方法學(xué)[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ù)的進(jìn)步與發(fā)展,混合信號芯片現(xiàn)今被廣泛使用,該芯片設(shè)計領(lǐng)域通常需要采用大量測試矢量進(jìn)行全芯片功能驗證仿真,因此,對模擬和混合信號模塊建立快速、準(zhǔn)確的行為級模型至關(guān)重要[1]。這些行為級模型既要和實際電路端口一致,還要能正確體現(xiàn)實際電路的功能和重要行為特性,且不能對全芯片功能驗證仿真速度造成太大影響[2]。為了更準(zhǔn)確地描述模擬和混合信號模塊的行為特性,例如電路中的電壓都是實數(shù)值,而不是簡單的0和1,采用了Wreal模型和SV-UDT來實現(xiàn)模塊實數(shù)電壓的建模。此外,為保證正確、有效和全面的全芯片功能驗證仿真,需要對各個模塊的行為級模型和晶體管級電路進(jìn)行功能比對驗證。采用Cadence XPS仿真器的矢量檢查功能對行為級模型的Verilog仿真結(jié)果和晶體管級電路的Spice仿真結(jié)果進(jìn)行比對驗證,把這套方法稱為BVS流程或者BVS檢查。
在此之前,利用現(xiàn)有的EDA工具,只能進(jìn)行邏輯狀態(tài)的BVS矢量檢查,而不能進(jìn)行實數(shù)類型的矢量檢查,因此,對EDA工具提出了新的要求,需要其支持實數(shù)類型的矢量檢查。此外,功能比對驗證時所采用的輸入激勵傳統(tǒng)上是根據(jù)工程師對于電路模塊的理解手動生成的,這樣采用的輸入激勵覆蓋率不夠全面,因此,需要一種自動生成覆蓋率全面的輸入激勵的方法。
基于BVS功能比對驗證的重要性,本文描述了一種行為級模型功能比對驗證的自動方法學(xué),采用Cadence XPS仿真器的矢量檢查功能,可以同時實現(xiàn)邏輯狀態(tài)和實數(shù)類型的自動比對驗證。
1 傳統(tǒng)的邏輯狀態(tài)矢量檢查
傳統(tǒng)的邏輯狀態(tài)矢量檢查可以通過圖1所示的BVS自動比對流程實現(xiàn)。其中,模塊的行為級模型用NC-Verilog進(jìn)行仿真,對應(yīng)的晶體管級電路用XPS進(jìn)行仿真,并通過在XPS仿真中添加測試矢量文件,對上述兩種仿真結(jié)果進(jìn)行自動比對,用以驗證行為級模型和晶體管級電路的功能是否匹配。
圖2給出了通過行為級模型Verilog仿真生成的測試矢量文件以及XPS如何基于該文件進(jìn)行自動比對的實例。生成的測試矢量文件主要包含了如下幾個分支:vname、io定義,檢查時間窗口以及信號切換監(jiān)測。其中,vname用于列出所仿模塊所有輸入和輸出pin腳的名字。io定義用于說明每個pin腳的類型,輸入pin為“i”,輸出pin為“o”,對于矢量文件中的輸入pin腳,它在XPS仿真時會根據(jù)矢量文件中設(shè)定的Vih和Vil值轉(zhuǎn)換成PWL電壓源;對于矢量文件中的輸出pin腳,它的值會被認(rèn)作為預(yù)計邏輯輸出,然后XPS的模擬實際輸出會根據(jù)矢量文件中設(shè)定的Voh和Vol值轉(zhuǎn)換成實際邏輯輸出,并與預(yù)計邏輯輸出進(jìn)行比對驗證;對于io定義為“u”的pin腳,表示為沒有用到的pin腳,仿真時會被接到高阻態(tài),并且不會對這個pin腳進(jìn)行任何比對驗證。檢查時間窗口定義了在哪個時間段對實際輸出和預(yù)計輸出進(jìn)行比對,通常會選擇實際輸出信號建立穩(wěn)定后的時間窗口,如圖3所示。信號切換監(jiān)測會打印出所有輸入pin腳和輸出pin腳的信號切換值,以確保用于行為級模型Verilog仿真和晶體管級電路Spice仿真的輸入激勵相同,并且所有相應(yīng)的輸出都會被比對驗證。
進(jìn)行邏輯狀態(tài)自動比對時,如果實際邏輯輸出和預(yù)計邏輯輸出不匹配,也即是違反了匹配需求條件,如表1所示,則警告和錯誤信息會被寫入矢量檢查出錯報告中,如圖4所示。如果完全匹配,則出錯報告會是一個空文件。
2 新改進(jìn)的實數(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仿真器進(jìn)行邏輯狀態(tài)矢量檢查的基礎(chǔ)上,對EDA供應(yīng)商Cadence提出了實數(shù)類型矢量檢查的新需求,具體的實現(xiàn)細(xì)節(jié)如下:首先,在矢量文件中增加了一個新的參數(shù)“sig_type”,用來幫助區(qū)分是邏輯狀態(tài)檢查還是實數(shù)類型檢查。此外,還增加了2個新的參數(shù)用來定義電壓容差,一個是允許的絕對誤差(abstol),另一個是允許的相對誤差(reltol)。這個電壓容差,定義了行為級模型Verilog仿真預(yù)計實數(shù)輸出和晶體管級電路Spice仿真實際模擬輸出之間允許的電壓誤差,只有當(dāng)實際模擬輸出在“預(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之間時,兩者才算匹配。
除此以外,還提出了進(jìn)一步的改進(jìn)需求,例如需要矢量檢查支持實數(shù)類型的x狀態(tài)(`wrealXstate)檢查和實數(shù)類型的z狀態(tài)(`wrealZstate)檢查。當(dāng)進(jìn)行z狀態(tài)檢查時,如果行為級模型的預(yù)計實數(shù)輸出是`wrealZstate,對應(yīng)晶體管級電路的實際模擬輸出需要是高阻狀態(tài),否則不匹配;當(dāng)進(jìn)行x狀態(tài)檢查時,如果行為級模型的預(yù)計實數(shù)輸出是`wrealXstate,對應(yīng)晶體管級電路的實際模擬輸出需要是多驅(qū)動狀態(tài),否則不匹配。這些進(jìn)一步的改進(jìn)需求也已經(jīng)在XPS仿真器中實現(xiàn)了。
圖7給出了一個用于實數(shù)類型矢量檢查的測試矢量文件的實例。行為級模型Verilog仿真的預(yù)計實數(shù)輸出可以和晶體管級電路Spice仿真的實際模擬輸出在檢查時間窗口內(nèi)直接進(jìn)行自動比對驗證,如圖8所示。
進(jìn)行實數(shù)類型自動比對時,如果實際模擬輸出和預(yù)計實數(shù)輸出不匹配,也即是違反了匹配需求條件,如表2所示,則警告和錯誤信息會被寫入矢量檢查出錯報告中,如圖9所示。如果完全匹配,則出錯報告會是一個空文件。
3 用于產(chǎn)生輸入激勵覆蓋率全面的IO配置表
傳統(tǒng)上,功能比對驗證時所采用的輸入激勵是根據(jù)工程師對于電路模塊的理解手動生成的,然而這樣采用的輸入激勵覆蓋率不夠全面,進(jìn)而影響功能比對驗證的準(zhǔn)確度[4]。為了解決這個問題,提出了一種利用帶設(shè)計約束的IO配置表產(chǎn)生覆蓋率全面的輸入激勵的方法,圖10給出了這種方法的工作流程圖。
IO配置表不僅用于定義產(chǎn)生輸入激勵的輸入約束,也用于定義輸出比較的輸出約束。例如,對于用作輸入的pin腳,其設(shè)計約束包含:(1)Vih/Vil,用于指定邏輯高和邏輯低狀態(tài)轉(zhuǎn)換成模擬輸入時的電壓值;(2)信號強(qiáng)制,用于定義是否強(qiáng)制某個輸入信號為邏輯狀態(tài)“1/0/x/z”中的某一個或者遍歷這些狀態(tài);(3)限制性輸入,用于定義某個輸入信號和其他輸入信號之間的相關(guān)性;(4)優(yōu)先級,用于指定遍歷某些輸入信號組合時的優(yōu)先順序;(5)周期,用于定義輸入組合激勵之間的間隔周期。
對于用作輸出的pin腳,設(shè)計約束包含:(1)是否包含實數(shù)電壓值,如果“是”,則對這個輸出信號既要進(jìn)行邏輯狀態(tài)檢查,又要進(jìn)行實數(shù)類型檢查;如果“否”,則只對這個輸出信號進(jìn)行邏輯狀態(tài)檢查;(2)Voh/Vol,用于指定邏輯狀態(tài)檢查時,XPS實際模擬輸出電壓轉(zhuǎn)換成邏輯高和邏輯低狀態(tài)對應(yīng)的電壓值;(3)沒有用到的pin腳,用于指定是否要跳過對這個輸出信號的矢量檢查;(4)Z態(tài)檢查,指定是否要對這個輸出信號進(jìn)行Z狀態(tài)檢查;(5)X態(tài)檢查,指定是否要對這個輸出信號進(jìn)行X狀態(tài)檢查。
4 功能比對驗證的自動方法學(xué)
混合信號芯片設(shè)計中需要對大量模塊進(jìn)行行為級建模和功能比對驗證,因此需要引入一種自動仿真方法來自動生成功能比對模塊清單,啟動行為級模型Verilog仿真和晶體管級電路Spice仿真,進(jìn)而從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)生成的測試矢量文件,并進(jìn)行矢量檢查,邏輯狀態(tài)矢量檢查和實數(shù)類型矢量檢查都會在此涉及;第七步,從邏輯狀態(tài)矢量檢查和實數(shù)類型矢量檢查結(jié)果中提取有用信息并生成自動比對檢查報告。
5 結(jié)論
在混合信號設(shè)計中,創(chuàng)建準(zhǔn)確的行為級模型對于能否實現(xiàn)正確、有效和全面的全芯片功能驗證至關(guān)重要。因此,對行為級模型和晶體管級設(shè)計之間進(jìn)行功能比對驗證非常關(guān)鍵。Wreal模型和SV-UDT可以幫助實現(xiàn)更準(zhǔn)確的行為級模型。本文介紹了一種基于覆蓋率全面的輸入激勵,對大量電路模塊同時進(jìn)行邏輯狀態(tài)矢量檢查和實數(shù)類型矢量檢查,從而實現(xiàn)行為級模型功能比對驗證的自動方法學(xué)。實數(shù)類型矢量檢查是我們向EDA供應(yīng)商Cadence提出的一種新的概念和需求,該需求已經(jīng)在XPS仿真器中成功實現(xiàn)。在此基礎(chǔ)上,XPS實數(shù)類型矢量檢查進(jìn)一步改進(jìn),以支持高阻態(tài)檢查和多驅(qū)動態(tài)檢查。覆蓋率全面的輸入激勵是根據(jù)帶設(shè)計約束的IO配置表自動生成的。本文提出的這套自動方法學(xué),可以幫助顯著提高全芯片驗證的精度、效率和覆蓋率。
參考文獻(xiàn)
[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)