Win10+Questasim UVM验证环境Running

很多朋友已经习惯了在工作站跑VCS+UVM验证;
本文简单地介绍如何在个人PC(OS:Win10)上利用Questasim/Modelsim运行UVM环境;并且尽可能的与工作站使用UVM一致。

1. 工具准备

  • 安装Questasim/Modelsim.
    • 本文使用的版本为QuestaSim-64 10.4e;
    • 这个版本的UVM不需要gcc编译等一堆操作,直接使用很方便;
  • 下载FPGA eda编译库
    • 本文附带介绍如何联合编译Altera家的FPGA IP

2. 工作目录准备

目录准备

在work_space下建立3个文件夹:

folder名称 存放内容
IP_LIB 存放FPGA产生的IP,如RAM,ROM,FIFO,CLKCTRL等;
RTL 存放设计人员开发的verilog代码[1]
verification 存放验证环境[2]

IP_LIBRTL内直接存放着verilog文件:

PS F:\work_space\IP_LIB> ls
    目录: F:\work_space\IP_LIB
Mode                LastWriteTime         Length Name
----                -------------         ------ ----
-a----        2018/12/1     21:23           5284 alt_clkctrl.v
-a----         2019/1/6     18:16            195 alt_rom.qip
-a----        2019/1/13     11:08           6520 alt_rom.v
-a----        2019/1/13     18:10          17421 fontlib.hex
-a----        2019/1/12     20:02           1429 fontlib.mif
-a----        2018/12/1     18:29           9591 video_tram.v

PS F:\work_space\RTL> ls
    目录: F:\work_space\RTL
Mode                LastWriteTime         Length Name
----                -------------         ------ ----
-a----        2019/3/19     21:03          35514 video_fpga.v

verification内的组织很简单:

PS F:\work_space\verification> ls
    目录: F:\work_space\verification
Mode                LastWriteTime         Length Name
----                -------------         ------ ----
d-----        2019/7/31     19:27                sim
d-----        2019/7/31     19:21                tb

PS F:\work_space\verification\tb> ls
    目录: F:\work_space\verification\tb
Mode                LastWriteTime         Length Name
----                -------------         ------ ----
d-----        2019/7/31     19:21                ad_agent
d-----        2019/7/31     19:21                avl_agent
d-----        2019/7/31     19:21                avm_agent
d-----        2019/7/31     19:21                dt_agent
d-----        2019/7/31     19:21                env
d-----        2019/7/31     19:21                hdl                  
d-----        2019/7/31     19:21                testcase
PS F:\work_space\verification\sim> ls
    目录: F:\work_space\verification\sim
Mode                LastWriteTime         Length Name
----                -------------         ------ ----
-a----        2018/12/8     10:34           1999 add_signal.do
-a----        2018/12/5     23:43            135 clear.bat
-a----        2019/7/31     19:25            222 dut.f
-a----        2019/7/31     18:55            152 filelist.f
-a----        2018/12/4     20:57             17 run.bat
-a----        2019/7/31     18:59           1095 run.do
-a----        2018/12/5     18:47             19 wave_open.bat

tb路径存放着验证环境和testcase,这些和在工作站操作时建立的路径一样:

  • 各种agent存放在xxx_agent路径下;
  • env中可以存放scb文件;
  • testcase存各个testcase文件;

sim路径下是我们主要介绍的内容,所有的准备工作都围绕着run.do这个file展开,请看下一章节重点介绍:

3. 运行UVM

3.1跑一个case

在sim路径下新建run.do这个文件,其内容如下:

#testcase name
set TEST "my_case"

#name related to the the dut
set TOP "top_tb"
set DUT_LIST "dut.f"
set FILE_LIST "filelist.f"


set WAVE_TOP "sim:/top_tb/inst_video_fpga/*"
set WORK_AERA "F:/work_space/verification/sim"

#PLI for dump fsdb
set PLI ""

