我是靠谱客的博主 甜蜜毛巾,最近开发中收集的这篇文章主要介绍UVM+verdi的一些小问题,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

1、uvm_top.print_topology()函数
在test_base class的end_of_elaboration_phase中利用uvm_top.print_topology()函数打印uvm拓扑结构。
其中uvm_verbosity表明uvm打印冗余度。

2、波形文件
uvm work中生成的波形文件module_name.fsdb和利用脚本更换名字和路径后的波形文件$ {TESTCASE}_ $SEED.fsdb并不相同,前者未dump完成。
top顶层中:
initial
begin
$fsdbAutoSwitchDumpfile(1000,“module_name.fsdb”,20);
$fsdbDumpvars(0,tb_top);
$fsdbDumpflush;
end
scripts:
$RUN +fsdbfile+…/…/wave/ ${TESTCASE}_* $SEED.fsdb +fsdb+autoflush

3、将duv内部信号拉出来同输入输出比较
在记分板中可以直接将duv内部信号拉出来进行比较,此处必须要核对信号所在的完整层次,tb_top…CLK/VALID/READY/DATA。
此时记分板中的规范写法是,设置多个空的队列存储数据,并将数据的收集与比对进行分开。禁止在一个while (1) begin end内先收集数据再进行比对,防止产生时序问题。

4、打开verdi关联代码问题
直接打开verdi,载入波形后,inport design导入filelist后经常出现关联问题,可以使用脚本来实现打开verdi后自动关联代码。
将编译log文件命名为runverdi.csh,并执行chmod +x将其变为可执行文件。
打开文件,
#!/bin/env csh(设置默认解释器)
bsub -Ip -q “xxx” -P “xxx” verdi (设置队列)
+incdir+…/…/testbench (log文件中保留)
+incdir+…/…/testcase (log文件中保留)
-f …/…/duv/filelist.f(log文件中保留filelist)
…/…/testcase/pipe_test_random_item.sv (log文件中保留用例)
+define+
+define+ (log文件中保留宏定义)
-sv
保存文件,运行脚本即可。

直接命令行关联代码
b verdi +define+xxx +incdir+xxx -f xxx.f -sv -syntaxerrormax 99999 &

5、将激励的产生和发送分开(时序问题)
全部激励产生后,在driver中设置空队列,先将item存储起来。然后控制发送条件,满足条件才将激励发送至duv,从而实现将激励的产生和发送分开。
上述带来为问题是,激励产生完后,会关闭平台,而此时全部数据真正的发送至duv并输出的过程还未实现完。因此,此种操作下需要在激励产生完后设置一段延时,来保证所有数据真正完成处理过程后才关闭平台。

6、interface中实现driver的部分功能
验证模块时,除了在上游输入valid和data激励外,下游同样需要输入ready。UVM中有output item~agent来实现,但对于一些简单处理,可以在output interface中实现。
在interface中可以定义任务和函数,使用initial、always和assign语句。直接在interface中定义ready信号的变化模式及不同模式下对应的具体操作。同时,interface中也可以完成类似8b10b编码等简单操作,此类操作一般与item完全无关的。

7、verilog的 +:用法
[BASE +: WIDTH] 代表[(BASE+WIDTH-1) : BASE],BASE是变量,WIDTH是常量。
例:
[i* P +: P], i=0, P=3时,[i*P +: P]=[2:0]。

8、verdi中查找数值
在bus value中输入数值,选中信号,直接查找。
需要注意的是数值一定要全部数值,不支持搜索部分数值。

t 改变选中信号和波形的颜色。
Ctrl+w 在关联代码中选中信号直接添加到nwave中。

9、system verilog typedef enum
sv中的枚举类型使用频率极高,通常验证中作内置判断类型,设计时作为状态机类型非常常见。

10、verdi界面按钮
D:driver,input,哪些信号驱动了当前信号;
L:load,output,当前信号驱动了哪些信号;
verilog中一般采用assign来驱动信号,同时一般一个信号只有一个驱动,不会多驱动。
Linux命令: uname -i 查看系统内核 一般为x86-64
Calling:跳转到上一级层次范围;
Definition:跳转到下一层次范围;
这两个按钮是针对instance实例才可以,对信号无用。

11、uvm导入pkg
编译时报syntax error, uvm_sequence_item should be a valid type。原因为uvm_pkg未正确导入。
在加载tc前
`include “uvm_macros,svh”
import uvm_pkg:: *;
在脚本中加入
-uvm选项或者设置UVM_HOME指向uvm所在路径

最后

以上就是甜蜜毛巾为你收集整理的UVM+verdi的一些小问题的全部内容,希望文章能够帮你解决UVM+verdi的一些小问题所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(60)

评论列表共有 0 条评论

立即
投稿
返回
顶部