仿真測試是EDA設(shè)計過程中驗(yàn)證邏輯功能正確性的重要手段.由于驗(yàn)證的復(fù)雜度隨設(shè)計規(guī)模成指數(shù)增長,對于占用5000以上邏輯單元(約十萬等效門)以上的EDA設(shè)計而言,其激勵信號的注人與仿真結(jié)果的分析難以手動進(jìn)行.設(shè)計者通常需要借助EDA開發(fā)環(huán)境外的其他工程工具,或結(jié)合其他高級程序設(shè)計語言來完成.
然而,上述研究中的激勵數(shù)據(jù)雖具有可配置的特點(diǎn),但注人這些數(shù)據(jù)的觸發(fā)方式卻缺乏可配置能力.例如龍芯2號的仿真驗(yàn)證[41使用了可配置的隨機(jī)程序生成器 CPRG(Configurable Random Program Generator)來產(chǎn)生測試向量,從而大大提高了效率和測試覆蓋率.但由于僅使用了定時觸發(fā)的方式,該系統(tǒng)僅在仿真初始化階段進(jìn)行注人,類似的案例還有.這種定時觸發(fā)的仿真方法與仿真過程缺少交互,因此與真實(shí)系統(tǒng)存在較大差別.特別是對于需要根據(jù)仿真過程中某個信號的狀態(tài)來注人故障或干擾信號,以檢測電路的容錯能力的案例,采用定時觸發(fā)方式往往難以達(dá)到所需的驗(yàn)證效果.
采用事件觸發(fā)方式可以解決定時觸發(fā)的種種弊端.然而要實(shí)現(xiàn)觸發(fā)事件的可配置,必須先實(shí)現(xiàn)測試臺代碼的可配置一 個典型的例子是信號處理系統(tǒng).Husmann等采用了Perl腳本編寫的配置管理模塊來管理事先編寫的測試臺和測試向量,并維護(hù)仿真結(jié)果記錄.配置管理的引人使得該系統(tǒng)具有一定的靈活性.但由于測試臺仍需事先編寫,不能稱為完全的可配置仿真驗(yàn)證系統(tǒng).
本文提出一種針對十萬門以上規(guī)模集成電路的可配置仿真測試方法,使用配置腳本作為輸入,通過CTG(Configurable Testbench Generator)自動產(chǎn)生測試臺代碼,實(shí)現(xiàn)了觸發(fā)事件的完全可配置.本方法生成的測試系統(tǒng)中注人邏輯與數(shù)據(jù)文件分離,仍然可以通過Matlab等工程軟件生成測試向量.實(shí)驗(yàn)表明該方法可避免重復(fù)編碼帶來的低效率和可靠性的降低,并節(jié)省保存仿真狀態(tài)所需的存儲空間.
1 可配置的仿真驗(yàn)證系統(tǒng)
1.1 基干CTG的仿真驗(yàn)證環(huán)境
基于可配置測試臺生成器 CTG的仿真驗(yàn)證環(huán)境是實(shí)現(xiàn)可配置的事件觸發(fā)方式的前提,它包含信號庫、配置腳本、測試臺生成引擎、激勵數(shù)據(jù)庫和仿真驗(yàn)證環(huán)境,如圖1所示.信號庫定義了待測系統(tǒng)的信號集合.配置腳本定義了激勵、觸發(fā)模式、事件與記錄點(diǎn),這些信息構(gòu)成測試臺生成規(guī)則,實(shí)現(xiàn)了觸發(fā)事件的可配置.測試臺生成引擎是系統(tǒng)的核心,它根據(jù)配置腳本指定的規(guī)則自動產(chǎn)生測試臺代碼,測試臺代碼中包含對被測電路的引用.激勵數(shù)據(jù)庫包含所需注人的數(shù)據(jù)以及其所對應(yīng)的相對于觸發(fā)點(diǎn)的注人時間,激勵數(shù)據(jù)仍然可以按照上述的方法產(chǎn)生,對此本文不作深人討論.
1.2 數(shù)據(jù)結(jié)構(gòu)
用于描述可配置測試臺產(chǎn)生規(guī)則的信息存儲在信號庫和配置腳本中,這些信息的邏輯結(jié)構(gòu)如下.信號庫定義了信號集合,對于給定的被測電路C,信號庫中的信息固定不變.有如下定義:
定義 1 信號集合
定義2 激勵(Stimulation)
定義3 觸發(fā)模式(Trigger)
定義 4 時間觸發(fā)事件
定義5 跳變觸發(fā)事件
定義6 記錄點(diǎn)
1.3 測試臺生成
1.3.1 測試臺結(jié)構(gòu)
由CTG生成的測試臺具有如下結(jié)構(gòu),如圖 2所示
對于待注人信號sig_i,或待存儲信號集合U_i,其觸發(fā)條件具有如下形式:
對于待注人信號sig_i,其注人任務(wù)具有如下形式:
對于待存儲信號集合U_i, 其存儲任務(wù)具有如下基本形式:
為了便于分析所存儲的數(shù)據(jù),實(shí)際保存數(shù)據(jù)時往往加人一些附加信息,如當(dāng)前時間、信號編號等.具體格式取決于所使用的離線分析工具,本文對此不進(jìn)行具體討論.
1.3.2 注入事件解析
由于不能在多個always塊中對同一信號賦值,因此必須遍歷激勵集合,并按照待注人信號提取觸發(fā)條件加人同一always塊中.激勵信號注人事件的解析圍繞激勵集合S展開,算法如下:
在復(fù)位狀態(tài),各激勵s未激活,此時s.i被驅(qū)動為指定的缺省值s.v,加人初始化任務(wù).CTG對于S中給定的每個s=(i,v,c,P,Ts),生成如下集合:
對于T1中的各觸發(fā)模式t1,CTG生成 t1.e對 應(yīng)的計數(shù)器,將計數(shù)器的超時信號加人s.t觸發(fā)條件的if語句中,并在if程序體中按照t1.d的設(shè)定生成對應(yīng)的注人任務(wù).
對于T2中的各觸發(fā)模式t2,CTG生成t2.e.u與t2.e.j比較的表達(dá)式,加人s.i觸發(fā)條件的if語句中.對于t2.e.m不為循環(huán)觸發(fā)方式時還需生成對應(yīng)的計數(shù)器,同時將計數(shù)器未滿條件加人if語句.最后在if程序體中按照t2.d的設(shè)定生成對應(yīng)的注人任務(wù).
1.3.3 存儲事件解析
系統(tǒng)仿真狀態(tài)的保存同樣受事件觸發(fā),但并不要求在同一塊語句中進(jìn)行存儲,因此其結(jié)構(gòu)相對簡單.算法如下:
CTG對于R中給定的每個r=(Er,w,U1)生成如下集合:
對于E1中的各事件e1,CTG生成對應(yīng)的計數(shù)器,將這些計數(shù)器的超時信號組成邏輯"與"表達(dá)式。
對于E2中的各事件e2,CTG生成e.u與e.j比較的表達(dá)式,并與超時信號"與"表達(dá)式一起組成邏輯"與"表達(dá)式.該表達(dá)式加人r.Ur觸發(fā)條件的if語句中,并在if程序體中生成對應(yīng)的存儲任務(wù).
2 實(shí)驗(yàn)驗(yàn)證及分析
2.1 測試對象與實(shí)驗(yàn)環(huán)境
可配置仿真測試框架被用于自主研發(fā)的1553B總線協(xié)議IP核、基于類EIA架構(gòu)的雙核SIP處理器模型、可重構(gòu)的ATPA處理器模型等仿真測試中.以1553B總線協(xié)議IP核為例:該IP核采用VerilogHDL編寫,由45個模塊組成.這些模塊經(jīng)過編譯生成時序仿真庫,并被包含在仿真測試臺的頂層模塊中.需注人的激勵信號包括:來自外部處理器的讀、寫、片選信號、數(shù)據(jù)總線、地址總線、DMA響應(yīng)信號、以及 1553B總線數(shù)據(jù).
需要保存的狀態(tài)信號包括:存儲器數(shù)據(jù)、1553B總線數(shù)據(jù)、關(guān)鍵寄存器數(shù)據(jù)(狀態(tài)字、命令塊指針、當(dāng)前命令字)、以及系統(tǒng)主狀態(tài)機(jī)的狀態(tài)變化數(shù)據(jù)經(jīng)過映射,該 IP核在 Altera的 Cyclone EPIC12器件中占用2882個邏輯單元,主時鐘頻率為12MHz.
仿真試驗(yàn)在使用IntelPentium42.6GHz處理器、512Mbyte內(nèi)存的PC機(jī)上進(jìn)行,使用Quartus115.0軟件進(jìn)行綜合與映射,使用 ActiveHDL.6.2軟件進(jìn)行仿真.
2.2 實(shí)驗(yàn)結(jié)果分析
在IP核的每種典型配置下,BC模式和RT模式除了正常傳輸外,分別需要83套和60套故障激勵注人邏輯.在這145套激勵邏輯下分別注人1024組數(shù)據(jù)進(jìn)行了實(shí)驗(yàn).實(shí)驗(yàn)系統(tǒng)中測試臺生成引擎采用 C++語言編寫,代碼量約700行.僅需通過修改配置腳本便可使用CTG生成上述測試臺.其中配置腳本規(guī)模在50~70行,所生成的測試臺代碼約為250~350行.所需編寫的代碼量對比如圖 3所示.
從圖3可以看出,隨著仿真次數(shù)的增加,使用基于CTG的仿真驗(yàn)證系統(tǒng)所需編寫的代碼量遠(yuǎn)小于不可配置的仿真驗(yàn)證系統(tǒng).
使用基于CTG的事件觸發(fā)進(jìn)行仿真狀態(tài)存儲可節(jié)省存儲空間.以實(shí)驗(yàn)系統(tǒng)在BC模式下完成1024組正常數(shù)據(jù)傳輸為例,保存三種典型信號的仿真狀態(tài)所需的存儲空間對比如表 1所示(不包含存儲時戳所需的空間.)
表1中的數(shù)據(jù)表明,對于不需要頻繁存儲的仿真信號,采用事件觸發(fā)機(jī)制可大大減少存儲空間的開銷.值得注意的是,動態(tài)產(chǎn)生測試臺后需要重新編譯仿真庫,從而產(chǎn)生了額外的時間開銷 在2.1節(jié)介紹的實(shí)驗(yàn)環(huán)境中,仿真庫的編譯用時小于1s,仿真初始化需17s,每仿真100組數(shù)據(jù)約用時700 900&由此可知仿真過程累計用時約289.2~369.8h,其中編譯仿真庫的開銷小于145s,可忽略不計.
3 結(jié)論
本文提出的可配置仿真驗(yàn)證方法適用而不僅限于十萬門以上的超大規(guī)模 EDA設(shè)計,相對于已有研究具有下列特點(diǎn):
(1)基于事件的觸發(fā)機(jī)制,更接近真實(shí)系統(tǒng)
(2)可配置,自動產(chǎn)生測試臺代碼,減少編碼量提高可靠性
(3)節(jié)省保存仿真狀態(tài)所需的存儲空間同時,由于具有可配置能力,一旦完成測試臺生成引擎僅需修改信號庫和配置腳本就能用于不同電路設(shè)計的仿真驗(yàn)證.