#the uvm 
set  UVM_DPI_HOME  D:/questasim64_10.4e/uvm-1.1d/win64

quit -sim  
cd ${WORK_AERA}
  
if [file exists work] {  
  vdel -all  
}  
vlib work  
vlog  -L mtiAvm -L mtiOvm -L mtiUvm -L mtiUPF -f ${DUT_LIST} -f ${FILE_LIST}
vsim -c -novopt +notimingchecks -t 1ps ${TOP} +UVM_TESTNAME=${TEST} +UVM_VERBOSITY=UVM_FULL -voptargs=+acc \
-solvefaildebug -uvmcontrol=all -classdebug -l sim.log -pli ${PLI} \
-sv_lib ${UVM_DPI_HOME}/uvm_dpi 
add log  -r /*
add wave ${WAVE_TOP}
run -all

新建run.bat文件,内容如下:

vsim -do run.do

双击"run.bat"文件,将完成vlog、vsim命令,同时生成默认的wave文件:

运行效果图

3.2 run.do浅析

请回看3.1章代码:

  • "TEST"为testcase名字
  • "TOP"为testbench top层名称(/tb/hdl顶层名称)
  • "dut.f"为RTL路径和IP_LIB路径所有RTL代码(前两行为调用FPGA库):
D:/intelFPGA/eda/sim_lib/altera_mf.v
D:/intelFPGA/eda/sim_lib/cycloneive_atoms.v

F:/work_space/IP_LIB/alt_clkctrl.v
F:/work_space/IP_LIB/video_tram.v
F:/work_space/IP_LIB/alt_rom.v

F:/work_space/RTL/video_fpga.v
  • "filelist.f"为TB文件列表:
    • 这里将top_tb之外的文件封装在一个package中,如下:
F:/work_space/verification/tb/hdl/file_package.sv
F:/work_space/verification/tb/hdl/top_tb.sv
  • "PLI"如要dump fsdb则需要指定对应PLI位置,这里不需要,设置为空;
  • "UVM_DPI_HOME"将questasim中对应uvm路径指定就可以(这里选择使用UVM-1.1d);
  • "WAVE_TOP"可以指定dump的信号范围;

3.3 其他

当我们quit当前simulation时,波形默认保存为vsim.wlf文件;
我们可以用一个命令文件随时打开查看波形,新建wave_open.bat,其内容如下:

vsim -view vsim.wlf

双击运行wave_open.bat,结果如下:


打开保存波形

如果想要load信号,新建add_signal.do文件,其内容如下:

add wave -position insertpoint  \
vsim:/top_tb/inst_video_fpga/clk_27m_i    \
vsim:/top_tb/inst_video_fpga/rstn_27m_i   \
vsim:/top_tb/inst_video_fpga/ad_vsync_ff1 \
vsim:/top_tb/inst_video_fpga/ad_fid_ff1   \
vsim:/top_tb/inst_video_fpga/ad_hsync_ff1 \
vsim:/top_tb/inst_video_fpga/ad_yout_ff1  \
vsim:/top_tb/inst_video_fpga/eav_tag \
vsim:/top_tb/inst_video_fpga/sav_tag \
vsim:/top_tb/inst_video_fpga/row_cnt 

通过"File"-->"Load",选择"add_signal.do"将被选信号加载到波形中观察;

新建"clear.bat"文件,双击清除一次运行结果:

@echo off
echo 开始清理......
del transcript
del *.log
del *.wlf
del *.xml
rd  /s /Q work
echo 清理完成......
@echo on
pause

  1. 本文只支持verilog做为RTL开发语言,不支持VHDL;

  2. 本文只支持systemverlog做为验证开发语言;

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,657评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,662评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 158,143评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,732评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,837评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,036评论 1 291
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,126评论 3 410
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,868评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,315评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,641评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,773评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,470评论 4 333
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,126评论 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,859评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,095评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,584评论 2 362
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,676评论 2 351