2年多没玩UVM验证方法学,设计出身的我如今又要兼起验证大梁(嘿嘿,这算自夸吗),为团队搭建一套基于UVM的验证平台。这难道就是能力越强责任就越大吗?好了,不瞎哔哔了。今天就从启动脚本看起吧......
这种启动脚本包括2部分:编译和运行,使用Makefile的方式实现,具体内容如下:
Makefile中变量定义如下图:
使用VCS编译器编译环境相关文件,包括UVM库文件、env相关文件及dut文件。其中编译UVM库文件又包括使用VCS安装目录下的库文件和用户自定义目录下的UVM库文件。
1)使用VCS安装目录下的库文件
在仿真目录下,执行 make comp ,即可完成编译
上图中各行的含义解释如下:
第26行:vcs表示编译指令,-sverilog表示支持sv语法,v2k表示支持Verilog-2001语法
第27行:指定仿真时间单位和精度
第28行:指定本次编译的UVM库,这里使用的是VCS安装自带库
第29行:在testbench中可以使用fsdb相关的函数
第30行:加载dut文件
第31行:加载test case list文件
第32行:加载env目录
第33行:加载tesetbench文件
第34行:有文件改变时才编译,目的就是节省编译时间
第35行:指定编译信息到comp.log
第36行:表示打开debug开关
第37行:表示dump vcd 波形文件
第38行:定义一些宏
2)使用用户自定义UVM库文件
在仿真目录下,执行 make comp_uvm ,即可完成编译
如果用户不想使用VCS自带UVM库文件时,可以使用如上图命令。这里仅说明和 1)中不一样的地方。
第43行:编译uvm_dpi.cc文件,这里必须添加第46行的目录,因为需要使用该目下的文件
第44行:编译UVM库文件,该文件里include 了一些库文件,并且是相对路径,所以需要添加45行目录
在仿真目录下,执行 make sim ,即可完成仿真
运行命令含义如下:
第59行:调用simv二进制文件执行仿真
第61行:表示向仿真器中传入随机化种子
第62行:表示vcs在处理随机化数据产生时使用的随机化模式
第63行:指定test case的名字
第64行:过滤一些UVM的打印信息
第65行:指定仿真信息文件
留言与评论(共有 0 条评论) “” |