小白UVM实战学习笔记——环境搭建

本文介绍了如何为初学者搭建UVM环境,包括使用makefile简化编译流程,filelist.f文件管理库路径和源文件,以及在Windows和Ubuntu系统间协同工作的步骤。作者还推荐了张强的《UVM实战》作为参考书籍,并演示了如何使用Verdi查看仿真波形。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

小白UVM实战学习笔记——环境搭建

初学UVM,记录一下,姑且是搭建好了环境。
虚拟机&操作环境参考这篇: IC_EDA_ALL虚拟机
目前只用了vcs,这个虚拟机上的内容比较全,留用。
vscode的配置可以参考: vscode搭建Verilog HDL开发环境
由于不建议虚拟机联网,所以目前没有在虚拟机上装vscode。在win系统上写代码,然后到ubantu上编译…
参考书籍是张强的《UVM实战》,书中源码以及UVM源码在这里拿到的: github

文件准备

除了需要用到的sv代码外,还需要两个比较重要的文件:makefilefilelist.f

1.makefile

这个文件无后缀,和sv代码放一起就行,使你避免冗长复杂的输入,可以直接用封装好的命令。看到网上做UVM的makefile文件大多都比较类似,一般不需要轻易改动。目前没有做更多了解。

makefile:

.PHONY:vcs sim verdi clean

VCS = vcs -f filelist.f \
	-timescale=1ns/1ns \
	-full64 \
	-R \
	-debug_acc+all \
	+define+FSDB \
	-fsdb \
	-lca -kdb \
	-ntb_opts uvm-1.1 \
	-sverilog \
	+v2k

vcs:
	${VCS}

sim:
	./simv -gui

verdi:
	verdi -ssf tb.fsdb &

clean:
	rm -rf csrc verdiLog simv.daidir \
	novas.* \
	vc_hdrs.h \
	simv \
	*.key \
	*.fsdb \
	*.log	\
	inter.vpd	\
	DVEfiles

共提供了4个命令:(在工程目录下通过命令行输入)
make vcs: 使用VCS对代码编译,在没有filelist.f文件时是编译不了的。后面介绍
make sim: 用simv查看仿真波形
make verdi: 用verdi查看仿真波形,注意需要在顶层tb模块中添加语句:

initial begin
	$fsdbDumpfile("tb.fsdb");
	$fsdbDumpvars;
end

才能够运行,否则报错。
make clean: 编译完成后清理掉产生出来的无用文件,让你的文件目录更整洁。

2.filelist.f

上文提到的make vcs指令中,需要读取filelist.f中的文件。里面应包含uvm库的路径,以及项目里的所有.sv文件。该文件和makefile放一起即可。
这里需要提前设置一下UVM_HOME的环境变量。
在/home/ICer下打开命令行,输入

g .bashrc

在打开的bashrc中加一行

export UVM_HOME=/home/ICer/UVM_example/uvm-1.1d

在这里插入图片描述
注意,UVM_HOME的路径应当和你的实际路径一致。我的uvm版本是1.1d,存在了/home/ICer/UVM_example/这个路径下。
这样就将UVM_HOME添加至环境变量中了。
以《UVM实战》书中2.2.1的源码(详见文章开头的源码链接)为例,我的filelist.f如下:

   +incdir+$UVM_HOME/src
   $UVM_HOME/src/uvm_pkg.sv
   /home/ICer/UVM_example/puvm/src/ch2/dut/dut.sv
   top_tb.sv
   # $UVM_HOME即刚刚在环境变量中指定的路径
   # dut.sv是DUT
   # top_tb.sv顶层testbech,由于该文件就在当前目录下,所以没有指定其路径

之后在工程目录里使用make vcs就可以编译了。
在这里插入图片描述
查看波形的话我用的是verdi:
make verdi
在这里插入图片描述
选择要查看的信号——右键——Add to Waveform——New Waveform即可将信号添加至输出波形。在这里插入图片描述

### 在 VSCode 中配置 UVM 开发环境 #### 安装必要的扩展 为了更好地支持 SystemVerilog 和 UVM,在 VSCode 中安装合适的扩展非常重要。推荐安装由 Cadence 提供的 `SVLangServer` 或者其他类似的 SystemVerilog 扩展,这些工具能够提供语法高亮、自动补全等功能。 #### 设置工作区文件夹结构 创建合理的工作区文件夹对于管理项目至关重要。通常情况下,建议按照如下方式组织目录: ```plaintext project_root/ ├── sim/ # 存放编译后的二进制和其他模拟产生的临时文件 ├── src/ # 源码位置,包括设计和测试平台代码 │ ├── design # 设计源文件 │ └── tb # 测试平台(UVM)源文件 └── tcl/ # Tcl脚本用于控制仿真过程 ``` #### 编写启动脚本 编写一个简单的TCL脚本来设置仿真的初始状态并运行测试案例。此脚本应该加载所有的库路径以及指定要使用的顶层模块名称等参数[^2]。 #### 配置任务执行命令 通过 `.vscode/tasks.json` 文件定义自定义的任务来简化日常操作流程,比如编译或者调试。下面是一个基本的例子: ```json { "version": "2.0.0", "tasks": [ { "label": "Compile Simulation Libraries", "type": "shell", "command": "<path_to_compile_script>", "group": { "kind": "build", "isDefault": true }, "problemMatcher": [] } ] } ``` #### 解决可能遇到的问题 由于 Vivado 本身已经提供了对 UVM 的良好支持,所以在使用 VSCode 进行开发时可能会看到一些关于 UVM 关键字或宏定义方面的警告信息;不过这不影响实际的功能实现,可以放心忽略掉这类提示[^1]。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值