绿皮书--覆盖率

1.覆盖率收集的分类
    1.代码覆盖率:由仿真器收集
    2.功能覆盖率
    3.断言覆盖率

2.功能覆盖率收集策略
    1.收集信息而非数据
    2.只测量你会使用的数据
    3.测量的完备性

3.功能覆盖率的简单例子
    1.在类中定义覆盖组
    2.覆盖组的触发
    3.覆盖组的采样

4.数据组采样
    1.个体仓库和总体覆盖率
    2.自动建仓
    3.限制建仓的数目:auto_bin_max
        covergroup CovPort;
            coverpoint tr.port {
                    option.auto_bin_max=2;
            }
        endcovergroup
        //上面的只针对tr.port的数目起作用,下面的对于port和data都有作用
        covergroup CovPort;
            option.auto_bin_max=2;
            coverpoint tr.port;
            coverpoint tr.data;
        endcovergroup
        
    4.使用用户自定义的仓库来发现漏洞
        covergroup CovPort;
            len:coverpoint(tr.hdr_len+tr.playload+5'h0)
            {
                bins len[]={[0:125]};
            }
        endcovgroup
        
    5.命名覆盖率的仓
        1.对data[0:16]进行收集
        covergroup CovPort;
            coverpoint tr.data {
                bins lo = {[0]};
                bins mid = {[4:1]};
                bins max[] = {[9:5]};
                bins misc = default;
            }
        endcovergroup
        
        2.使用通配符
        covergroup CovPort;
            coverpoint tr.data {
                bins lo = {[2:$]};
                bins mid = {[3]};
                bins max = {[$:4]};
            }
        endcovport
        
        3.为枚举创建
        typedef enum{RED,BLUE,GREEN} color_e
        
        color_e pcolor;
        covergroup CovPort;
            coverpoint pcolor;
        endcovergroup
        
        4.状态翻转率
        covergroup CovPort;
            coverpoint t1 = {0=>1; 0=>2; 0=>3};
        endcovport
        
        5.在状态和翻转中使用通配符
        covergroup CovPort;
            coverpoint tr.data {
                wildcard bins lo = {3'b??0};
                wildcard bins mid = {3'11?};
            }
        endcovport
        
        6.忽略数值
        covergroup CovPort;
            coverpoint tr.data_0_3 {
                ignore_bins lo = {[0]};
                ignore_bins mid = {[3]};
            }
        endcovport
        
        covergroup CovPort;
            coverpoint tr.data_0_3 {
                option.aotu_bin_max = 4;
                ignore_bins mid = {[6,7]};
            }
        endcovport
        7.不合法的仓
        covergroup CovPort;
            coverpoint tr.data_0_3 {
                illegal_bins lo = {[0]};
                illegal_bins mid = {[3]};
            }
        endcovport
        8.状态机覆盖率
        
    6.交叉覆盖率
        1.基本的交叉覆盖率
        class transaction;
            rand bit[3:0] kind;
            rand bit[4:0] port;
        endclass
        
        covergroup CovPort;
            kind: coverpoint tr.kind;
            port: coverpoint tr.port;
            
            cross kind,port;
        endcovergroup
        2.对于交叉覆盖仓进行标号
        covergroup CovPort;
            kind: coverpoint tr.kind {
                bins lo[] = {[0:3]};
            }
            port: coverpoint tr.port;
                bins lo  = {[2:4]};
                bins mid = {[0:1]};
            cross kind,port;
        endcovergroup
        3.排除部分的交叉覆盖仓
        covergroup CovPort;
            kind: coverpoint tr.kind {
                bins lo[] = {[0:3]};
            }
            port: coverpoint tr.port;
                bins lo  = {[2:4]};
                bins mid = {[0:1]};
            cross kind,port {
                ignore_bins lo = binsof(kind)intersect{2};
                ignore_bins mid = binsof(kind)intersect{2} && binsof(port)intersect{[1:2]};
                ignore_bins hi = binsof(kind.lo[2]);
            }
        endcovergroup
        4.从整体排除部分的覆盖仓
            1.指明交叉覆盖率的权重
            covergroup CovPort;
                kind: coverpoint tr.kind {
                    bins zero = {0};
                    bins lo = {[1:3]};
                    bins hi[] = {[8:$]};
                    bins misc = default;
                    option.weight = 0;
                }
                port: coverpoint tr.port {
                    bins port[] = {[0:$]};
                    option.weight = 0;
                }
                
                cross kind,port {
                    option.weight = 10;
                }
            endcovergroup
        5.精准的交叉覆盖仓
        class transaction;
            rand bit a,b;
        endclass
        
        covergroup CovPort;
            a: coverpoint tr.a {
                bins a0 = {0};
                bins a1 = {1};
                option.weight = 0;
            }
            b: coverpoint tr.b {
                bins b0 = {0};
                bins b1 = {1};
                option.weight = 0;
            }
            
            cross a,b {
                bins a0b0 = binsof(a.a0) && binsof(b.b0);
                bins a0b1 = binsof(a.a0) && binsof(b.b1);
                bins b1 = bins(b.b1);
            }
        endcovergroup
        
    7:通用覆盖着
        1.通过数值传递覆盖组参数
        2.通过引用传递覆盖组参数
        
    8:覆盖率选项
        1.单个实例的覆盖率
            option.per_instance = 1;
            只能用于覆盖组中,不能用于覆盖点和交叉点;
        2.覆盖组的注释
            option.comment = comment;
            
            covergroup CovPort(int lo,hi, string comment);
                option.comment = comment;
                option.per_instance = 1;
                coverpoint port {
                    bins rang = {[lo:hi]};
                }
            endcovergroup
        3.覆盖阈值
        option.at_least
        4.打印空仓
        option.cross_num_print_missing = 1000;
        5.覆盖组目标
        covergroup CovPort;
            coverpoint port;
            option.goal = 90;
        endcovergroup

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
DLMS(Device Language Message Specification)绿皮书是一种用于智能电能表通信协议的国际标准,而Gateway则是指在不同网络、不同协议的系统之间进行数据传输和转换的设备。DLMS绿皮书Gateway协议是将DLMS通信协议通过Gateway进行转换和传输的一种通信方式。 DLMS绿皮书Gateway协议可以应用于智能电能表与上层系统之间的通信,例如能源管理系统或电力公司的数据中心。它允许智能电能表通过不同的网络协议(如TCP/IP、RS-485、RS-232等)与上层系统进行数据交换。 DLMS绿皮书Gateway协议的主要功能包括: 1. 数据格式转换:DLMS绿皮书Gateway协议可以将智能电能表的数据格式转换为上层系统所需的格式,确保数据的正确解析和处理。 2. 数据传输:DLMS绿皮书Gateway协议使用通信协议对数据进行传输,可以基于串口或以太网等不同的物理介质。 3. 安全性保障:DLMS绿皮书Gateway协议支持对数据进行加密和身份验证,确保数据传输的机密性和完整性。 4. 软件接口标准化:DLMS绿皮书Gateway协议定义了与上层系统进行通信所需的软件接口,简化了系统集成和兼容性的问题。 通过DLMS绿皮书Gateway协议,智能电能表可以与不同类型的上层系统进行无缝连接,实现数据的实时监测、远程控制和能源管理等功能。这种协议的应用可以提高电力系统的效率、减少用电成本,并为能源管理提供更多可能性。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值