system verilog
tfzc_simon
2021--
展开
-
Coverage -- 收集或者不收集特定信号的toggle
在这个例子中,所有模块dev的实例都被排除在各种覆盖范围之外,只有一个例外。其中,在top.dev1的实例中,信号w2被排除在切换覆盖率之外。“-node” 和 “+node” 条目适用于 Verilog 和 VHDL 中的信号、网络和变量。要在 -cm_hier 文件中包含一个信号,请输入 +node 条目,然后跟上信号的层次名称。要排除一个信号,在 -cm_hier 文件中输入 -node 条目,然后跟上信号的层次名称。你可以指定一个结构体或联合体的实例,但不能直接指定结构体或联合体中的成员。原创 2024-07-04 10:36:52 · 278 阅读 · 0 评论 -
verdi中如何查看force信号信息
要想要verdi中,查看force信号,就需要vcs在仿真时候,生成fsdb波形时,加入force信号的波形信息。此时,我们可以使用fsdbreport命令,从波形里面,把所有的信号force的信息,全部给抓出来,保存在一个文件中,这样,我们通过该文件,就可以知道仿真过程中的所有信号force信息。在一个环境中,可能force的信号比较多,通过上面的波形方式,去把每一个信号给拉出来,判断信号是否有force,效率就会比较低了。用紫色虚线标识的波形,就表示这一段时间内,信号是被force驱动的。原创 2024-05-31 10:32:53 · 710 阅读 · 0 评论 -
UVM_EVENT_CALLBACK_FIX使用
原因是在uvm_event_base中定义了uvm_event_callback,而他需要的参数是uvm_object,而这个地方如果强制将参数定义为bit[31:0],由于参数不匹配,会编译错误;通常为了event中能够传输一些信息,我们会首先定义一个uvm_object, 然后在object里面定义需要传输的数据的类型;但是现在,整个event只需要传递bit[31:0]类型的数据,又不想这么麻烦,还要定义object,然后就想到强制数据类型;具体见上一篇,这样才能编译过,并且实现功能;原创 2024-05-28 11:00:01 · 158 阅读 · 0 评论 -
uvm通信-uvm_event & uvm_event_pool & uvm_event_callback
转载自https://www.cnblogs.com/csjt/p/15561286.html。原创 2024-05-27 22:27:42 · 81 阅读 · 0 评论 -
uvm_event的使用(soc 中rtl和uvm交互)
在soc tb验证环境中,如果不适用VIP发送激励,一般仿真的结束是由rtl中的直接调用$finish结束,而UVM并不知道仿真是什么时候开始结束了,我们可以将仿真的结束由UVM控制,但仍需要知道结束的标志,所以急需要将仿真结束的标志传给UVM中,这里提供两种方法:uvm_config_db (在finish的地方用set标志做替代,在UVM环境内wait_modified,然后get做标志判段);原创 2024-05-25 13:05:57 · 351 阅读 · 0 评论 -
uvm 寄存器模型内建sequence
通过在其中的每个寄存器上执行 <uvm_reg_single_access_seq> 序列,来验证一个块内所有寄存器的可访问性。类似于uvm_reg_single_access_seq,用来检查硬件存储地址映射的有效性,前提需要存储模型的hdl路径已经指定。验证单个寄存器的实现,方法是尝试通过寄存器映射的每一个地址映射,向寄存器的每个位写入1和0,确保最终的值与镜像值匹配。对包含的所有的uvm_mem执行uvm_mem_single_access_seq。包含未知访问策略字段的寄存器无法进行测试。原创 2024-05-22 14:42:09 · 1439 阅读 · 0 评论 -
systemverilog约束----randc/rand
rand:rand修饰的变量,每次随机时都会在取值范围内随取一个值,每次随机的概率都是一样的;a_rand的取值范围是0-255,并且每次randomize时,每个被取到的值得概率都是1/256。就像每次掷骰子一样,每次的概率都是1/6;原创 2024-05-21 19:11:45 · 348 阅读 · 1 评论