<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > EDA/PCB > 設計應用 > 一種可配置的EDA仿真驗證方法

一種可配置的EDA仿真驗證方法

作者: 時(shí)間:2018-07-27 來(lái)源:網(wǎng)絡(luò ) 收藏

仿真測試是設計過(guò)程中驗證邏輯功能正確性的重要手段.由于驗證的復雜度隨設計規模成指數增長(cháng),對于占用5000以上邏輯單元(約十萬(wàn)等效門(mén))以上的設計而言,其激勵信號的注人與仿真結果的分析難以手動(dòng)進(jìn)行.設計者通常需要借助開(kāi)發(fā)環(huán)境外的其他工程工具,或結合其他高級程序設計語(yǔ)言來(lái)完成.

本文引用地址:http://dyxdggzs.com/article/201807/384168.htm

然而,上述研究中的激勵數據雖具有可的特點(diǎn),但注人這些數據的觸發(fā)方式卻缺乏可能力.例如龍芯2號的[41使用了可的隨機程序生成器 CPRG(Configurable Random Program Generator)來(lái)產(chǎn)生測試向量,從而大大提高了效率和測試覆蓋率.但由于僅使用了定時(shí)觸發(fā)的方式,該系統僅在仿真初始化階段進(jìn)行注人,類(lèi)似的案例還有.這種定時(shí)觸發(fā)的仿真方法與仿真過(guò)程缺少交互,因此與真實(shí)系統存在較大差別.特別是對于需要根據仿真過(guò)程中某個(gè)信號的狀態(tài)來(lái)注人故障或干擾信號,以檢測電路的容錯能力的案例,采用定時(shí)觸發(fā)方式往往難以達到所需的驗證效果.

采用事件觸發(fā)方式可以解決定時(shí)觸發(fā)的種種弊端.然而要實(shí)現觸發(fā)事件的可配置,必須先實(shí)現測試臺代碼的可配置一 個(gè)典型的例子是信號處理系統.Husmann等采用了Perl腳本編寫(xiě)的配置管理模塊來(lái)管理事先編寫(xiě)的測試臺和測試向量,并維護仿真結果記錄.配置管理的引人使得該系統具有一定的靈活性.但由于測試臺仍需事先編寫(xiě),不能稱(chēng)為完全的可配置系統.

本文提出一種針對十萬(wàn)門(mén)以上規模集成電路的可配置仿真測試方法,使用配置腳本作為輸入,通過(guò)CTG(Configurable Testbench Generator)自動(dòng)產(chǎn)生測試臺代碼,實(shí)現了觸發(fā)事件的完全可配置.本方法生成的測試系統中注人邏輯與數據文件分離,仍然可以通過(guò)Matlab等工程軟件生成測試向量.實(shí)驗表明該方法可避免重復編碼帶來(lái)的低效率和可靠性的降低,并節省保存仿真狀態(tài)所需的存儲空間.

1 可配置的系統

1.1 基干CTG的仿真驗證環(huán)境

基于可配置測試臺生成器 CTG的仿真驗證環(huán)境是實(shí)現可配置的事件觸發(fā)方式的前提,它包含信號庫、配置腳本、測試臺生成引擎、激勵數據庫和仿真驗證環(huán)境,如圖1所示.信號庫定義了待測系統的信號集合.配置腳本定義了激勵、觸發(fā)模式、事件與記錄點(diǎn),這些信息構成測試臺生成規則,實(shí)現了觸發(fā)事件的可配置.測試臺生成引擎是系統的核心,它根據配置腳本指定的規則自動(dòng)產(chǎn)生測試臺代碼,測試臺代碼中包含對被測電路的引用.激勵數據庫包含所需注人的數據以及其所對應的相對于觸發(fā)點(diǎn)的注人時(shí)間,激勵數據仍然可以按照上述的方法產(chǎn)生,對此本文不作深人討論.

1.2 數據結構

用于描述可配置測試臺產(chǎn)生規則的信息存儲在信號庫和配置腳本中,這些信息的邏輯結構如下.信號庫定義了信號集合,對于給定的被測電路C,信號庫中的信息固定不變.有如下定義:

定義 1 信號集合

定義2 激勵(Stimulation)

定義3 觸發(fā)模式(Trigger)

定義 4 時(shí)間觸發(fā)事件

定義5 跳變觸發(fā)事件

定義6 記錄點(diǎn)

1.3 測試臺生成

1.3.1 測試臺結構

由CTG生成的測試臺具有如下結構,如圖 2所示

對于待注人信號sig_i,或待存儲信號集合U_i,其觸發(fā)條件具有如下形式:

對于待注人信號sig_i,其注人任務(wù)具有如下形式:

對于待存儲信號集合U_i, 其存儲任務(wù)具有如下基本形式:

為了便于分析所存儲的數據,實(shí)際保存數據時(shí)往往加人一些附加信息,如當前時(shí)間、信號編號等.具體格式取決于所使用的離線(xiàn)分析工具,本文對此不進(jìn)行具體討論.

1.3.2 注入事件解析

由于不能在多個(gè)always塊中對同一信號賦值,因此必須遍歷激勵集合,并按照待注人信號提取觸發(fā)條件加人同一always塊中.激勵信號注人事件的解析圍繞激勵集合S展開(kāi),算法如下:

在復位狀態(tài),各激勵s未激活,此時(shí)s.i被驅動(dòng)為指定的缺省值s.v,加人初始化任務(wù).CTG對于S中給定的每個(gè)s=(i,v,c,P,Ts),生成如下集合:

對于T1中的各觸發(fā)模式t1,CTG生成 t1.e對 應的計數器,將計數器的超時(shí)信號加人s.t觸發(fā)條件的if語(yǔ)句中,并在if程序體中按照t1.d的設定生成對應的注人任務(wù).

對于T2中的各觸發(fā)模式t2,CTG生成t2.e.u與t2.e.j比較的表達式,加人s.i觸發(fā)條件的if語(yǔ)句中.對于t2.e.m不為循環(huán)觸發(fā)方式時(shí)還需生成對應的計數器,同時(shí)將計數器未滿(mǎn)條件加人if語(yǔ)句.最后在if程序體中按照t2.d的設定生成對應的注人任務(wù).

1.3.3 存儲事件解析

系統仿真狀態(tài)的保存同樣受事件觸發(fā),但并不要求在同一塊語(yǔ)句中進(jìn)行存儲,因此其結構相對簡(jiǎn)單.算法如下:

CTG對于R中給定的每個(gè)r=(Er,w,U1)生成如下集合:

對于E1中的各事件e1,CTG生成對應的計數器,將這些計數器的超時(shí)信號組成邏輯與表達式。

對于E2中的各事件e2,CTG生成e.u與e.j比較的表達式,并與超時(shí)信號與表達式一起組成邏輯與表達式.該表達式加人r.Ur觸發(fā)條件的if語(yǔ)句中,并在if程序體中生成對應的存儲任務(wù).

2 實(shí)驗驗證及分析

2.1 測試對象與實(shí)驗環(huán)境

可配置仿真測試框架被用于自主研發(fā)的1553B總線(xiàn)協(xié)議IP核、基于類(lèi)EIA架構的雙核SIP處理器模型、可重構的ATPA處理器模型等仿真測試中.以1553B總線(xiàn)協(xié)議IP核為例:該IP核采用VerilogHDL編寫(xiě),由45個(gè)模塊組成.這些模塊經(jīng)過(guò)編譯生成時(shí)序仿真庫,并被包含在仿真測試臺的頂層模塊中.需注人的激勵信號包括:來(lái)自外部處理器的讀、寫(xiě)、片選信號、數據總線(xiàn)、地址總線(xiàn)、DMA響應信號、以及 1553B總線(xiàn)數據.

需要保存的狀態(tài)信號包括:存儲器數據、1553B總線(xiàn)數據、關(guān)鍵寄存器數據(狀態(tài)字、命令塊指針、當前命令字)、以及系統主狀態(tài)機的狀態(tài)變化數據經(jīng)過(guò)映射,該 IP核在 Altera的 Cyclone EPIC12器件中占用2882個(gè)邏輯單元,主時(shí)鐘頻率為12MHz.

仿真試驗在使用IntelPentium42.6GHz處理器、512Mbyte內存的PC機上進(jìn)行,使用Quartus115.0軟件進(jìn)行綜合與映射,使用 ActiveHDL.6.2軟件進(jìn)行仿真.

2.2 實(shí)驗結果分析

在IP核的每種典型配置下,BC模式和RT模式除了正常傳輸外,分別需要83套和60套故障激勵注人邏輯.在這145套激勵邏輯下分別注人1024組數據進(jìn)行了實(shí)驗.實(shí)驗系統中測試臺生成引擎采用 C++語(yǔ)言編寫(xiě),代碼量約700行.僅需通過(guò)修改配置腳本便可使用CTG生成上述測試臺.其中配置腳本規模在50~70行,所生成的測試臺代碼約為250~350行.所需編寫(xiě)的代碼量對比如圖 3所示.

從圖3可以看出,隨著(zhù)仿真次數的增加,使用基于CTG的仿真驗證系統所需編寫(xiě)的代碼量遠小于不可配置的仿真驗證系統.

使用基于CTG的事件觸發(fā)進(jìn)行仿真狀態(tài)存儲可節省存儲空間.以實(shí)驗系統在BC模式下完成1024組正常數據傳輸為例,保存三種典型信號的仿真狀態(tài)所需的存儲空間對比如表 1所示(不包含存儲時(shí)戳所需的空間.)

表1中的數據表明,對于不需要頻繁存儲的仿真信號,采用事件觸發(fā)機制可大大減少存儲空間的開(kāi)銷(xiāo).值得注意的是,動(dòng)態(tài)產(chǎn)生測試臺后需要重新編譯仿真庫,從而產(chǎn)生了額外的時(shí)間開(kāi)銷(xiāo) 在2.1節介紹的實(shí)驗環(huán)境中,仿真庫的編譯用時(shí)小于1s,仿真初始化需17s,每仿真100組數據約用時(shí)700 900由此可知仿真過(guò)程累計用時(shí)約289.2~369.8h,其中編譯仿真庫的開(kāi)銷(xiāo)小于145s,可忽略不計.

3 結論

本文提出的可配置仿真驗證方法適用而不僅限于十萬(wàn)門(mén)以上的超大規模 EDA設計,相對于已有研究具有下列特點(diǎn):

(1)基于事件的觸發(fā)機制,更接近真實(shí)系統

(2)可配置,自動(dòng)產(chǎn)生測試臺代碼,減少編碼量提高可靠性

(3)節省保存仿真狀態(tài)所需的存儲空間同時(shí),由于具有可配置能力,一旦完成測試臺生成引擎僅需修改信號庫和配置腳本就能用于不同電路設計的仿真驗證.



關(guān)鍵詞: 仿真驗證 EDA 配置

評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>