VCS & Verdi 联合仿真,跑通《UVM实战》
毕业后就要入职成为一名ICer (IC验证) 了!最近除了毕业设计也一直在自学 SV
和 UVM验证方法学
,只看资料不写代码体会不深,但又没有公司电脑的环境配置,只能自己搭建环境来跑代码学习,也遇到了一些问题。在这里记录和分享一下我的配置过程,防止大家踩坑。
我不习惯贴图,所有东西基本都通过代码块的方式呈现出来
如果需要虚拟机、Docker或者其他文中提到的东西或遇到问题,可以在评论区提出
EDA虚拟机
自行寻找教程安装虚拟机,安装、激活和配置好VCS、Verdi。
或者可用公众号芯王国
提供的虚拟机。提示:此虚拟机安装了很多EDA工具,磁盘够的话建议安装此虚拟机,这里就不放下载链接了。
此外如果觉得虚拟机运行起来较慢,可以选择安装 Docker
,自行搜索安装。
文件修改
《UVM实战》源代码,可以点击以下链接下载,解压后放在虚拟机中,记住此时的路径,为后续修改 UVM_HOME
做准备
修改setup.vcs
Note:将csh改为bash模式。如果你的虚拟机支持csh,可以把export改成setenv,并去掉“=”。
按照你自己VCS和Verdi的路径,进行
setup.vcs
文件的修改
#!/bin/bash
export VCS_HOME=/home/synopsys/vcs-mx/O-2018.09-SP2
export UVM_HOME=/home/ICer/example_and_uvm_source_code/uvm-1.1d
export WORK_HOME=/home/ICer/example_and_uvm_source_code/puvm
export SIM_TOOL=VCS
export NOVAS_HOME=/home/synopsys/verdi/Verdi_O-2018.09-SP2
export PATH=/home/synopsys/vcs-mx/O-2018.09-SP2/linux64/bin:$PATH
修改run(可选)
Note:我一般用在终端中输入
VCS 仿真编译
的代码,所以根据自己需求选择是否更改
#!/bin/csh
if ( $SIM_TOOL == "QUESTA" ) then
vlib work
vlog -f filelist.f
vsim -sv_lib $UVM_DPI_DIR/uvm_dpi -do $WORK_HOME/bin/vsim.do -c top_tb
endif
if ( $SIM_TOOL == "VCS" ) then
vcs +v2k -sverilog -full64 -debug_pp -R -LDFLAGS -rdynamic -P ${NOVAS_HOME}/share/PLI/VCS/LINUX64/novas.tab ${NOVAS_HOME}/share/PLI/VCS/LINUX64/pli.a $UVM_HOME/src/dpi/uvm_dpi.cc -CFLAGS -DVCS -timescale=1ns/1ps -f filelist.f -I test.log
./simv
endif
if ( $SIM_TOOL == "NCSIM" ) then
ncverilog +sv -f filelist.f -licqueue -timescale 1ns/1ps -uvm -uvmhome $UVM_HOME
endif
修改top_tb.sv
首先在top_tb.sv中,将‘timescale 1ns/1ps注释掉,添加‘include “dut.sv”,并将dut.sv文件复制到top_tb.sv的文件夹中。例如:
//`timescale 1ns/1ps
`include "uvm_macros.svh"
import uvm_pkg::*;
`include "my_driver.sv"
`include "dut.sv"
module top_tb;
...
在top_tb.sv中
endmodule
前添加以下代码,以dump
波形。不加没有办法dump
波形并进行debug
initial begin
$fsdbDumpfile("tb.fsdb");
$fsdbDumpvars;
end
联合仿真
VCS 仿真编译
vcs -R -full64 +v2k -fsdb +define+FSDB -sverilog -ntb_opts uvm top_tb.sv -debug_all -elab -lca -kdb
VCS 查看波形
./simv -gui &
Verdi 查看波形
# fsdb文件名和top_tb.sv中设置的保持相同
verdi -ssf tb.fsdb &
选中信号,键盘 ctrl+w
出现波形
信号区 f
键,出现全局信号视图