用VCS启动UVM仿真

1. 准备

  1. 下载好uvm的库,解压后的文件夹uvm-1.1d,accellera官网下载UVM
  2. 将库保存在linux虚拟机自己的目录下

2. 步骤

  1. 在.bashrc文件中设置变量 $UVM_HOME,这个变量保存uvm-1.1d的目录,设置了这个变量后,在用到uvm库的路径的时候,就可以用$UVM_HOME.
1
2
3
4
5
cd ~
gvim .bashrc
// 在.bashrc文件中添加uvm-1.1d这个文件夹的地址
//比如
export UVM_HOME=~/uvm/uvm-1.1d
  1. 设置VCS运行脚本
1
2
3
4
# filename :run
vcs +acc +vpi -sverilog $UVM_HOME/src/dpi/uvm_dpi.cc -CFLAGS -DVCS -timescale=1ns/1ps -f filelist.f
./simv +UVM_TESTNAME=$1
# +UVM_TESTNAME是要测试的case,使用的时候 ./run my_case0,这个$1就替换成了my_case0
  1. filelist.f文件的内容
1
2
3
4
5
6
+incdir+$UVM_HOME/src
$UVM_HOME/src/uvm_pkg.sv
/home/IC/Desktop/my_uvm/dut/dut.sv
top_tb.sv
# dut.sv是DUT
# top_tb.sv是测试平台最顶层
  1. 在top_tb.sv中`include一些文件
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
`timescale 1ns/1ps
`include "uvm_macros.svh"

import uvm_pkg::*;
`include "my_if.sv"
`include "my_transaction.sv"
`include "my_sequencer.sv"
`include "my_driver.sv"
`include "my_monitor.sv"
`include "my_agent.sv"
`include "my_model.sv"
`include "my_scoreboard.sv"
`include "my_env.sv"
`include "base_test.sv"
`include "my_case0.sv"
  1. 运行
1
./run my_case0

3. VCS仿真UVM脚本2

1
2
3
4
5
6
7
vcs     +vpi +acc -sverilog +incdir+${UVM_HOME}/src \
${UVM_HOME}/src/uvm_pkg.sv \
${UVM_HOME}/src/dpi/uvm_dpi.cc \
-CFLAGS -DVCS \
-timescale=1ns/1ps \
top_tb.sv
./simv

上面脚本中,顺序不能错,一点都不能错。

+acc:使能PLI
+vpi:开启VPI PLI

可以将top_tb.sv替换成filelist.f文件

注意:在Makefile中,访问变量需要加{}中括号。

4. VCS仿真UVM脚本3

在.bashrc文件中设置变量 VCS_UVM_HOME ,设置成。

1
export VCS_UVM_HOME = $UVM_HOME/src

运行VCS

1
vcs -sverilog -ntb_opts uvm-1.1 test.sv

如果用到uvm_pkg.sv,就可以按照上面那样直接运行了。其中uvm-1.1是编译选项,告诉vcs按照uvm1.1来进行编译仿真。


本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!