<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è) > 嵌入式系統 > 設計應用 > 基于VMM方法學(xué)的系統級軟硬件協(xié)同仿真驗證

基于VMM方法學(xué)的系統級軟硬件協(xié)同仿真驗證

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

為適應日益復雜的系統芯片SoC(System on Chip)設計,新一代芯片設計和驗證語(yǔ)言SystemVerilog應運而生,并在2005年11月被美國電氣和電子工程師協(xié)會(huì )(IEEE)批準為新標準[1]。在此基礎上,Synopsys公司和ARM公司聯(lián)合推出了VMM驗證方法學(xué)[2,3]。運用提出的規則和標準函數庫,可以快速搭建功能強大的驗證平臺。通過(guò)受約束的隨機激勵,并以為指導,可以快速完成系統功能驗證,顯著(zhù)提高驗證效率。

文章以實(shí)際工程項目為背景,構建了一種符合標準的系統級軟硬件協(xié)同驗證平臺。同時(shí)通過(guò)對實(shí)驗數據的分析,提出了用于優(yōu)化隨機激勵約束的方法。

1 系統級驗證平臺

一般仿真驗證SoC的策略可分為3個(gè)步驟:模塊驗證、集成驗證和系統驗證[2,4]。其中系統驗證平臺中包含處理器CPU或DSP[2],并且采用軟硬件協(xié)同驗證方法。因此系統級軟硬件驗證比其他形式的驗證更貼近真實(shí)環(huán)境,在仿真中可以觀(guān)察到軟硬件運行的所有情況,這樣可以快速有效地定位問(wèn)題并進(jìn)行系統性能綜合分析。但是系統級驗證也存在驗證平臺搭建周期長(cháng)、編譯仿真時(shí)間長(cháng)和資源消耗大的問(wèn)題。針對這些問(wèn)題可以采用推薦的方法和標準函數庫,并采用成熟的VIP(Verification Intellectual Property),快速搭建驗證平臺。同時(shí)通過(guò)一次編譯多次仿真的驗證方式,以提高驗證效率,縮短驗證周期。

圖1所示是一種符合VMM標準的系統級驗證平臺。在這里,硬件指RTL(Register Transfer Lever)設計,包括ARM核處理器模型。軟件指用匯編語(yǔ)言和C語(yǔ)言編寫(xiě)的程序,通過(guò)編譯加載到仿真環(huán)境中由ARM核處理器模型執行[5]。驗證平臺由SystemVerilog語(yǔ)言實(shí)現,在RTL級仿真驗證。

1.1 驗證平臺的架構

圖1所示的驗證平臺符合可重用性[2,6],即不同的DUT(Design Under Test)模塊可以共用同一個(gè)驗證平臺。驗證平臺結構被模塊化和層次化。每個(gè)模塊的功能和層與層之間的接口被明確定義,這使得驗證平臺十分靈活。

1.1.1 測試層

測試層主要是編寫(xiě)各種測試案例(Testcase),包括修改生成器的約束,定義新的隨機場(chǎng)景,同步不同事物處理器和創(chuàng )建定向激勵[2]。通常,在仿真的進(jìn)行中要不斷查看搜集的,并以此來(lái)修改隨機激勵的約束條件,或者針對難以覆蓋的邊角情況編寫(xiě)定向激勵。適當的約束條件可提高收斂速度。

1.1.2 場(chǎng)景層

場(chǎng)景層由生成器(Generator)產(chǎn)生可控且同步的事務(wù)。生成器根據測試層提供的靜態(tài)變量和約束條件,隨機生成不同的配置信息和數據。配置信息通過(guò)功能層的事務(wù)處理器傳遞給命令層的軟件程序,用于配置DUT。同時(shí)配置信息還要傳到VIP事務(wù)處理器用于配置VIP模塊。

1.1.3 功能層

功能層將場(chǎng)景層隨機生成的配置信息和數據通過(guò)事先約定的通道傳遞給命令層的軟件程序,另外檢測VIP事務(wù)處理器傳回的數據,送給計分板(Scoreboard),實(shí)現驗證平臺的自動(dòng)檢查功能。

