电力电子转战数字IC20220820day65——uvm实战1B

实验目标

加入文件到仿真后编译并运行。

储存数据 log -r /*

运行仿真 run -all

验证环境结构 

 

 和实战1A中的图是对应的。

 tb下只有一个接口,接口包含了时钟块和覆盖组。

仿真结果

写操作。默认的idle_cycle是1,这是在item也就是apb_transfer时进行的soft约束了

class apb_transfer extends uvm_sequence_item;
  // USER: Add transaction fields

  rand bit [31:0]      addr;
  rand bit [31:0]      data;
  rand apb_trans_kind  trans_kind; 
  rand int idle_cycles;

  constraint cstr{
    soft idle_cycles == 1;
  };

 读操作。有很多数据是0,因为随机读取的地址之前没有被写入数据,所以读出来是0

 先写后读

 功能覆盖率

view——coverage——covergroup

点开后可以看到,从覆盖组到覆盖点到bin的具体的覆盖率数据

 如何运行两个test并且收集合并的覆盖率?

具体见SV实验5。

这里用命令+TESTNAME 也不行,改了tb中的runtest也不行,只能改变tb后重新开始仿真,应该是+TESTNAME命令有问题,等找一下之前做的实验,记得是有成功过的。

单独的apb_burst_transaction_test覆盖率如下:

 使用到的命令如下:

vsim -i -classdebug -solvefaildebug -coverage -coverstore C:/coverage -testname apb_burst_transaction_test -sv_seed random +TESTNAME=apb_burst_transaction_test -l apb_burst_transaction_test.log work.apb_tb

quit -sim

vsim -i -classdebug -solvefaildebug -coverage -coverstore C:/coverage -testname apb_single_transaction_test -sv_seed random +TESTNAME=apb_single_transaction_test -l apb_single_transaction_test.log work.apb_tb

qiut -sim

 vcover merge -out merged-coverage.ucdb C:/coverage

各个命令的作用如下:

-classdebug 提供更多的SV类调试功能

-solvefaildebug 在SV随机化失败后有更多信息提供出来

-sv_seed 0 给出固定的种子0,random就任意给

+TESTNAME=apb_single_transaction_test 指定仿真进行的test

-l apb_single_transaction_test.log 将仿真的记录保存在这个文件名中

vcover merge -out merged-coverage.ucdb C:/coverage 将合并后的覆盖率报告生成在merged-coverage.ucdb文件中(这个文件的位置是工程路径!) C表示用来合并的覆盖率路径

储存数据 log -r /*

运行仿真直到结束 run -all

最终的覆盖率merged-coverage.ucdb中

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值