袁儒明,陳迎春,汪楊,陳紹輝
(合肥工業(yè)大學(xué),安徽合肥,230009)
驗(yàn)證工作起始于設(shè)計(jì)規(guī)格書或者需求書。從架構(gòu)的設(shè)計(jì),行為級(jí)的系統(tǒng)建模到RTL建模的設(shè)計(jì),甚至到最后的網(wǎng)表設(shè)計(jì)和后端的詳細(xì)布局,驗(yàn)證工作貫穿在芯片設(shè)計(jì)的整個(gè)過程中[1]。因此,對(duì)硬件電路的仿真和驗(yàn)證就成為了影響項(xiàng)目進(jìn)度的瓶頸,往往占整個(gè)IC開發(fā)周期70%左右的時(shí)間[2]。
傳統(tǒng)的驗(yàn)證語言存在抽象建模能力不足,不易擴(kuò)展和維護(hù),缺少帶約束的隨機(jī)激勵(lì),仿真速度慢等缺點(diǎn)[3],已經(jīng)遠(yuǎn)遠(yuǎn)不能滿足當(dāng)前驗(yàn)證的需要。UVM是Accellera公司于2011年推出的基于systemverilog語言的通用驗(yàn)證方法學(xué),其主體來源為OVM,同時(shí)又采納了Synopsys在VMM中的寄存器解決方案RAL[4]。UVM克服了OVM和VMM各自的缺點(diǎn),成為目前最主流的驗(yàn)證方法學(xué),指引了驗(yàn)證方法學(xué)的發(fā)展方向。
本文通過重用驗(yàn)證組件、繼承驗(yàn)證場(chǎng)景和重用驗(yàn)證序列,實(shí)現(xiàn)了不同模塊的功能驗(yàn)證,縮短了驗(yàn)證周期,提高了驗(yàn)證效率。
為了解決多個(gè)主設(shè)備同時(shí)競(jìng)爭(zhēng)總線的控制權(quán)的問題,應(yīng)當(dāng)采用總線仲裁部件,以某種方式選擇一個(gè)主設(shè)備優(yōu)先獲得總線控制權(quán)。只有獲得了總線控制權(quán)的設(shè)備,才能開始傳送數(shù)據(jù)。
本模塊采用主設(shè)備控制模式,對(duì)總線有控制權(quán),信息的傳送是由主設(shè)備啟動(dòng)的,仲裁框圖如圖1所示。
圖1 總線仲裁框圖
工作流程:
(1)主設(shè)備發(fā)送請(qǐng)求信號(hào);
(2)若多個(gè)主設(shè)備同時(shí)需要使用總線,總線控制器根據(jù)仲裁邏輯、判優(yōu)按一定的優(yōu)先等級(jí)順序確定可以使用總線的主設(shè)備;
(3)獲得總線使用權(quán)的主設(shè)備開始傳送數(shù)據(jù)。
UVM提供了一系列標(biāo)準(zhǔn)類,如uvm_test、uvm_env、uvm_agent、uvm_driver、 uvm_monitor、uvm_sequence、uvm_sequencer等。UVM方法學(xué)將uvm_driver、uvm_monitor、 uvm_sequencer封裝成uvm_agent類,這些可配置、可重用的組件(Universal Verification Component,UVC) 作為最重要的可重用組件能夠加快驗(yàn)證的實(shí)施[5-6]。
在UVM驗(yàn)證平臺(tái)中,以UVC為基礎(chǔ),把類uvm_driver、uvm_monitor封裝成uvm_agent后,在uvm_env中只需要實(shí)例化uvm_agent,而不需要再直接實(shí)例化uvm_driver和uvm_monitor[7-8],UVM通用平臺(tái)如圖2所示。
圖2 UVM通用平臺(tái)
基于UVM的Factory機(jī)制,重載驗(yàn)證平臺(tái)中的組件,避免重復(fù)開發(fā),具有很強(qiáng)的靈活性[9-10]。
當(dāng)對(duì)總線仲裁模塊和主設(shè)備模塊進(jìn)行整體模塊的功能驗(yàn)證時(shí),采用驗(yàn)證組件橫向的重用性,重用總線仲裁模塊的驗(yàn)證組件。橫向的可重用性是指驗(yàn)證組件在不同的IP驗(yàn)證中的重用,不同的IP具有相同的總線接口。
本文首先對(duì)仲裁模塊進(jìn)行功能驗(yàn)證,并且采用了兩個(gè)UVC組件。兩個(gè)UVC組件的結(jié)構(gòu)是一致的,不同的是,UVC1的主要功能是用來發(fā)送激勵(lì)和接收總線仲裁模塊輸出的數(shù)據(jù),UVC2的主要功能是用來模擬總線仲裁模塊的功能,DUT模塊為dut_dummy.v,即為總線仲裁模塊。兩個(gè)UVC組件的monitor模塊收集數(shù)據(jù)并發(fā)送到bus_monitor模塊中,bus_monitor把數(shù)據(jù)發(fā)送到scoreboard模塊中進(jìn)行比較。在scoreboard中會(huì)校對(duì)發(fā)送和接收的數(shù)據(jù),以及總線的讀寫模式。總線仲裁模塊驗(yàn)證環(huán)境如圖3所示。
圖3 總線仲裁模塊的驗(yàn)證環(huán)境
本文主設(shè)備選用2個(gè)UART模塊。當(dāng)對(duì)總線仲裁模塊和主設(shè)備模塊進(jìn)行整體模塊的功能驗(yàn)證時(shí),DUT模塊為top.v模塊,top.v模塊包含總線仲裁模塊和UART模塊。因UART模塊為內(nèi)部數(shù)據(jù)模塊,對(duì)IP的接口不產(chǎn)生影響,所以采用驗(yàn)證的橫向可重用性,重用UVC1和UVC2組件,整體模塊的驗(yàn)證組件重用方式如圖4所示。其中,IP1是總線仲裁模塊,IP2是top.v模塊,在對(duì)IP2的驗(yàn)證中,驗(yàn)證環(huán)境重用了IP1的UVC1和UVC2組件,實(shí)現(xiàn)了驗(yàn)證組件的重用性。
圖4 驗(yàn)證重用方式
本文在對(duì)整體模塊進(jìn)行功能驗(yàn)證時(shí),重用了圖3所示的驗(yàn)證環(huán)境uvm_env,同時(shí)通過繼承uvm_base的方式創(chuàng)建了三個(gè)新的base_test類test_2m_4s、test_r8_w8_r4_w4和test_read_modify_write,這三個(gè)類分別在每個(gè)base_test類中創(chuàng)建新的測(cè)試用例,從而實(shí)現(xiàn)了驗(yàn)證場(chǎng)景的繼承,驗(yàn)證場(chǎng)景的繼承方式如圖5所示。
圖5 驗(yàn)證場(chǎng)景的繼承
可重用性不僅表現(xiàn)在驗(yàn)證組件的可重用性上,也體現(xiàn)在測(cè)試用例的可重用上。在UVM平臺(tái)中,測(cè)試用例的重用方式以驗(yàn)證序列的重用為基礎(chǔ)。一般通過三種方式重用驗(yàn)證序列:一是組合重用,二是繼承重用,三是模塊級(jí)測(cè)試用例到系統(tǒng)級(jí)的重用。組合重用是指通過不同的排列組合規(guī)劃已有的序列生成新的序列。繼承重用是指通過類的繼承,重用先前類的屬性和方法,繼承已有的序列生成新的序列。本文主要使用組合重用和繼承重用兩種方法。在使用組合重用的過程中,對(duì)已經(jīng)開發(fā)完成的讀、寫操作組合成讀后寫等新的操作。在使用繼承重用的過程中,本文通過添加新的控制屬性或者修改已有的約束條件,生成不同的測(cè)試用例,測(cè)試用例如表1所示。
表1 仲裁模塊測(cè)試用例列表
總線仲裁模塊主要驗(yàn)證多個(gè)主設(shè)備同時(shí)競(jìng)爭(zhēng)總線的控制權(quán),本文選用兩個(gè)UART模塊掛載到總線仲裁模塊上。總線仲裁模塊驗(yàn)證結(jié)果顯示,master和slave選擇0位的設(shè)備優(yōu)先獲得總線的控制權(quán),讀模式打印的結(jié)果是READ,寫模式打印的結(jié)果是WRITE,讀寫的數(shù)據(jù)是data。如圖6和圖7所示,設(shè)備0獲得優(yōu)先的總線控制權(quán),然后對(duì)數(shù)據(jù)進(jìn)行讀寫,寫出的數(shù)據(jù)比讀出的數(shù)據(jù)少1。
圖6 讀模式
圖7 寫模式
通過添加不同的激勵(lì),不斷的提高驗(yàn)證的完備性,驗(yàn)證覆蓋率結(jié)果如圖8所示。其中,語句覆蓋率達(dá)到100%,行覆蓋率達(dá)到100%,翻轉(zhuǎn)覆蓋率達(dá)到100%。
圖8 覆蓋率報(bào)告
通過UVM報(bào)告可以看出,scoreboard對(duì)實(shí)際數(shù)據(jù)和預(yù)取數(shù)據(jù)進(jìn)行對(duì)比,分別實(shí)現(xiàn)讀寫對(duì)比,scoreboard數(shù)據(jù)對(duì)比如圖9所示。
圖9 scoreboard數(shù)據(jù)對(duì)比
UVM方法學(xué)吸收主流方法學(xué)的優(yōu)點(diǎn),不僅功能強(qiáng)大,而且架構(gòu)清晰,在可重用性等方面具有很大的優(yōu)勢(shì),使得驗(yàn)證難度被有效分解,縮短了流程,加快了驗(yàn)證的實(shí)施。本文基于UVM環(huán)境,對(duì)驗(yàn)證組件進(jìn)行重用,快速的完成了總線仲裁模塊功能驗(yàn)證,以及整體模塊的驗(yàn)證工作,驗(yàn)證效率得到大幅提升,在實(shí)際應(yīng)用中具有很高的利用價(jià)值。