1.1.4 命令層

命令層包括控制ARM核運行的軟件程序(ARM Core Software,圖1中帶紋理方框),需要接收功能層通過(guò)通道(Channel)傳遞過(guò)來(lái)的配置信息和數據,同時(shí)還要配置和驅動(dòng)DUT完成數據傳輸。VIP事務(wù)處理器(VIP Transfer)是用于驗證DUT的成熟驗證IP模塊。VIP監視器(VIP Monitor)屬于VIP模塊,用于監視DUT與外部通信的接口信號。命令層還包含一個(gè)或多個(gè)AMBA總線(xiàn)監視器,屬于成熟的VIP模塊,用于監視多層AMBA總線(xiàn)(Multi-layer AMBA Bus)[7]。

1.1.5 信號層

在信號層,例化了所有SoC模塊,實(shí)現系統級的功能驗證。除AMBA總線(xiàn)外,主要還包括ARM核、片上RAM、中斷控制模塊、DMA控制模塊以及其他模塊。

1.1.6 功能覆蓋率

功能覆蓋率可以從驗證平臺的其他模塊中收集,一般沒(méi)有特定的限定。

1.2 驗證平臺中軟硬件通信方式

上面所介紹的驗證平臺與其他驗證平臺最大的區別就是引入了軟件程序,構建該驗證平臺的關(guān)鍵是軟件與硬件之間的通信。一般軟件是用匯編和C語(yǔ)言編寫(xiě)的,硬件與驗證平臺分別是用可綜合Verilog語(yǔ)言和SystemVerilog語(yǔ)言編寫(xiě)的。在這里規定用軟件程序與SV(SystemVerilog)之間的通信表示軟件程序與硬件之間的通信,本文介紹以下三種軟硬件通信方式。

(1)軟件向總線(xiàn)未用地址寫(xiě)數據實(shí)現軟件程序向SV的單向通信;
(2)通過(guò)SoC上的具有通信功能的模塊,實(shí)現軟件程序與SV之間的通信;
(3)通過(guò)片內RAM,實(shí)現軟件程序與SV間的雙向通信。

在實(shí)際使用過(guò)程中,通過(guò)第一種方法輸出軟件程序運行過(guò)程中的信息,通過(guò)第三種方法可以作為軟硬件間信息通信的雙向通道。圖1所示的軟硬件協(xié)同仿真驗證平臺就是通過(guò)第三種方式實(shí)現軟硬件雙向通信的,同時(shí)也用到了第一種方式,輸出軟件運行過(guò)程中的信息。第二種方式可以視情況使用。

本文引用地址:http://dyxdggzs.com/article/201706/349161.htm

圖2所示是一種系統級軟硬件協(xié)同仿真驗證平臺的結構,虛線(xiàn)中為SoC的系統架構。為滿(mǎn)足驗證需求,在SoC系統架構中增添了兩個(gè)模塊:一個(gè)是Print Tube(PT)模塊,用來(lái)實(shí)現軟件仿真時(shí)的信息輸出。當軟件需要輸出信息時(shí),向PT模塊寫(xiě)數據,PT模塊會(huì )調用$display系統函數,顯示傳輸過(guò)來(lái)的信息。另一個(gè)是RAM(Random Access Memory)模塊,作為軟件和SV的信息交互的通道。RAM模塊有兩個(gè)總線(xiàn)接口,一個(gè)鏈接到SoC系統總線(xiàn)上,軟件可通過(guò)其讀寫(xiě)RAM模塊;另一個(gè)接口與驗證平臺中的BFM(Bus Function Model)模塊鏈接,如AHB VIP Master[8]。同時(shí)在驗證平臺中使用RAL(Register Abstraction Layer)[9]方法,將RAM模塊抽象為RAL模型。這樣處理后驗證平臺對RAM模塊的訪(fǎng)問(wèn)更簡(jiǎn)潔方便。

