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