摘 要: 針對一款高性能復(fù)雜SoC芯片的設(shè)計(jì),,提出了一種新的軟硬件協(xié)同仿真驗(yàn)證方案,。通過比較仿真環(huán)境中軟硬件間通信的各種實(shí)現(xiàn)方式,構(gòu)建了一種新的符合VMM標(biāo)準(zhǔn)的驗(yàn)證平臺。同時為加快覆蓋率的收斂速度,,給出了隨機(jī)激勵約束的優(yōu)化方法,。實(shí)踐表明,,新的約束和仿真方式使覆蓋率收斂速度提高數(shù)倍,,驗(yàn)證效率顯著提高。
關(guān)鍵詞: VMM方法學(xué),;軟硬件協(xié)同驗(yàn)證,;驗(yàn)證平臺;覆蓋率,;SoC
為適應(yīng)日益復(fù)雜的系統(tǒng)芯片SoC(System on Chip)設(shè)計(jì),,新一代芯片設(shè)計(jì)和驗(yàn)證語言SystemVerilog應(yīng)運(yùn)而生,并在2005年11月被美國電氣和電子工程師協(xié)會(IEEE)批準(zhǔn)為新標(biāo)準(zhǔn)[1],。在此基礎(chǔ)上,,Synopsys公司和ARM公司聯(lián)合推出了VMM驗(yàn)證方法學(xué)[2,3],。運(yùn)用VMM方法學(xué)提出的規(guī)則和標(biāo)準(zhǔn)函數(shù)庫,,可以快速搭建功能強(qiáng)大的驗(yàn)證平臺。通過受約束的隨機(jī)激勵,,并以覆蓋率為指導(dǎo),,可以快速完成系統(tǒng)功能驗(yàn)證,顯著提高驗(yàn)證效率,。
文章以實(shí)際工程項(xiàng)目為背景,,構(gòu)建了一種符合VMM方法學(xué)標(biāo)準(zhǔn)的系統(tǒng)級軟硬件協(xié)同驗(yàn)證平臺。同時通過對實(shí)驗(yàn)數(shù)據(jù)的分析,,提出了用于優(yōu)化隨機(jī)激勵約束的方法,。
1 系統(tǒng)級軟硬件協(xié)同仿真驗(yàn)證平臺
一般仿真驗(yàn)證SoC的策略可分為3個步驟:模塊驗(yàn)證、集成驗(yàn)證和系統(tǒng)驗(yàn)證[2,4],。其中系統(tǒng)驗(yàn)證平臺中包含處理器CPU或DSP[2],,并且采用軟硬件協(xié)同驗(yàn)證方法。因此系統(tǒng)級軟硬件驗(yàn)證比其他形式的驗(yàn)證更貼近真實(shí)環(huán)境,,在仿真中可以觀察到軟硬件運(yùn)行的所有情況,,這樣可以快速有效地定位問題并進(jìn)行系統(tǒng)性能綜合分析。但是系統(tǒng)級軟硬件協(xié)同仿真驗(yàn)證也存在驗(yàn)證平臺搭建周期長,、編譯仿真時間長和資源消耗大的問題,。針對這些問題可以采用VMM方法學(xué)推薦的方法和標(biāo)準(zhǔn)函數(shù)庫,并采用成熟的VIP(Verification Intellectual Property),,快速搭建驗(yàn)證平臺。同時通過一次編譯多次仿真的驗(yàn)證方式,,以提高驗(yàn)證效率,,縮短驗(yàn)證周期。
圖1所示是一種符合VMM標(biāo)準(zhǔn)的系統(tǒng)級軟硬件協(xié)同仿真驗(yàn)證平臺,。在這里,,硬件指RTL(Register Transfer Lever)設(shè)計(jì),包括ARM核處理器模型,。軟件指用匯編語言和C語言編寫的程序,,通過編譯加載到仿真環(huán)境中由ARM核處理器模型執(zhí)行[5]。驗(yàn)證平臺由SystemVerilog語言實(shí)現(xiàn),,在RTL級仿真驗(yàn)證,。
1.1 驗(yàn)證平臺的架構(gòu)
圖1所示的驗(yàn)證平臺符合可重用性[2,6],,即不同的DUT(Design Under Test)模塊可以共用同一個驗(yàn)證平臺,。驗(yàn)證平臺結(jié)構(gòu)被模塊化和層次化。每個模塊的功能和層與層之間的接口被明確定義,,這使得驗(yàn)證平臺十分靈活,。
1.1.1 測試層
測試層主要是編寫各種測試案例(Testcase),包括修改生成器的約束,,定義新的隨機(jī)場景,,同步不同事物處理器和創(chuàng)建定向激勵[2]。通常,,在仿真的進(jìn)行中要不斷查看搜集的覆蓋率,,并以此來修改隨機(jī)激勵的約束條件,或者針對難以覆蓋的邊角情況編寫定向激勵,。適當(dāng)?shù)募s束條件可提高覆蓋率收斂速度,。
1.1.2 場景層
場景層由生成器(Generator)產(chǎn)生可控且同步的事務(wù)。生成器根據(jù)測試層提供的靜態(tài)變量和約束條件,,隨機(jī)生成不同的配置信息和數(shù)據(jù),。配置信息通過功能層的事務(wù)處理器傳遞給命令層的軟件程序,,用于配置DUT。同時配置信息還要傳到VIP事務(wù)處理器用于配置VIP模塊,。
1.1.3 功能層
功能層將場景層隨機(jī)生成的配置信息和數(shù)據(jù)通過事先約定的通道傳遞給命令層的軟件程序,,另外檢測VIP事務(wù)處理器傳回的數(shù)據(jù),送給計(jì)分板(Scoreboard),,實(shí)現(xiàn)驗(yàn)證平臺的自動檢查功能,。
1.1.4 命令層
命令層包括控制ARM核運(yùn)行的軟件程序(ARM Core Software,圖1中帶紋理方框),,需要接收功能層通過通道(Channel)傳遞過來的配置信息和數(shù)據(jù),,同時還要配置和驅(qū)動DUT完成數(shù)據(jù)傳輸。VIP事務(wù)處理器(VIP Transfer)是用于驗(yàn)證DUT的成熟驗(yàn)證IP模塊,。VIP監(jiān)視器(VIP Monitor)屬于VIP模塊,,用于監(jiān)視DUT與外部通信的接口信號。命令層還包含一個或多個AMBA總線監(jiān)視器,,屬于成熟的VIP模塊,,用于監(jiān)視多層AMBA總線(Multi-layer AMBA Bus)[7]。
1.1.5 信號層
在信號層,,例化了所有SoC模塊,,實(shí)現(xiàn)系統(tǒng)級的功能驗(yàn)證。除AMBA總線外,,主要還包括ARM核,、片上RAM、中斷控制模塊,、DMA控制模塊以及其他模塊,。
1.1.6 功能覆蓋率
功能覆蓋率可以從驗(yàn)證平臺的其他模塊中收集,一般沒有特定的限定,。
1.2 驗(yàn)證平臺中軟硬件通信方式
上面所介紹的驗(yàn)證平臺與其他驗(yàn)證平臺最大的區(qū)別就是引入了軟件程序,,構(gòu)建該驗(yàn)證平臺的關(guān)鍵是軟件與硬件之間的通信。一般軟件是用匯編和C語言編寫的,,硬件與驗(yàn)證平臺分別是用可綜合Verilog語言和SystemVerilog語言編寫的,。在這里規(guī)定用軟件程序與SV(SystemVerilog)之間的通信表示軟件程序與硬件之間的通信,本文介紹以下三種軟硬件通信方式,。
(1)軟件向總線未用地址寫數(shù)據(jù)實(shí)現(xiàn)軟件程序向SV的單向通信,;
(2)通過SoC上的具有通信功能的模塊,實(shí)現(xiàn)軟件程序與SV之間的通信,;
(3)通過片內(nèi)RAM,,實(shí)現(xiàn)軟件程序與SV間的雙向通信。
在實(shí)際使用過程中,通過第一種方法輸出軟件程序運(yùn)行過程中的信息,,通過第三種方法可以作為軟硬件間信息通信的雙向通道,。圖1所示的軟硬件協(xié)同仿真驗(yàn)證平臺就是通過第三種方式實(shí)現(xiàn)軟硬件雙向通信的,同時也用到了第一種方式,,輸出軟件運(yùn)行過程中的信息,。第二種方式可以視情況使用。
圖2所示是一種系統(tǒng)級軟硬件協(xié)同仿真驗(yàn)證平臺的結(jié)構(gòu),,虛線中為SoC的系統(tǒng)架構(gòu),。為滿足驗(yàn)證需求,在SoC系統(tǒng)架構(gòu)中增添了兩個模塊:一個是Print Tube(PT)模塊,,用來實(shí)現(xiàn)軟件仿真時的信息輸出,。當(dāng)軟件需要輸出信息時,向PT模塊寫數(shù)據(jù),,PT模塊會調(diào)用$display系統(tǒng)函數(shù),,顯示傳輸過來的信息。另一個是RAM(Random Access Memory)模塊,,作為軟件和SV的信息交互的通道。RAM模塊有兩個總線接口,,一個鏈接到SoC系統(tǒng)總線上,,軟件可通過其讀寫RAM模塊;另一個接口與驗(yàn)證平臺中的BFM(Bus Function Model)模塊鏈接,,如AHB VIP Master[8],。同時在驗(yàn)證平臺中使用RAL(Register Abstraction Layer)[9]方法,將RAM模塊抽象為RAL模型,。這樣處理后驗(yàn)證平臺對RAM模塊的訪問更簡潔方便,。
為驗(yàn)證SoC系統(tǒng)上某個模塊的功能,需要編寫兩套激勵:C語言編寫的軟件程序和SV語言編寫的激勵,。在仿真時,,兩套激勵需要同步??梢酝ㄟ^監(jiān)測RAM模塊中某個寄存器的變化實(shí)現(xiàn)同步,。
在搭建圖1所示的系統(tǒng)級軟硬件協(xié)同仿真驗(yàn)證平臺時,由于大量使用了VIP,,同時開發(fā)了可重用的PT模塊和SRAM模塊,,這使得驗(yàn)證平臺的搭建工作可以在一周內(nèi)完成,迅速提高了驗(yàn)證效率,。
2 受約束的隨機(jī)激勵與功能覆蓋率組
搭建好基于VMM標(biāo)準(zhǔn)的驗(yàn)證平臺后,,要發(fā)揮平臺的作用,關(guān)鍵是要設(shè)計(jì)好受約束的隨機(jī)激勵。
一種分類樹(Classification Trees)[10]的方法可以有效地將待測模塊(DUT)的各種功能配置情況轉(zhuǎn)換成System-
Verilog[1-3,,11]的約束語句,。但是一般在編寫受約束隨機(jī)激勵前,需要通過一些定向激勵確定驗(yàn)證平臺工作正常,,以及配置參數(shù)有效取值,。
如下程序是驗(yàn)證項(xiàng)目中為驗(yàn)證SPI模塊DMA傳輸方式編寫的約束條件。在經(jīng)過試驗(yàn)性的定向測試和分類樹處理后,,形成SystemVerilog的約束語句,。
程序1:
constraint c_ssi_dma {
ch dist { SSI1 := 1, SSI2 := 0, SSI3 := 0 };
ctrlr0_spc dist { 0 := 1, 1 := 0, 2 := 0, 3 := 1 };
( burst_size == 0 ) -> (dmatdlr inside {[0:20]})
&&(dmardlr == 0)&&(datas.size() inside{[79:80]});
( burst_size == 1 ) -> (dmatdlr inside {[0:17]})
&&(dmardlr == 3)&&(datas.size() inside{[77:80]});
( burst_size == 2 ) -> (dmatdlr inside {[0:13]})
&&(dmardlr == 7)&&(datas.size() inside{[73:80]});
( burst_size == 3 ) -> (dmatdlr inside {[0:5]})
&&(dmardlr == 15)&&(datas.size() inside{[65:80]});
……
……
datas.size() <= 80;
for_block_ts == (80-datas.size());
}
在編寫完隨機(jī)約束條件的同時還要編寫相應(yīng)的覆蓋率組(covergroup)[1-3,8],,用于自動收集仿真過程中功能覆蓋情況,,指導(dǎo)仿真。如下程序是針對SPI模塊DMA傳輸方式編寫的功能覆蓋率組,。
程序2:
covergroup covport_ssi_dma;
coverpoint ch {bins CH[]={[1:3]};}
ctrlr0_spc_c:coverpoint ctrlr0_spc {
bins spc_00={0};
bins spc_11={3};}
coverpoint burst_size {
bins burst_size_1={0};
bins burst_size_4={1};
bins burst_size_8={2};
bins burst_size_16={3};}
dmatdlr_c:coverpoint dmatdlr {
……
……
}
……
……
cross ch, ctrlr0_spc_c, burst_size, dmatdlr_c, dmardlr_c,
for_block_ts, ctrlr0_dfl_c {
ignore_bins
burst_t1=binsof(burst_size)intersect{0}&&
binsof(dmatdlr_c)intersect{[21:$]};
ignore_bins
burst_t4=binsof(burst_size)intersect{1}&&
binsof(dmatdlr_c)intersect{[17:$]};
……
}
endgroup
3 驗(yàn)證過程與驗(yàn)證結(jié)果
3.1 驗(yàn)證過程
仿真所采用的軟件為Synopsys公司的VCS-MX-C2009.06,。它自帶有VMM標(biāo)準(zhǔn)庫函數(shù),支持一次編譯多次仿真,。由于如圖1所示的軟硬件協(xié)同仿真驗(yàn)證平臺的通用性,,可以將所有測試案例一次編譯后,分別仿真,。不同的測試案例代碼寫到VMM的宏′vmm_test_begin()與′vmm_test_end()之間,,并在驗(yàn)證平臺的程序(program)中通過類(class)vmm_test_registry的方法run()來調(diào)用。仿真過程如圖3所示,。
3.2 驗(yàn)證結(jié)果
圖4是由上面程序2所定義的覆蓋率組收集的覆蓋率數(shù)據(jù),。每次仿真中,隨機(jī)產(chǎn)生10次隨機(jī)場景,。這樣做可以減少重復(fù)運(yùn)行仿真的次數(shù),,提高仿真速度。
從仿真結(jié)果看到:(1)覆蓋率在仿真初始階段增長很快,,隨后逐漸趨緩,;(2)劃分測試空間后的連續(xù)仿真,與未劃分測試空間的連續(xù)仿真最終仿真時間相同,;(3)劃分測試空間后的并行仿真,,覆蓋率收斂速度最快,可以使覆蓋率收斂速度提高近3倍,。
另外由結(jié)果(1)可知,,在仿真過程中,通過負(fù)反饋機(jī)制修改隨機(jī)變量的約束條件,,排除已測試過的測試案例,,可以使每次仿真的覆蓋率保持很高的增長速度[12],。但修改約束條件后需要重新編譯。
針對實(shí)際項(xiàng)目需要,,文章介紹了一種符合VMM標(biāo)準(zhǔn)的系統(tǒng)級軟硬件協(xié)同仿真驗(yàn)證平臺,,討論了驗(yàn)證平臺中軟硬之間的通信方式。給出了在此平臺上所做的一個模塊的具體驗(yàn)證,,包括隨機(jī)激勵的約束和相應(yīng)的覆蓋率組,。最后對仿真結(jié)果做了對比分析。結(jié)果表明,,與基于SystemC語言搭建的驗(yàn)證平臺[13]相比,,基于VMM標(biāo)準(zhǔn)并使用SystemVerilog語言,可以提高驗(yàn)證平臺的搭建效率和可重用性,。通過對測試空間的劃分和仿真過程的控制,,有效提高仿真效率。
參考文獻(xiàn)
[1] IEEE standard for SystemVerilog-unified hardware design, specification, and verification language-IEEE computer society[S].IEEE Std 1800TM-2007.
[2] BERGERON J,,CERNY E,,HUNTER A,et a1.SystemVerilog methodology manual for SystemVerilog[M].Spinger,,2005.
[3] CHRIS S.Svstemverilog for verificiaton[M].Spinger,,2006.
[4] 程剛,蔡敏.基于SystemVerilog的SoC功能驗(yàn)證方法研究[J].科學(xué)技術(shù)與工程, 2009,9(22):6814-6818.
[5] 申敏,,曹聰玲.基于SoC設(shè)計(jì)的軟硬件協(xié)同驗(yàn)證技術(shù)研究[J].電子測試, 2009,,17(3):9-12.
[6] Synopsys Inc.Introduction to design verification with VMM: A quickstart guide.Version 1.0[S].2007, 2008.
[7] ARM Limited. AMBATM Specification(Rev 2.0)[M].May 1999.
[8] Han Kedeng,Zhong Liangshu.Verification of AMBA bus model using system verilog[C].Proceedings of 2007 8th International Conference on Electronic Measurement & Instruments,2007,1, Xian,China.
[9] BERGERON J, CERNY E, HUNTER A, et a1.Register abstraction layer[M].Spinger,,2005.
[10] ALEXANDER K, WOLFGANG M.Classification trees for random tests and functional coverage[J].Design, Automation and Test in Europe, 2006,1:1-2.
[11] SystemVerilog 3.1a language reference manual.Accellera’s Extensions to Verilog?誖.2004.
[12] 黃思遠(yuǎn),邵智勇,,于承興,,等.VMM中功能覆蓋率收斂技術(shù)[J].集成電路設(shè)計(jì), 2010,33(4):16-17,31.
[13] 魯芳,,柏娜.基于SystemC和Verilog軟硬件協(xié)同驗(yàn)證[J]. 現(xiàn)代電子技術(shù), 2008,,31(4):1-3.