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