ubuntu下UVM的編譯及首個程序的驗證

最近開始自學數字IC驗證的內容,驗證平臺的環境安裝、配置並不是很難,但是對於小白來說,獨自摸索還真不容易。接下來我將步驟單獨列出,供後續學習者參考。

  1. 準備UVM標準庫文件,網上版本較多,我們以uvm-1.1d版本爲例進行說明。UVM標準庫文件已上傳到CSDN中[鏈接:https://download.csdn.net/download/programmer_guan/14991340]
  2. 把uvm-1.1d.tar.gz放在linux系統中進行解壓。也可以在window系統下解壓後上傳到linux系統中。
  3. 打開.bashrc進行環境變量的配置
    gvim .bashrc#打開.bashrc
    export UVM_HOME=/home/guanjw356/synopsys/uvm-1.1d#這裏需要填寫你解壓文件的目錄
    source .bashrc#使配置生效
    
  4. 進入標準庫文件自帶的example目錄,會發現Makefile.vcs文件,此文件對於所有驗證平臺通用,裏面主要是對UVM庫進行編譯。但是要注意,並不能在此目錄下此文件的編譯。繼續進入integrated/ubus/examples目錄,此處纔是UVM進行編譯的目錄,輸入命令後運行若不報錯則說明編譯成功。
    make -f makefile.vcs
    
  5. 在我的Ubuntu系統中發現報錯,修改如下:將前一個ma kefile.vcs中的部分配置內容修改如下,運行後正常。
    VCS =vcs -sverilog -timescale=1ns/1ns \
    	-full64 -cpp g++-4.8 -cc gcc-4.8 -LDFLAGS -Wl,--no-as-needed\
    	+acc +vpi \
    	+define+UVM_OBJECT_MUST_HAVE_CONSTRUCTOR \
    	+incdir+$(UVM_HOME)/src $(UVM_HOME)/src/uvm.sv \
    	$(UVM_HOME)/src/dpi/uvm_dpi.cc -CFLAGS -DVCS
    
  6. 自帶案例測試成功後,進行首個最簡單的UVM平臺代碼top_tb.sv的編寫。
    `include "uvm_pkg.sv"
    `include "uvm.sv"
    
    module hello_uvm;
    	import uvm_pkg::*;
    	`include "uvm_macros.svh"
    	
    	initial begin 
    		`uvm_info("infol","\n===\nUVM_Hello\n==\n",UVM_LOW)
    	end
    endmodule:hello_uvm
    
  7. 進行makefile腳本的編寫
    .PHONY:com sim clean
    
    UVM_VERBOSITY =	UVM_LOW
    OUTPUT = demo_top
    
    VCS =vcs -R -sverilog -timescale=1ns/1ns \
    	-full64 -cpp g++-4.8 -cc gcc-4.8 -LDFLAGS -Wl,--no-as-needed\
    	+acc +vpi \
    	+define+UVM_OBJECT_MUST_HAVE_CONSTRUCTOR \
    	+incdir+$(UVM_HOME)/src $(UVM_HOME)/src/uvm.sv \
    	$(UVM_HOME)/src/dpi/uvm_dpi.cc -CFLAGS -DVCS
    
    #SIM = ./${OUTPUT} -l run.log
    SIMV = 	./simv +UVM_VERBOSITY=$(UVM_VERBOSITY) -l vcs.log
    
    URG  = urg -format text -dir simv.vdb
    CHECK = \
    @$(TEST) \( `grep -c 'UVM_ERROR :    $(N_ERRS)' vcs.log` -eq 1 \) -a \
    	 \( `grep -c 'UVM_FATAL :    $(N_FATALS)' vcs.log` -eq 1 \)
    
    run_all:
    	${VCS} -f filelist.f
    sim:
    	${SIM}
    clean:
    	rm -rf *~ core csrc simv* vc_hdrs.h ucli.key urg* *.log
    
    vcs參數解析如下:
    +incdir+directory               添加文件的搜索路徑
    -CC                       "opts" pass 'opts' to C compiler
    -CFLAGS                      "opts" pass 'opts' to C compiler    // cc 和 cflags 作用相同
    -DVCS                            當我們使用外部的UVM源(庫?)時,必須使用-DVCS選項
    $(UVM_HOME)/src/dpi/uvm_dpi.cc   導入 DPI-C 的程序 (一般要和 -CC 和 -DVCS 一起用)
    +acc                        Enable pli applications to use acc routines (see manual)
    -sverilog                        Enables the use of SystemVerilog code
    +vcs+lic+wait                    等待vcs的license
    -l file_name                 logfile文件名
    -R                               在編譯之後立即執行產生的可執行文件         
    
    其中filelist.f中內容如下:
    $UVM_HOME/src/uvm_pkg.sv
    top_tb.sv
    
  8. 最後運行make run_all,運行結果如下圖所示。
    在這裏插入圖片描述
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章