uvm 形式验证_验证平台自动化篇之二:UVM Framework
原標(biāo)題:驗(yàn)證平臺(tái)自動(dòng)化篇之二:UVM Framework
一個(gè)UVM使用者,從新手到精通大致會(huì)經(jīng)歷三年的時(shí)間,而在經(jīng)過這三年之后,verifier會(huì)有倦怠期。除了不可避免地在80%以上工作處于重復(fù)性勞動(dòng)或者稱之為沒有創(chuàng)新的勞動(dòng)以外,剩下的那一點(diǎn)可以用來(lái)成長(zhǎng)的時(shí)間也往往被日常的項(xiàng)目事務(wù)所切分地很凌亂。在跟這些有經(jīng)驗(yàn)的UVM驗(yàn)證工程師溝通的過程中,我們會(huì)了解到他們被哪些大致的事情所困擾:
對(duì)于新的設(shè)計(jì),需要構(gòu)建新的驗(yàn)證平臺(tái),這往往需要兩周甚至更多的時(shí)間。其實(shí),環(huán)境的調(diào)試還要消耗很多的精力,這對(duì)于新人來(lái)講尤甚。
對(duì)于原有的驗(yàn)證環(huán)境,如果設(shè)計(jì)更新了,譬如接口的更新,需要在原有環(huán)境的基礎(chǔ)上進(jìn)行擴(kuò)展和復(fù)用原有的sequence/test。
如果項(xiàng)目組中有新人,他們還需要幫助他們快速搭建環(huán)境。對(duì)于一個(gè)快公司(fast company),人員的快速流動(dòng)下,有經(jīng)驗(yàn)的工程師在培養(yǎng)新人上面就會(huì)面臨越來(lái)越多的傳幫帶任務(wù)。
在驗(yàn)證的后期,需要對(duì)驗(yàn)證環(huán)境代碼進(jìn)行回顧檢視(review),看代碼的風(fēng)格、文檔還有測(cè)試場(chǎng)景。
上面的這些困惑,確實(shí)耗時(shí)耗力,而工程師們?cè)谟邢薜馁Y源下,又沒有更好的辦法。但如果這個(gè)時(shí)候,有一款合適的驗(yàn)證平臺(tái)自動(dòng)化工具可以幫助工程師們完成這些任務(wù),想必工程師的日常業(yè)務(wù)開銷比重會(huì)很快地從80%降下來(lái):
根據(jù)設(shè)計(jì)的接口、數(shù)據(jù)協(xié)議和驗(yàn)證需求來(lái)給出一個(gè)快速構(gòu)建好的驗(yàn)證環(huán)境和連接
有自動(dòng)生成好的激勵(lì)完成數(shù)據(jù)傳輸
有更高層的transaction分析可以從仿真器中觀察
生成好的平臺(tái)可以在項(xiàng)目之間和模塊到系統(tǒng)級(jí)別完成復(fù)用
提供覆蓋率的管理
同時(shí)支持隨機(jī)驗(yàn)證和直接驗(yàn)證
擁有這樣一款驗(yàn)證平臺(tái)自動(dòng)化工具無(wú)疑是很具有吸引力的,而MentorGraphics公司推出的UVM Framework無(wú)疑是這樣一款“走心”的工具。這款工具的背景,或者說(shuō)是如果使用者想產(chǎn)生最大驗(yàn)證產(chǎn)出的前提是,verifier所在的公司是它們的客戶,不但是simulator QuestaSim的客戶,同時(shí)也是他們的驗(yàn)證VIP(QVIP)的用戶。MentorGraphics提供覆蓋全面的VIP系列,譬如常見的AMBA系列、PCIe、USB、DDR等VIP,在公司擁有了這些VIP的前提下,那要恭喜你,首先你們擁有了這張“門票”,可以進(jìn)一步來(lái)使用UVM Framework這款工具。
讀到這里,也許你們沒有使用QuestaSim而是其它的仿真器,也許你們僅僅使用了QuestaSim而沒有購(gòu)買它家的商業(yè)VIP,但路桑介紹這款工具是為了能夠幫助讀者理清一款優(yōu)秀的驗(yàn)證平臺(tái)自動(dòng)化工具需要解決什么最終目的、利用哪些現(xiàn)有的資源、而最終可行的工具開發(fā)計(jì)劃是什么。在這個(gè)理念下,我們?cè)谙乱还?jié)中會(huì)帶領(lǐng)大家理解路桑開發(fā)的驗(yàn)證平臺(tái)自動(dòng)化工具Pangu(盤古)。
首先來(lái)看一看,MentorGraphics所需要解決的問題和擁有的資源有哪些:
UVM Framework工具需要幫助用戶最快地建立一個(gè)驗(yàn)證平臺(tái),即完成標(biāo)準(zhǔn)的驗(yàn)證框架自動(dòng)化。
這款工具需要整合已有的QVIP的配置工具,即QVIP configurator,該工具可以快速集成VIP的驗(yàn)證環(huán)境。
這款工具也可以在生成了結(jié)構(gòu)化的環(huán)境之后,利用結(jié)構(gòu)化的用戶自定義激勵(lì)和QVIP的標(biāo)準(zhǔn)激勵(lì),配合Infact工具,實(shí)現(xiàn)可移植復(fù)用的激勵(lì)。
在上面的這些要求下,已有的資源是QVIP configurator工具和Infact工具。而新的工具UVM Framework則可以通過一致化的框架,來(lái)給出一個(gè)中心化的解決方案。
關(guān)于上面提到的QVIP configurator工具和Infact工具,用戶可以登錄到MentorGraphics官網(wǎng),下載這兩種工具的說(shuō)明或者觀看它們的入門視頻。從下面的這張圖中可以看到,這款工具最終可以有效地降低三個(gè)難度:
UVM的使用難度(從構(gòu)建環(huán)境層面)
VIP的使用難度(從VIP的集成和應(yīng)用層面)
激勵(lì)的不完整性(從VIP常規(guī)意義下的不完整覆蓋激勵(lì)層面)
為了更好地理解這一款工具,或者說(shuō)是完整的解決方案,即通過UVM Framwork、QVIP configuration來(lái)實(shí)現(xiàn)testbench自動(dòng)化,同時(shí)利用Infact實(shí)現(xiàn)測(cè)試的可移植性和更充分的覆蓋率,我們給出一個(gè)例子,來(lái)說(shuō)明這個(gè)方案的。
例如有一個(gè)模塊block_c,它需要驗(yàn)證環(huán)境提供一些輸入和輸出接口,同時(shí)伴隨著其它組件的生成,這些需要自動(dòng)生成的部分包括:
自定義接口:cpb_in、cpb_out和mem_out。
標(biāo)準(zhǔn)接口:axi4_master_0、axi_master_1、pcie_ep、axi4_slave和apb3_config_master。
自定義的predictor和scoreboard:blk_c_pred、cpb_sb、mem_sb、axi4_slave_sb和apb3_cfg_sb。
頂層的環(huán)境:集成自定義接口、標(biāo)準(zhǔn)接口、predictor和scoreboard。
頂層testbench:各個(gè)接口組件的interface同DUT的連接。
接下來(lái)看看UVM Framework這款工具是如何整合資源的。首先,它可以作為用戶自定義接口(custom interface)的代碼生成器,創(chuàng)建好上面的自定義接口組件。下面的例碼是使用這款工具時(shí)分別用來(lái)創(chuàng)建接口組件的Python腳本文件和生成的文件:
接下來(lái),需要利用Questa VIP Configurator工具來(lái)生成集成多個(gè)VIP組件的環(huán)境 。由于該工具支持GUI模式,用戶可以很方便地在工具中選擇需要的VIP類型、設(shè)定配置選項(xiàng)與DUT的連接關(guān)系,通過配置最終可以生成一個(gè)頂層環(huán)境為qvip_agents的環(huán)境,這個(gè)環(huán)境將稍微作為子環(huán)境被集成到更上層的環(huán)境中。
在頂層環(huán)境的集成過程中,需要通過UVM Framework來(lái)創(chuàng)建、例化和集成predictor和scoreboad,同時(shí)也包括集成之前的自定義接口組件和標(biāo)準(zhǔn)接口組件子環(huán)境,該集成的腳本代碼如下:
在頂層環(huán)境和各個(gè)組件都通過腳本完成之后,我們還需要完成頂層測(cè)試平臺(tái)的物理接口連接,而這一步驟也可以通過UVM Framework實(shí)現(xiàn)。
所以,上面的例碼演示了Questa的兩個(gè)工具UVM Framework和QVIP Configurator在互相配合的基礎(chǔ)上,最終實(shí)現(xiàn)了快速創(chuàng)建一個(gè)驗(yàn)證環(huán)境的目標(biāo)。而生成的testbench結(jié)構(gòu)采用的還是“雙TB”的方式,將硬件信號(hào)驅(qū)動(dòng)層hdl_top與軟件信號(hào)驅(qū)動(dòng)層hvl_top剝離開,實(shí)現(xiàn)了將來(lái)跨平臺(tái)(simulator和emulator)運(yùn)行的可能性。關(guān)于跨平臺(tái)運(yùn)行的TB建立方式,我們將會(huì)在后面的一章《跨平臺(tái)移植復(fù)用》中詳細(xì)介紹。
另外,UVM Framework還能夠配置Questa inFact工具實(shí)現(xiàn)可跨平臺(tái)復(fù)用的激勵(lì)和更容易快速收斂的激勵(lì)形式。更多關(guān)于跨平臺(tái)激勵(lì)復(fù)用的介紹,我們會(huì)在后面的《跨平臺(tái)移植復(fù)用》中解釋其理念。在這一節(jié)中,我們需要清楚的是,正是由于Questa VIP的較為統(tǒng)一的sequence/item類,再配合inFact工具,這使得幫助用戶可以更快地創(chuàng)建系統(tǒng)級(jí)的激勵(lì)、更快達(dá)到接口協(xié)議的覆蓋率,而不再受限制于使用者無(wú)法掌握VIP的使用、測(cè)試代碼在檢視起來(lái)可讀性差(無(wú)法在系統(tǒng)級(jí)去理解)、無(wú)法更方便地協(xié)調(diào)控制各個(gè)接口以及無(wú)法很好地去移植,譬如從底層移植到系統(tǒng)層,或者從simulator移植到emulator等。
最后,我們?cè)賮?lái)回顧一下MentorGraphics提出的驗(yàn)證平臺(tái)自動(dòng)化的解決方案:
通過QVIP Configurator實(shí)現(xiàn)標(biāo)準(zhǔn)化商業(yè)VIP的快速集成。
通過UVM Framework實(shí)現(xiàn)自定義組件、頂層環(huán)境和測(cè)試平臺(tái)的集成連接。
通過inFact工具實(shí)現(xiàn)測(cè)試場(chǎng)景的系統(tǒng)級(jí)介入、實(shí)現(xiàn)更好地移植性、操作性和可讀性。
可以鎖,正是UVM Framework這樣一款工具實(shí)現(xiàn)了環(huán)境自動(dòng)化、以及測(cè)試平臺(tái)和激勵(lì)層面的移植性,這非常符合當(dāng)下驗(yàn)證面臨的挑戰(zhàn)和需求。也正由于這樣一款工具,將原有的工具資源整合起來(lái),實(shí)現(xiàn)了效率的最大化。那么這樣一款工具對(duì)于UVM的初級(jí)用戶和高級(jí)用戶分別帶來(lái)了什么價(jià)值呢?
對(duì)于初級(jí)用戶而言,它的優(yōu)勢(shì)在于:
節(jié)省創(chuàng)建驗(yàn)證平臺(tái)的時(shí)間
降低由于經(jīng)驗(yàn)不足致使驗(yàn)證平臺(tái)不成熟而給項(xiàng)目帶來(lái)的風(fēng)險(xiǎn)
對(duì)于整個(gè)驗(yàn)證團(tuán)隊(duì)和項(xiàng)目而言是可以得到迅速回報(bào)的選擇
對(duì)于高級(jí)用戶而言,它的優(yōu)勢(shì)在于:
節(jié)省創(chuàng)建驗(yàn)證平臺(tái)的時(shí)間
實(shí)現(xiàn)更大的產(chǎn)出,即搭建平臺(tái)的時(shí)間節(jié)省下來(lái)投入到創(chuàng)建測(cè)試場(chǎng)景中去
由于inFact工具的幫助使得接口協(xié)議的驗(yàn)證可以更充分、更快達(dá)到覆蓋率
用戶要掌握上面的工具,在實(shí)際使用中,只需要掌握基本的Python語(yǔ)法,更多的需要實(shí)現(xiàn)了解DUT的接口、數(shù)據(jù)流和環(huán)境的目標(biāo)結(jié)構(gòu),在有了這些要求之后,就可以利用UVM Framework和Python腳本快速地生成環(huán)境了。所以,MentorGraphics給出的測(cè)試平臺(tái)自動(dòng)化解決方案是完整的,這具體表現(xiàn)在了:
實(shí)現(xiàn)各個(gè)組件、頂層環(huán)境的集成和連接(需要UVM Framework和QVIP Configurator)。
激勵(lì)場(chǎng)景的快速創(chuàng)建(需要inFact工具)。
實(shí)現(xiàn)更好地調(diào)試環(huán)境和系統(tǒng)層的數(shù)據(jù)流檢查(QuestaSim UVM-Aware Debug特性)
在掌握了上面提到的工具和驗(yàn)證平臺(tái)自動(dòng)化完整方案的設(shè)計(jì)理念之后,我們將在下一節(jié)就路桑團(tuán)隊(duì)自開發(fā)的Pangu進(jìn)行介紹。希望讀者可以在了解了Pangu之后,也能夠結(jié)合自己所在公司的實(shí)際要求,在合適的時(shí)間點(diǎn),開發(fā)出符合公司需要的這樣一款工具,實(shí)現(xiàn)驗(yàn)證效率的提高。
謝謝你對(duì)路科驗(yàn)證的關(guān)注,也歡迎你分享和轉(zhuǎn)發(fā)真正的技術(shù)價(jià)值,你的支持是我們保持前行的動(dòng)力。返回搜狐,查看更多
責(zé)任編輯:
創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎(jiǎng)勵(lì)來(lái)咯,堅(jiān)持創(chuàng)作打卡瓜分現(xiàn)金大獎(jiǎng)總結(jié)
以上是生活随笔為你收集整理的uvm 形式验证_验证平台自动化篇之二:UVM Framework的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: redis stream持久化_一文了解
- 下一篇: jumpserver 节点部署_Jump