验证中错误积累

1、将一个512bit的数据变量赋值给一个64个元素,每个元素8位宽的动态数组

bit [511:0] pte_data
logic [7:0] dta[];
dta= new[64];
for(int i=0 ;i<64;i++)begin
      dta[i] = pte_data[8*i+7:8*i];//语法错误报不正确切分赋值
end

应该修改为 dta[i] = pte_data[8*i +:8];data[8*i +: 8] 是一种 Verilog SystemVerilog 中的部分赋值语法,它表示从数据变量 data 的第 8*i 位开始,取连续的 8 位数据。其中,冒号 ":" 左边的表达式为起始位,右边的表达式为数据位数。

2、验证环境中写入包内的class,在其他地方使用时需要先import该包才能,而非只是添加到filelist中就行

3、2'h0和2‘b0是相等的:{34'h80_0260,2'h0}不等于36'h8002_6000 ! 

4、验证环境搭建过程中若在main_phase/run_phase中使用了foever_begin之类语句,当某些条件未能满足时,在仿真0时刻一直陷入无限循环会造成,即使未举手出现挂死现象。即使不举手必须时仿真不为0时候,即仿真开始运作之后才能退出,在0时刻陷入死循环则不可退出。

5、在env模块build_phase中添加set_report_max_quit_count(100)函数可以设置出现

6、在UVM—TOP环境中对某一个逻辑取反不能在直接

initial_begin

                   Forever begin

                        Reset_n = !reset

                   End

               End

可以声明wire变量然后直接通过assign语句进行连接;

该语句会导致环境陷入死循环,其原因为中间没有添加延时,导致0时刻无限死循环,同理在UVM环境中任何一个模块包含参考模型其无限循环语句forever或者while(1)内需要延时语句,例如wait、get等否则会导致0时刻无限死循环;

7、$urandom_range(0,satp_q.size)有可能会取satp.size的最大值(例如5),因为satp队列是从0开始因此5为为空,更改为$urandom_range(0,satp_q.size-1)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值