当前位置: 首页 > news >正文

sv 功能覆盖率

covergroup定义在类外面:

covergroup cmd_fcov with function sample(svt_axi_transaction tr); coverpoint tr.addr; coverpoint tr.id; coverpoint tr.data.size; endgroup class xx_refm extends uvm_refm; cmd_fcov A_cov; function new(string name = "psub_sdma_scb", uvm_component parent); A_cov = new(); endfunction //在具体的位置调用:A_cov.sample(axi_tr); endclass

一下常用表达:表达很大位宽的最大值


功能覆盖率的cross采样:

功能覆盖率基于采样事件采样到当前时刻的值进行cross,不会在不同时间片段之间进行cross,已验证;


接口覆盖率:

方法一:

  1. 定义一个module接口和DUT保持一致,接口方向定义为input。
  2. 在这个module里面定义covergroup去采样相关接口信号。
  3. 在module里面的initial块里面去实例化covergroup。
  4. 在top_connect顶层去把fcov_if_module bind到DUT上。
  5. 采用:bind DUT_inst1 fcov_if_module fcov_if_module_inst1(.*)

这个方法的好处是在ST重用场景如果BT有多个时,会比较友好,可以去bind到不同实例上。

方法二:直接定义在外面一个文件,include到顶层连接文件。就是比较简单快捷。如果ST重用有多个对应DUT可以考虑通过实例化多份,采样对应的实例信号。


常用的方法:

在SystemVerilog中,`binsof`和`intersect`是用于处理位向量和集合的内建函数。

- `binsof`函数用于从一个位向量中提取1的位置,并将结果返回为一个集合。它的语法如下: ```systemverilog function integer binsof(input logic [N-1:0] vector); ``` 其中,`vector`是一个位向量,`N`代表位向量的宽度。`binsof`会遍历`vector`的每一位,并将值为1的索引添加到返回的集合中。例如,对于位向量`8'b11010011`,`binsof`会返回`{0, 3, 4, 6, 7}`。

- `intersect`函数用于计算两个集合的交集,并将结果返回为一个集合。它的语法如下: ```systemverilog function static integer intersect(input integer A[$], input integer B[$]); ``` 其中,`A`和`B`是两个集合。`intersect`会返回`A`和`B`的交集。例如,对于集合`{1, 2, 3, 4}`和`{3, 4, 5}`,`intersect`会返回`{3, 4}`。

在 SystemVerilog 中,`binsof` 和 `intersect` 是在功能覆盖率收集上使用的两个关键字。

`binsof` 用于在 `covergroup` 或 `coverpoint` 中获取已定义的覆盖率桶(coverage bin)的集合。通过使用 `binsof`,可以访问和操作覆盖率桶中的信息。

以下是 `binsof` 的示例用法: ```systemverilog

covergroup my_coverage;

coverpoint my_signal {

bins data = {0, 1, [2:5], 8};

bins edge = {posedge, negedge}; }

endgroup

function void my_function();

int my_bins[$];

my_bins = my_coverage.my_signal.binsof(data);

foreach (my_bins[i]) $display("Data bin: %0d", my_bins[i]);

// 获取与两个覆盖率桶相交的交集

my_bins =intersect(my_coverage.my_signal.binsof(data), my_coverage.my_signal.binsof(edge)); foreach (my_bins[i]) $display("Intersection bin: %0d", my_bins[i]);

endfunction

``` 在上述示例中,`my_coverage` 是一个 `covergroup`,其中包含了一个 `coverpoint` `my_signal`,它定义了两个覆盖率桶 `data` 和 `edge`。通过使用 `binsof`,可以获取名为 `data` 的覆盖率桶,并在 `my_function` 中进行操作和输出。 `intersect` 是一个函数,用于获取两个集合的交集。在上述示例中,`intersect` 函数用于获取 `data` 和 `edge` 这两个覆盖率桶集合的交集,并在 `my_function` 中进行操作和输出。 这些关键字和功能可以帮助开发人员在进行功能覆盖率分析时收集和处理相关数据。


cross:

对两个coverpoint进行cross时,这两个cp必须在同一个采样事件时,才会进行cross。否则会出现,两个cp都有覆盖率,但是没有cross的情况

http://www.jsqmd.com/news/1288486/

相关文章:

  • 大模型时代来临!小白程序员如何免费收藏高薪技能,抢占职业先机?
  • 2026星级酒店 / 商务礼品陶瓷定制攻略:景德镇正宗工艺甄选技巧 - 中国品牌价值观察网
  • Arduino十年本土化:从开源硬件到中国创客生态的技术民主化之路
  • cocos creator 笔记-插屏设置、应用图标、构建发布
  • 深耕针织面料领域,解锁义乌本土优质供货合作资源-明记布业 - 一知资讯
  • AI生成剧情总像流水账?揭秘LLM+强化学习双引擎驱动的3层叙事架构(附Unity集成实测代码)
  • 多模态审核漏检率高达22.6%,如何用可解释性AI重建信任链,一文讲透
  • 北京创客嘉年华:与DFRobot深度面基,解锁开源硬件实战新体验
  • 2. MarkText可代替Typora的markdown 编辑器
  • Nginx map指令详解:六大实战场景与性能优化指南
  • C++ 64位迁移中long类型陷阱:从内存崩溃到解决方案
  • 还在为下载B站视频发愁?这款神器让你5分钟搞定所有下载需求!
  • 2026年沈阳液压货梯厂家挑选攻略 浩喆源液压等企业实测梳理 - 比奇堡111
  • 信创不只是“换成国产软件”:从基础软硬件迁移到Gitee研发工具链的系统工程
  • 靠谱自动卷线器厂家推荐:4大核心指标对比及选择攻略 - 速递信息
  • 7种字重完全掌握:Source Han Serif CN开源中文字体终极配置指南
  • 绞杀 AI 搜索投毒:基于多智能体编排,重塑复杂 Agent 的反 GEO 架构(2)
  • 2026 年武汉智工职业技术学校机电一体化(升学方向)招生简章 - 武汉中职最新信息发布
  • FlicFlac:如何在5分钟内免费掌握Windows终极音频格式转换
  • 收藏!AI自动设计Harness,小白也能轻松掌握大模型调参秘籍
  • 网络广告销售公司核心能力构建与行业服务价值深度解析——以丽鸿科技实践案例为参考
  • NCM解密终极指南:5分钟快速破解网易云音乐加密格式,实现音乐自由
  • EasyAIS+国标GB28181视频监控平台EasyCVR强强联动,全域视频AI识别能力落地!
  • 收藏!小白程序员必看:从零入门企业级大模型Agent设计实战
  • 当用户决策链路变了,丹东企业该怎么办?
  • 大语言模型指令混合微调技术实践与优化
  • 自研、采购还是开源?Apache SeaTunnel 如何降低企业数据集成的真实成本
  • 启动VUE项目环境搭建
  • 12.mysql 基础之视图
  • 2026年太阳能路灯源头厂家最新推荐:品牌综合实力解析,代表性优质品牌梳理 - 汇聚至此