因?yàn)樽罱虑檫€挺多的,有一段時(shí)間沒有更新了,然后想想還是再積累一下再寫新的文章,結(jié)果就一個(gè)月過去了。。。。所以避免拖延癥繼續(xù)發(fā)作還是寫一篇一直想寫的文章吧。
最近自己嘗試搭建一個(gè)簡單的驗(yàn)證平臺(tái),入門就先從簡單開始!
1 RTL設(shè)計(jì)
RTL就是一個(gè)帶時(shí)序的1bit加法器,然后驗(yàn)證是否功能正確。理論上的正確功能應(yīng)該是輸入數(shù)據(jù)a和數(shù)據(jù)b之后的下個(gè)周期輸出結(jié)果sum等于a+b。
2 UVM驗(yàn)證平臺(tái)建立
將整個(gè)UVM驗(yàn)證平臺(tái)分為4個(gè)部分agent、env、test、tb,逐層遞進(jìn),關(guān)于層次大小結(jié)構(gòu)圖可以看這篇文章,下圖是整個(gè)驗(yàn)證平臺(tái)的hierarchy。
AndyICer,公眾號(hào):Andy的ICer之路路由器的System Verilog驗(yàn)證平臺(tái)
2.1 agent
2.1.1 add_seq_item
首先建立一個(gè)transaction,即建立一個(gè)數(shù)據(jù)包。
2.1.2 add_seq
建立一個(gè)sequence,用來發(fā)送transaction。發(fā)送transaction的方式有兩種,一種是用start_item()和finish_item(),另外一種是用`uvm_do()的宏。但是兩種方法的原理是一樣的。
法一:
法二:
2.1.3 add_sequencer
建立一個(gè)sequencer用于與其他模塊通信。
2.1.4 add_driver
driver模塊進(jìn)行給DUT傳輸數(shù)據(jù),reset phase進(jìn)行DUT復(fù)位,main phase進(jìn)行激勵(lì)輸入。
2.1.5 add_monitor
monitor模塊接收DUT發(fā)來的數(shù)據(jù),并通過TLM通信發(fā)送給scoreboard。
2.1.6 add_if
定義一個(gè)Interface,里面包含有兩個(gè)clocking block,定義了driver和monitor接口的輸入輸出方向。
2.2 env
2.2.1 add_scoreboard
建立scoreboard,進(jìn)行硬件結(jié)果和軟件結(jié)果的對比。
2.2.2 add_reference_model
這里的邏輯比較簡單,就沒有使用到reference model了,但是還是保留有這個(gè)模塊。
2.2.3 add_env
env就是把a(bǔ)gent、scoreboard、reference model都build并connect起來。
2.3 test
test是驗(yàn)證環(huán)境的頂層,頂層中將env建立好并將configure也建立好,在頂層中進(jìn)行設(shè)置。
2.4 Testbench
將硬件DUT和軟件驗(yàn)證環(huán)境聯(lián)系起來,形成一個(gè)完成的測試平臺(tái)。
3 驗(yàn)證結(jié)果
可以看出驗(yàn)證功能正確,并且通過對于driver和monitor時(shí)序的調(diào)整可以控制輸出結(jié)果的時(shí)序,大家也可以嘗試搭建一個(gè)驗(yàn)證平臺(tái),對于UVM會(huì)有一個(gè)更加直觀的感受。
編輯:lyn
-
加法器
+關(guān)注
關(guān)注
6文章
183瀏覽量
30602 -
UVM
+關(guān)注
關(guān)注
0文章
182瀏覽量
19426
原文標(biāo)題:一個(gè)加法器的UVM驗(yàn)證平臺(tái)設(shè)計(jì)
文章出處:【微信號(hào):HXSLH1010101010,微信公眾號(hào):FPGA技術(shù)江湖】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評(píng)論請先 登錄
評(píng)論