欢迎光临散文网 会员登陆 & 注册

UVM with Modelsim WORK FLOW basic

2023-05-30 14:32 作者:谫劣求知  | 我要投稿

目标:对UVM实战一书中2.5.2用例进行基本的命令行流程操作跑通。

代码文件自张强书的example_and_uvm_source_code\puvm\puvm\src\ch2\section2.5\2.5.2


在用的时候,记得将dut.sv和其他组件代码放在同一个文件夹下,modelsim工程最好也建在这个文件夹下”(modelsim建立工程时的work文件夹与上述代码组件保持一致)


工程创建

注意,张强书中代码并无dut.sv文件,可根据书本手动输入,也可复制以下:


使用命令行形式在工程中完成UVM库下的仿真:

第一句:将库文件编译到work目录中

vlib work

此指令执行时是在Library区域中创建一个工程目录,一般默认有work,故输入vlib work时可能会有:

若设置自定义名称的工程目录,例如work_test,则会有:

1

且Library中出现相应:

第二句:设置环境变量

UVM目录,这个目录是modelsim安装的文件目录,比如你的modelsim安装在D:/modeltech64,这个就是:

set UVM_HOME D:/modeltech64/verilog_src/uvm-1.1d

此处我的安装包下是:D:\modeltech64_2019.2\verilog_src\uvm-1.1d

故指令:set UVM_HOME D:/modeltech64_2019.2/verilog_src/uvm-1.1d

注意反斜线改变了!

输入及结果示例


第三句:设置工作目录,指的是工程文件的目录

就是你的dut.sv和top_tb.sv放在哪里了。

set WORK_HOME E:/KTRTL\/VM_LEARN2

输入指令

注意,有的modelsim可能有如下截图问题!

无法读取指令

此时按上图所示将反斜线去掉,以“:”作为分割即可!

工程根目录截图示意

注意可看到在vlib句中,本工程所在目录下同样创建了work_test。


第四句:启动编译

vlog +incdir+$UVM_HOME/src 

 -L mtiAvm -L mtiOvm -L mtiUvm -L mtiUPF

$UVM_HOME/src/uvm_pkg.sv  $WORK_HOME/dut.sv top_tb.sv

注意以上三行指令是一行,空格隔开

如:

“如果前面两句都对了,这个肯定也是可以的,如果这里提示file can not ……in read mode

那么一般是文件路径错了,再细心检查一下。”


第四句:启动仿真

vsim -novopt  -c -sv_lib

D:/modeltech64_10.4/uvm-1.1d/win64/uvm_dpi

work.top_tb +UVM_TESTNAME=my_case0

注意以上三行指令是一行,空格隔开

如:

其中注意,-novopt是旧版本modelsim选项,在2019.2(笔者)附近及以后新版中会报错:vlog-12110,删去即可。

继续注意:uvm_dpi处是dpi库,在一般安装目录下

此dll文件即是

将指令的目录地址改成自己的就可以,直到../uvm_dpi.dll,注意把".dll"删去。


摘录注意1:每步指令一行写完,不可换行输入;

摘录注意2:

如果,在你的top_tb.sv中, 写的是

run_test(“my_case0”);

这样的句子,那么最后一句使用

vsim -novopt -c -sv_lib

D:/modeltech64_10.4/uvm-1.1d/win64/uvm_dpi  work.top_tb

这样命令行就可以进入仿真。

但是如果是用

run_test();

这样的句子,需要修改进入仿真的语句。

原语句:

vsim -novopt -c -sv_lib

D:/modeltech64_10.4/uvm-1.1d/win64/uvm_dpi  work.top_tb

改成:

vsim -novopt  -c -sv_lib

D:/modeltech64_10.4/uvm-1.1d/win64/uvm_dpi

work.top_tb +UVM_TESTNAME=my_case0

这里是只有一个case0的情况,如果有另外一个case文件,文件名是my_case1,则将最后的名字改为my_case1即可,张强这里的例子应该是后者。

注:有人说这里run_test();可能是不对的,可以改成run_test(“”);试试,我这里run_test();是可以的。



参考连接:



UVM with Modelsim WORK FLOW basic的评论 (共 条)

分享到微博请遵守国家法律