VMM驗(yàn)證方法在AXI總線系統(tǒng)中的實(shí)現(xiàn)
出處:維庫(kù)電子市場(chǎng)網(wǎng) 發(fā)布于:2023-07-21 10:37:33
芯片驗(yàn)證(Verification)越來(lái)越像是軟件而不是硬件工作。這點(diǎn)已逐漸成為業(yè)界的共識(shí)。
本文以軟件工程的視角切入,分析中科院計(jì)算所某片上系統(tǒng)(SoC)項(xiàng)目的驗(yàn)證平臺(tái),同時(shí)也介紹當(dāng)前較為流行的驗(yàn)證方法,即以專(zhuān)門(mén)的驗(yàn)汪語(yǔ)言結(jié)合商用的驗(yàn)證模型,快速建立測(cè)試平臺(tái)(Test-bench)并在今后的項(xiàng)目中重用(reuse)之。
文中提及的驗(yàn)證語(yǔ)言、方法學(xué)、驗(yàn)證基本庫(kù)和仿真模型,這一套方法在近幾年中,正逐漸為業(yè)界廣為采用。計(jì)算所的工作,就是以這些成果為起點(diǎn),對(duì)基于AXI總線協(xié)議的SoC,建立測(cè)試平臺(tái)。
這種新方法可大幅度提高芯片驗(yàn)證的效率,尤其使項(xiàng)目初期的投入極大地降低。原因之一是,面向?qū)ο缶幊痰溶浖こ谭椒ǖ拇罅恳搿.?dāng)然,這也對(duì)驗(yàn)證工程師的技能提出了新的要求。
2.驗(yàn)證方法
在驗(yàn)證領(lǐng)域,顯見(jiàn)的趨勢(shì)是語(yǔ)言劃一、仿真平臺(tái)統(tǒng)一、更加正規(guī)和高效。以本文介紹的項(xiàng)目為例,語(yǔ)言是SystemVerilog,平臺(tái)則基于VMM構(gòu)建,更有Verification IP助力,大幅提升了效率。正是因?yàn)椴考芍赜?、半臺(tái)結(jié)構(gòu)化、以覆蓋率驅(qū)動(dòng)和高度自動(dòng)化等特點(diǎn),驗(yàn)證工作也愈加正規(guī),有流程可循。
專(zhuān)門(mén)的驗(yàn)證語(yǔ)言,面世已有數(shù)年之久。它們出自于傳統(tǒng)的純粹Verilog(有時(shí),部分引入C/C++)描述的驗(yàn)證系統(tǒng),并有很大發(fā)展:Vera、e語(yǔ)言和目前已成IEEE標(biāo)準(zhǔn)的SystemVerilog就足這段時(shí)期技術(shù)創(chuàng)新的成果。
面向?qū)ο缶幊?Object-Oriented Programming)特性,溯其源頭便是C++語(yǔ)言。早在純Verilog語(yǔ)言驗(yàn)證的時(shí)代,已有利用C++開(kāi)發(fā)可重用驗(yàn)證代碼的做法。工程師們看中的恰是OOP的封裝、繼承、多態(tài)、及可重用等優(yōu)異特性。
驗(yàn)證語(yǔ)言沒(méi)有相應(yīng)函數(shù)庫(kù)的支持,語(yǔ)言本身也很難發(fā)揮效力。舉一個(gè)大家熟知的例子,視窗(Windows)編程中,使用C語(yǔ)言直接調(diào)用視窗系統(tǒng)的編程接口(APT)實(shí)現(xiàn),是較為傳統(tǒng)的做法,可目前卻鮮有視窗程序員這樣應(yīng)用。為什么?工作量巨大,需維護(hù)的信息太多,從窗口尺寸,菜單列表,到程序算法,都要加以考慮。因而作為解決方案之一的微軟基本庫(kù)(MFC)才得以大行其道。與之相得益彰的是,C++作為微軟基本庫(kù)的描述語(yǔ)言,也隨視窗系統(tǒng)的傳播,廣為流行開(kāi)來(lái)。
現(xiàn)代芯片驗(yàn)證領(lǐng)域,無(wú)例外地也出現(xiàn)了類(lèi)似狀況。大量新方法、新模型、新類(lèi)庫(kù),不斷涌現(xiàn),減輕了驗(yàn)證工程師們重復(fù)開(kāi)發(fā)底層代碼的負(fù)荷,將更多精力投入到實(shí)際項(xiàng)目上。這一套新思路中,主要構(gòu)成部分便是驗(yàn)證語(yǔ)言(如Vera、SystemVerilog)、驗(yàn)證基本庫(kù)(RVM、VMM),和相應(yīng)的驗(yàn)證模型(Verification IP)。
3.VMM的應(yīng)用
VMM不儀是方法學(xué),更是該方法的具體實(shí)現(xiàn)。它包括一系列的類(lèi)庫(kù)(class library)、類(lèi)對(duì)象(ob-ject)聯(lián)接關(guān)系,以及用戶定制的代碼。
測(cè)試平臺(tái)中,各部件(component),或即對(duì)象,是VMM基本類(lèi)/擴(kuò)展類(lèi)的實(shí)例化(Instantiate)。所涉及到的VMM基本類(lèi)有vmm_xactor、vmm_scenario_gen和vmm_data等。
聯(lián)接各部件,構(gòu)成一個(gè)整體還需要其他一些基本類(lèi),包括vmm_env、vmm_channel以及vmm_xactor_callbacks等。
除此之外,用戶要根據(jù)芯片的實(shí)際狀況,添加或修改約束條件(constraint)、接口聯(lián)線(interface)、執(zhí)行步驟、覆蓋率定義和自動(dòng)比對(duì)機(jī)制(au-to-check)。
3.1 背景
該種類(lèi)型的驗(yàn)證平臺(tái)充分利用了軟件工程的成果,將整個(gè)測(cè)試平臺(tái)按照所實(shí)現(xiàn)的功能,分門(mén)別類(lèi)予以切割,實(shí)現(xiàn)各模塊獨(dú)自開(kāi)發(fā)、分別維護(hù)。
目前,芯片規(guī)模趨于龐大,協(xié)議愈形復(fù)雜,通常要傳遞海量數(shù)據(jù),并擁有數(shù)目繁多的端口。如果還以先前純Verilog的方式建立驗(yàn)證系統(tǒng),將很難滿足芯片開(kāi)發(fā)、投片的進(jìn)度。
極而言之,簡(jiǎn)單地激勵(lì)DUT輸入端口、監(jiān)控相應(yīng)的輸出端口和編寫(xiě)臨時(shí)性的代碼來(lái)做數(shù)據(jù)比對(duì),這種驗(yàn)證方法已相當(dāng)落后了。當(dāng)然,我們也看到:對(duì)某些結(jié)構(gòu)簡(jiǎn)單的芯片還有一定市場(chǎng),純粹Verilog語(yǔ)言的驗(yàn)證平臺(tái)也可以做到非常復(fù)雜(但是,很難維護(hù)),并且學(xué)習(xí)面向?qū)ο缶幊痰拇鷥r(jià)容易令人望而卻步。但這些都是主流之外的個(gè)例,故對(duì)此本文不深入展開(kāi)。
現(xiàn)代驗(yàn)證系統(tǒng),盡管包含數(shù)量眾多的模塊、多樣的數(shù)據(jù)類(lèi)型/協(xié)議及各模塊間復(fù)雜的信息傳遞(保持同步、共享數(shù)據(jù)等),它仍然是繼承傳統(tǒng)方法,歸納以往的驗(yàn)證經(jīng)驗(yàn),依照慣常的步驟建立測(cè)試平臺(tái)。
VMM方法也概莫能外。依照通常的流程,它為所有應(yīng)用VMM的測(cè)試平臺(tái),設(shè)定了九個(gè)步驟,定義在 vmm_env 中 :gen_cfg、build、reset_dut、cfg_dut、start、wait_for_end、stop、cleanup和report。
另一方面,VMM平臺(tái)的架構(gòu),按抽象層次劃分,由以下部件組成:測(cè)試?yán)?test)、場(chǎng)景發(fā)生器(gen-erator)、驅(qū)動(dòng)部件(driver)、監(jiān)控部件(monitor)、數(shù)據(jù)比對(duì)部件(scoreboard)、數(shù)據(jù)對(duì)象(data objects)、數(shù)據(jù)傳輸管道(channel)、回調(diào)函數(shù)集(callbacks)、配置總集(dut_cfg與sys_cfg)、覆蓋率統(tǒng)計(jì)部件,和聯(lián)接并集成以上所有部件的環(huán)境對(duì)象(environmentobject)。
VMM中各個(gè)部件的使用,可參看Synopsys與ARM共同出版的手冊(cè)。
3.2 評(píng)估標(biāo)準(zhǔn)
本所此前的驗(yàn)證工作均采用驗(yàn)證語(yǔ)言ve-ra,使用SystemVerilog則是次。VMM方法的引入,究竟能在多大程度上提高驗(yàn)證效率?該項(xiàng)目既是實(shí)際工作,又是評(píng)估。
我們?cè)O(shè)定預(yù)期值是基于以下幾點(diǎn)考慮:
(1) 建立一個(gè)范例平臺(tái),包含簡(jiǎn)單的數(shù)據(jù)交易、自檢測(cè)、覆蓋率統(tǒng)計(jì),需要多長(zhǎng)時(shí)間?
(2) 可擴(kuò)展性,即隨機(jī)測(cè)試向量的約束條件更改、自動(dòng)比對(duì)機(jī)制按需求定制、功能覆蓋點(diǎn)的添加及AXI協(xié)議的監(jiān)控是否完備。
(3) 驗(yàn)證流程可控性,如在已有的九步驟中插入額外動(dòng)作;通過(guò)系統(tǒng)配置的改變,來(lái)控制各步驟執(zhí)行的順序和次數(shù)(比如reset多次cfg_dut以實(shí)現(xiàn)在線重復(fù)測(cè)試)。
(4) 易用性也應(yīng)當(dāng)考慮在內(nèi)。畢竟,VMM方法涵蓋的內(nèi)容很廣,工程師們要完全掌握仍有個(gè)過(guò)程。在無(wú)法知其所以然的時(shí)候,能不能很快地知其然,并開(kāi)展工作,顯得非常重要。
后文的敘述,都將圍繞著這幾方面展開(kāi)。
4 AXI-VIP的集成
如前所述,VMM方法具備抽象分層結(jié)構(gòu)、有九個(gè)執(zhí)行步驟等優(yōu)點(diǎn),但它只是一個(gè)通用的方法,能否符合前面提出的四點(diǎn)判定標(biāo)準(zhǔn),還是問(wèn)題。
舉例來(lái)說(shuō),計(jì)算所的AXI主設(shè)備(master)仿真模型,是以Verilog編寫(xiě)的,無(wú)法在短期內(nèi)實(shí)現(xiàn)與VMM平臺(tái)的互聯(lián);完整的AXI協(xié)議檢測(cè),對(duì)本所顆基于該總線的片上系統(tǒng),顯得尤為重要;由于時(shí)間倉(cāng)促,AXI仿真模型還有待修正。
這些都是項(xiàng)目進(jìn)程中無(wú)法回避的問(wèn)題,而VMM方法本身又沒(méi)有提供解決方法。
4.1 商用驗(yàn)證模型
AXI驗(yàn)證模型(VIP)是Synopsys公司的商用模型,可配置,數(shù)據(jù)交易嚴(yán)格符合AXI協(xié)議,具備完整的協(xié)議檢查功能。
重要的一點(diǎn)是,AXI-VIP提供與VMM平臺(tái)的接口。實(shí)際上,這個(gè)VIP本身就實(shí)現(xiàn)了VMM平臺(tái)的驅(qū)動(dòng)部件(Driver)加監(jiān)控部件(Monitor)的功能:向下層是與DUT通過(guò)端口相聯(lián),向上層則有基于vmm-channel/vmm_xactor_callbacks的數(shù)據(jù)傳輸管道。除Test、Generator、和Scoreboard之外的部分,AXI-VIP都已實(shí)現(xiàn)。
這個(gè)商用模型對(duì)開(kāi)發(fā)進(jìn)度的實(shí)際貢獻(xiàn),將取決于工程師能否快速上手。換言之,VIP的易用性決定了它的價(jià)值。
有鑒于此,Synopsys公司提供一個(gè)基于AXI-VIP的VMM范例。其中,DUT部分以AXI Bus VIP替代,TB部分實(shí)現(xiàn)了分層架構(gòu)。工程師作為用戶,只需做如下修改,便能得到包含有簡(jiǎn)單數(shù)據(jù)交易、自檢測(cè)、覆蓋率統(tǒng)計(jì)等功能的驗(yàn)證平臺(tái):
(1) 替換DUT,并修改接口信號(hào)名;
(2) 改寫(xiě)測(cè)試?yán)齮est_1的約束條件,得到自己的測(cè)試?yán)?/p>
(3) 增加對(duì)DUT的配置操作。
上述工作于一天內(nèi)完成,仿真輸出結(jié)果有波形文件、Log文件、及覆蓋率。
4.2 AXI-VIP支持的類(lèi)
AXI VIP定義的類(lèi),都有相同的前綴名“dw_vip_axi”,它們構(gòu)成vmm_env當(dāng)中的大部分:
這些類(lèi)將例化產(chǎn)生主設(shè)備部件、從沒(méi)備部件、監(jiān)控部件、配置對(duì)象、數(shù)據(jù)對(duì)象、和數(shù)據(jù)傳輸管道等等。它們有著各自的變量、函數(shù),提供了豐富的控制功能,涵蓋所有類(lèi)型的操作。
功能的完備并未損害AXI-VIP的易用性,這點(diǎn)在項(xiàng)目中得到了印證。通過(guò)三天的培訓(xùn)與實(shí)做,工程師們能夠通過(guò)“修改約束條件來(lái)隨機(jī)產(chǎn)生測(cè)試向量”,按照芯片測(cè)試規(guī)范改寫(xiě)“自動(dòng)比對(duì)機(jī)制”,添加“功能覆蓋點(diǎn)”,并利用AXI監(jiān)控部件“自動(dòng)檢查協(xié)議”并收集與AXI協(xié)議相關(guān)的覆蓋率。
這當(dāng)中,按照芯片測(cè)試規(guī)范改寫(xiě)“自動(dòng)比對(duì)機(jī)制”沒(méi)有現(xiàn)成的VMM基本類(lèi)可用。我們是從Synopsys提供的簡(jiǎn)單范例人手,利用AX-I-VIP提供的回調(diào)函數(shù)集,獲取數(shù)據(jù)交易信息,并實(shí)時(shí)地比對(duì)流出與流入數(shù)據(jù)。如同其他的驗(yàn)證系統(tǒng),這部分工作是多樣化,也是為的任務(wù),所以占用三天當(dāng)中的大部分時(shí)問(wèn),也在意料之中。
我們?cè)谙乱还?jié)中簡(jiǎn)單介紹本項(xiàng)目“自動(dòng)比對(duì)機(jī)制”的實(shí)現(xiàn)。
5.基于VMM的Scoreboard實(shí)現(xiàn)
本所驗(yàn)證組以VMM方法為指導(dǎo),利用AXI-VIP提供的回調(diào)函數(shù)集,快速建立了該測(cè)試平臺(tái)的自動(dòng)比對(duì)機(jī)制。盡管還不能終應(yīng)用在十幾個(gè)主/從設(shè)備的全系統(tǒng)中,但是,由于這部分代碼封裝在自定義的Scoreboard類(lèi)當(dāng)中,可重用,可擴(kuò)展,并且符合VMM平臺(tái)的接口要求,可以很方便地合入將來(lái)的系統(tǒng)中。
該Scoreboard類(lèi)的部分SystemVerilog代碼由Synopsys提供。左端是主設(shè)備數(shù)據(jù)緩沖及比對(duì),右端為從設(shè)備數(shù)據(jù)緩沖及比對(duì),中間的1到N和N到1轉(zhuǎn)換,實(shí)現(xiàn)數(shù)據(jù)比對(duì)任務(wù)的分配。N個(gè)從設(shè)備的比對(duì)代碼,都擴(kuò)展自相同的類(lèi)。正因?yàn)檫@種設(shè)計(jì)它是可無(wú)限擴(kuò)展的?;诒卷?xiàng)目只有兩個(gè)主設(shè)備的特點(diǎn),我們對(duì)左邊的結(jié)構(gòu)做了大幅度簡(jiǎn)化。
的比對(duì)部分之外,關(guān)鍵任務(wù)就是實(shí)時(shí)地獲取各主/從沒(méi)備的數(shù)據(jù)流。這在AXI-VIP(也包括Synopsys公司的其他VIP)中,已經(jīng)有現(xiàn)成函數(shù)可用。本所工程師在兩天時(shí)間內(nèi)就學(xué)會(huì)使用,并結(jié)合實(shí)際完成了代碼的開(kāi)發(fā)與調(diào)試。
AXI-VIP包括主設(shè)備、從設(shè)備、與監(jiān)控設(shè)備。它們?cè)跀?shù)據(jù)交易的幾個(gè)關(guān)鍵點(diǎn)將得到函數(shù)回調(diào)(callback)的機(jī)會(huì),如表1所示。
依據(jù)這些回調(diào)函數(shù)對(duì)應(yīng)的數(shù)據(jù)交易階段,我們選取主設(shè)備的post_input_channel_get、從設(shè)備的pre_output_channel_put兩函數(shù)來(lái)獲取交易數(shù)據(jù)。
其他函數(shù)也可以用來(lái)獲取數(shù)據(jù),如監(jiān)控設(shè)備的pre_activity_channel_put,就可以得到輸入、輸出兩方面的數(shù)據(jù)。具體請(qǐng)參看AXI_VIP使用手冊(cè)。
另外,VMM回調(diào)函數(shù)還可以用于控制驗(yàn)證流程、插入錯(cuò)誤數(shù)據(jù)等等,限于篇幅,本文不再展開(kāi)。
6 結(jié)語(yǔ)
因?yàn)樾酒?yàn)證工作的趨勢(shì)是需要更多的軟件知識(shí)和技巧。本文以中科院計(jì)算所的SoC項(xiàng)目為例,講解了如何充分利甩的驗(yàn)證語(yǔ)言基本庫(kù)和商用的仿真模型,快速建立測(cè)試平臺(tái)。文中詳細(xì)介紹了各部件的使用,和AXI-VIP對(duì)象如何納入VMM框架,以及這樣做的實(shí)際意義。
VMM方法基于SystemVerilog語(yǔ)言,提供了完整的函數(shù)庫(kù),而作為補(bǔ)充的AXI-VIP,功能完備且易用性強(qiáng)?;谶@一新方法,本所驗(yàn)證組工程師在五個(gè)工作日內(nèi)快速建立了一套可方便擴(kuò)展的測(cè)試平臺(tái)。在建立新系統(tǒng)的過(guò)程中,發(fā)現(xiàn)一個(gè)沒(méi)計(jì)的漏洞,充分體現(xiàn)廠該方法的高效性。
版權(quán)與免責(zé)聲明
凡本網(wǎng)注明“出處:維庫(kù)電子市場(chǎng)網(wǎng)”的所有作品,版權(quán)均屬于維庫(kù)電子市場(chǎng)網(wǎng),轉(zhuǎn)載請(qǐng)必須注明維庫(kù)電子市場(chǎng)網(wǎng),http://www.hbjingang.com,違反者本網(wǎng)將追究相關(guān)法律責(zé)任。
本網(wǎng)轉(zhuǎn)載并注明自其它出處的作品,目的在于傳遞更多信息,并不代表本網(wǎng)贊同其觀點(diǎn)或證實(shí)其內(nèi)容的真實(shí)性,不承擔(dān)此類(lèi)作品侵權(quán)行為的直接責(zé)任及連帶責(zé)任。其他媒體、網(wǎng)站或個(gè)人從本網(wǎng)轉(zhuǎn)載時(shí),必須保留本網(wǎng)注明的作品出處,并自負(fù)版權(quán)等法律責(zé)任。
如涉及作品內(nèi)容、版權(quán)等問(wèn)題,請(qǐng)?jiān)谧髌钒l(fā)表之日起一周內(nèi)與本網(wǎng)聯(lián)系,否則視為放棄相關(guān)權(quán)利。
- ARM技術(shù)架構(gòu)與應(yīng)用開(kāi)發(fā)實(shí)踐指南2026/1/6 10:40:19
- 嵌入式實(shí)時(shí)操作系統(tǒng)(RTOS)選型與移植技術(shù)指南2025/12/31 10:42:31
- 工業(yè)嵌入式系統(tǒng):通信接口技術(shù)選型與抗干擾設(shè)計(jì)實(shí)踐2025/12/15 14:36:53
- 深入解析嵌入式 OPENAMP 框架:開(kāi)啟異核通信新時(shí)代2025/7/22 16:27:29
- 一文快速了解OPENWRT基礎(chǔ)知識(shí)2025/7/14 16:59:04
- 編碼器的工作原理及作用1
- 超強(qiáng)整理!PCB設(shè)計(jì)之電流與線寬的關(guān)系2
- 三星(SAMSUNG)貼片電容規(guī)格對(duì)照表3
- 電腦藍(lán)屏代碼大全4
- 國(guó)標(biāo)委發(fā)布《電動(dòng)汽車(chē)安全要求第3部分:人員觸電防護(hù)》第1號(hào)修改單5
- 通俗易懂談上拉電阻與下拉電阻6
- 繼電器的工作原理以及驅(qū)動(dòng)電路7
- 電容單位8
- 跟我學(xué)51單片機(jī)(三):?jiǎn)纹瑱C(jī)串口通信實(shí)例9
- 一種三極管開(kāi)關(guān)電路設(shè)計(jì)10
- PCB焊盤(pán)與過(guò)孔設(shè)計(jì)核心實(shí)操規(guī)范(含可焊性與可靠性保障)
- 汽車(chē)電子常用電子元器件選型指南
- MOSFET驅(qū)動(dòng)與隔離方案設(shè)計(jì)
- 高溫環(huán)境下電源IC選型建議
- 安防監(jiān)控設(shè)備連接器應(yīng)用分析
- 高速PCB信號(hào)完整性(SI)設(shè)計(jì)核心實(shí)操規(guī)范
- 鎖相環(huán)(PLL)中的環(huán)路濾波器:參數(shù)計(jì)算與穩(wěn)定性分析
- MOSFET反向恢復(fù)特性對(duì)系統(tǒng)的影響
- 電源IC在惡劣環(huán)境中的防護(hù)設(shè)計(jì)
- 連接器耐腐蝕性能測(cè)試方法