為驗證SoC系統上某個(gè)模塊的功能,需要編寫(xiě)兩套激勵:C語(yǔ)言編寫(xiě)的軟件程序和SV語(yǔ)言編寫(xiě)的激勵。在仿真時(shí),兩套激勵需要同步??梢酝ㄟ^(guò)監測RAM模塊中某個(gè)寄存器的變化實(shí)現同步。

在搭建圖1所示的系統級軟硬件協(xié)同仿真驗證平臺時(shí),由于大量使用了VIP,同時(shí)開(kāi)發(fā)了可重用的PT模塊和SRAM模塊,這使得驗證平臺的搭建工作可以在一周內完成,迅速提高了驗證效率。

2 受約束的隨機激勵與功能覆蓋率組

搭建好基于VMM標準的驗證平臺后,要發(fā)揮平臺的作用,關(guān)鍵是要設計好受約束的隨機激勵。

一種分類(lèi)樹(shù)(Classification Trees)[10]的方法可以有效地將待測模塊(DUT)的各種功能配置情況轉換成System-
Verilog[1-3,11]的約束語(yǔ)句。但是一般在編寫(xiě)受約束隨機激勵前,需要通過(guò)一些定向激勵確定驗證平臺工作正常,以及配置參數有效取值。

如下程序是驗證項目中為驗證SPI模塊DMA傳輸方式編寫(xiě)的約束條件。在經(jīng)過(guò)試驗性的定向測試和分類(lèi)樹(shù)處理后,形成SystemVerilog的約束語(yǔ)句。

程序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());
}

在編寫(xiě)完隨機約束條件的同時(shí)還要編寫(xiě)相應的覆蓋率組(covergroup)[1-3,8],用于自動(dòng)收集仿真過(guò)程中功能覆蓋情況,指導仿真。如下程序是針對SPI模塊DMA傳輸方式編寫(xiě)的功能覆蓋率組。
程序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 驗證過(guò)程與驗證結果

3.1 驗證過(guò)程

仿真所采用的軟件為Synopsys公司的VCS-MX-C2009.06。它自帶有VMM標準庫函數,支持一次編譯多次仿真。由于如圖1所示的軟硬件協(xié)同仿真驗證平臺的通用性,可以將所有測試案例一次編譯后,分別仿真。不同的測試案例代碼寫(xiě)到VMM的宏′vmm_test_begin()與′vmm_test_end()之間,并在驗證平臺的程序(program)中通過(guò)類(lèi)(class)vmm_test_registry的方法run()來(lái)調用。仿真過(guò)程如圖3所示。

3.2 驗證結果

圖4是由上面程序2所定義的覆蓋率組收集的覆蓋率數據。每次仿真中,隨機產(chǎn)生10次隨機場(chǎng)景。這樣做可以減少重復運行仿真的次數,提高仿真速度。

從仿真結果看到:(1)覆蓋率在仿真初始階段增長(cháng)很快,隨后逐漸趨緩;(2)劃分測試空間后的連續仿真,與未劃分測試空間的連續仿真最終仿真時(shí)間相同;(3)劃分測試空間后的并行仿真,覆蓋率收斂速度最快,可以使覆蓋率收斂速度提高近3倍。

另外由結果(1)可知,在仿真過(guò)程中,通過(guò)負反饋機制修改隨機變量的約束條件,排除已測試過(guò)的測試案例,可以使每次仿真的覆蓋率保持很高的增長(cháng)速度[12]。但修改約束條件后需要重新編譯。

針對實(shí)際項目需要,文章介紹了一種符合VMM標準的系統級軟硬件協(xié)同仿真驗證平臺,討論了驗證平臺中軟硬之間的通信方式。給出了在此平臺上所做的一個(gè)模塊的具體驗證,包括隨機激勵的約束和相應的覆蓋率組。最后對仿真結果做了對比分析。結果表明,與基于SystemC語(yǔ)言搭建的驗證平臺[13]相比,基于VMM標準并使用SystemVerilog語(yǔ)言,可以提高驗證平臺的搭建效率和可重用性。通過(guò)對測試空間的劃分和仿真過(guò)程的控制,有效提高仿真效率。



評論


相關(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>