linux系统搭建UVM平台
linux系统搭建UVM平台
最近在学UVM验证,要在linux系统上搭建UVM平台,关于linux上VCS和verdi的安装,大家可以看芯王国的博客(https://blog.csdn.net/weixin_40377195/article/details/109301426?spm=1001.2014.3001.5501),我主要介绍一下我的UVM搭建的过程。
下载UVM-1.1d
http://www.hzcourse.com/web/refbook/detail/5651/229
下载源代码即可,直接拖拽到虚拟机即可,记住存放的位置。
环境变量的设置
我的UVM-1.1d文件存放位置:
/home/ic_eda/synopsys/uvm-1.1d
设置环境变量:UVM_HOME
配置完记得source .bashrc
完成之后可以看一下/home/ic_eda/synopsys/uvm-1.1d/examples/Makefile.vcs文件,这个文件是对UVM库文件的编译,由于我的虚拟机为linux64,所以要将该文件的这个代码修改为:(加上-full64)
VCS= vcs -full64 -sverilog -timescale=1ns/1ns \
+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
保存退出。
下面就可以运行书上的例子了,以书中第一个例子为例:
最简单的验证平台
我主要介绍一下top_tb.sv文件和Makefile.vcs的编写。
进入/home/ic_eda/synopsys/example_and_uvm_source_code/puvm/src文件夹下,这个文件夹里是书中的例子。
打开ch2,将dut.sv文件复制到2.2.1文件夹中
top_tb.sv
//`timescale 1ns/1ps
`include "uvm_macros.svh"
import uvm_pkg::*;
`include "my_driver.sv"
`include "dut.sv"
module top_tb;
reg clk;
reg rst_n;
reg[7:0] rxd;
reg rx_dv;
wire[7:0] txd;
wire tx_en;
dut my_dut(.clk(clk),
.rst_n(rst_n),
.rxd(rxd),
.rx_dv(rx_dv),
.txd(txd),
.tx_en(tx_en));
initial begin
my_driver drv;
drv = new("drv", null);
drv.main_phase(null);
$finish();
end
initial begin
clk = 0;
forever begin
#100 clk = ~clk;
end
end
initial begin
rst_n = 1'b0;
#1000;
rst_n = 1'b1;
end
endmodule
Makefile.vcs
UVM_HOME = /home/ic_eda/synopsys/uvm-1.1d
include /home/ic_eda/synopsys/uvm-1.1d/examples/Makefile.vcs
all: comp run
comp:
$(VCS) +incdir+../sv \
top_tb.sv
run:
$(SIMV) +UVM_TESTNAME=test_2m_4s
$(CHECK)
接下来运行该文件即可
make -f Makefile.vcs
接着
./simv
可以看到
data is drived被输出了256次