今天偶然在群里看到有人分享了Mentor Graphics
提供的一個(gè) UART 的 UVM 驗(yàn)證環(huán)境代碼,包含了 UVM 的基本使用以及進(jìn)階的 UVM 寄存器模型。這里也分享給大家。
?
文件說(shuō)明
agents/apb_agent - APB agent used in the UVM testbench
agents/uart_agent - UART agent user in the UVM testbench
agents/modem_agent - UART Modem interface agent, used in the UVM testbench
docs
protocol_monitor - contains an example APB protocol monitor
rtl - Contains the UART RTL source code***
sim - Simulation directory for the example, contains the Makefile
uvm_tb/tb - Top level testbench
uvm_tb/tests
uvm_tb/virtual_sequences
uvm_tb/sequences
uvm_tb/register_model
uvm_tb/env - contains the functional coverage monitors described in the cookbook
DUT 是 16550A UART 模塊,接口主要包含 apb、uart 以及一些狀態(tài)信號(hào),agents 下是不同接口的 agent,16550A UART 的詳細(xì) spec 建議大家自己搜索下載。
docs 是 uart 模塊的簡(jiǎn)單說(shuō)明,包含了一些寄存器的說(shuō)明
protocol_monitor 是一個(gè)協(xié)議檢查模塊,通過(guò)斷言對(duì) apb 協(xié)議進(jìn)行檢查
環(huán)境集成以及 sequence 等編寫(xiě)在 uvm_tb 下。
?
運(yùn)行仿真
想要運(yùn)行可以通過(guò) sim 目錄下的 makefile 進(jìn)行,makefile 調(diào)用的是 quesatsim 進(jìn)行仿真,如果沒(méi)有的話(huà),需要自己編寫(xiě) vcs 的 makefile 進(jìn)行仿真。
如果想要在 window 下通過(guò) makefile 運(yùn)行仿真,需要以下幾個(gè)步驟
- 安裝 git_bash,git 的 bash 實(shí)際上也就是一個(gè) mingw,是可以支持部分 linux 指令的,但是只有少部分,可以讓我們的的終端更加像 linux 下的操作。這個(gè)時(shí)候還是不支持 makefile,需要我們自行安裝,教程可以參考下面的鏈接
https://www.eemaker.com/git-bash-make.html
- 安裝 questasim
完成以后就能直接通過(guò) make all 運(yùn)行啦。
默認(rèn)的 makefile 只進(jìn)行到仿真這一步,沒(méi)有生成覆蓋率報(bào)告,我在 makefile 中加了入了覆蓋率相關(guān)的命令
先合并覆蓋率數(shù)據(jù)庫(kù),然后生成覆蓋率報(bào)告的 html 文件
rpt_cg:
vcover merge -out merge_coverage.ucdb *.ucdb
vcover report -details -html merge_coverage.ucdb
@echo "html has been created in ./sim/covhtmlreport"
?
詳細(xì)的內(nèi)容請(qǐng)查看 README
后臺(tái)回復(fù)
uart
獲得驗(yàn)證環(huán)境