SV:覆盖组及覆盖率数据采样方法

1. covergroup

        覆盖组(covergroup)与类相似,一次定义后可多次实例化。covergroup可以包含一个或者多个coverpoint,且全都在同一时间采集。

        covergroup可以定义在类中,也可以定义在interface或者module中;covergroup可以采样任何可见的变量,例如程序变量、接口信号或者设计端口。

        一个类里可以包含多个covergroup,当拥有多个独立的covergroup时,每个covergroup可以根据需要自行使能或者禁止,每个covergroup可以定义单独的触发采样事件,允许从多个源头收集数据,covergroup必须被例化才可以用来收集数据。

2. 采样方法

2.1 sample()函数

        在program中采样:

class Transaction;//创建事务
    rand bit[31:0] data;
    rand bit[2:0] port;
endclass
 
program automatic test(busifc.TB ifc);
    coverage CovPort;//①创建覆盖组
        coverpoint ifc.port;//采样接口port信号
    endgroup
 
    initial begin
        Transactiob tr;
        CovPort ck;//②为覆盖组声明句柄
        ck=new;//并实例化
        tr=new;
        
        repeat(32) begin
            assert(tr.randomize);
            ifc.port<=tr.port;
 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值