功能覆盖率(func_cov)小记

一. 功能覆盖组的定义

  1. 用法一:

        功能覆盖组可以定义在class(实例化名为aa)内部,在class new函数中实例化,然后在该class的shutdown phase中用sample()进行采样,也可在别的组件类中通过aa.func_cg.sample()进行采样

     2. 用法二:

        功能覆盖组可以定义在interface中,收集此interface上信号的变化,例如:

        covergroup aa_inf_cg @(posedge clk);

                ADDR:coverpoint addr[1:0] iff(wen == 1){

                        bins min_addr[]   = {[0:3]};

                }

        endgroup

        上述写法表示在每个时钟上升沿进行采样,也可以@一些别的信号,在此信号变化时进行采样

二. 常见仓的建立

        建立一个仓:

        bins bin_name = bin_value;

        建立多个仓:

        bins bin_name[] = {value1,value2,[value4:valuen]};

        建立多个仓,并把value均分:

        bins bin_name[10] = {[0:99]};//建立10个仓,将0~99均分到10个仓

        建立非法仓:

        illegal_bins illegal_name = illegal_value;

        建立cross:

        cross_name:cross CFG1,CFG2,CFG3;

        建立非法cross的仓:

        CROSS_CFG: cross CFG1,CFG2,CFG3{

                illegal_bins illegal_name1 = CROSS_CFG with (CFG1*CFG2<CFG3);

                illegal_bins illegal_name2 = CROSS_CFG with (CFG1*CFG2>10);

                illegal_bins illegal_name3 = binsof(CFG1) intersect{1} && binsof(CFG2) intersect{2};

        }

        建立变量跳变的仓(一般用于接口信号的跳变):

        ADDR: coverpoint address[1:0] iff(wen==1){

                bins bins_name = (0 => 1);

                bins bins_name = (0 => 2);

                bins bins_name = (0 => 3);

        }

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值