首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何将队列中的值添加到systemverilog函数覆盖--忽略_bins/非法_bins?

如何将队列中的值添加到systemverilog函数覆盖--忽略_bins/非法_bins?
EN

Stack Overflow用户
提问于 2020-05-12 20:26:49
回答 1查看 630关注 0票数 1

我正在编写一个可配置的SystemVerilog功能覆盖点。我有一个枚举response_t如下:

代码语言:javascript
复制
typedef enum bit [1:0] {OK, ERR1, ERR2, ERR3} response_t;

我想将枚举的所有条目添加到各个覆盖点回收箱中,如下所示:

代码语言:javascript
复制
response_t r;

r_cp : coverpoint r {
  bins ok = {OK};
  bins err_1 = {ERR1};
  bins err_2 = {ERR2};
  bins err_3 = {ERR3};
}

上面的覆盖点是通用的。现在,我想让用户可以配置它,这样用户就可以通过将值添加到队列中(如下所示),选择性地添加几个忽略/非法的这些回收箱:

代码语言:javascript
复制
class cfg;
  ...
  response_t ignore_bins_q[$];
  response_t illegal_bins_q[$];
endclass

现在,我试图修改我的覆盖点如下:

代码语言:javascript
复制
r_cp : coverpoint r {
  bins ok = {OK};
  bins err_1 = {ERR1};
  bins err_2 = {ERR2};
  bins err_3 = {ERR3};
  ignore_bins ignore = {cfg.ignore_bins_q};
  illegal_bins illegal = {cfg.illegal_bins_q};
}

我使用的工具是vcs,当我尝试这样做时,我会得到以下错误:

在左值范围中使用的“数组”类型的

表达式是不合法的。

我该如何解决这个问题?

EN

回答 1

Stack Overflow用户

发布于 2020-05-12 23:29:01

去掉{}的

代码语言:javascript
复制
ignore_bins ignore = cfg.ignore_bins_q;
illegal_bins illegal = cfg.illegal_bins_q;

请记住,在构造覆盖组时,需要填充队列。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61761297

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档