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