结构类型的总线的覆盖范围

问题描述 投票:0回答:1

我有以下类型的公共汽车

typedef struct packed { logic vld; logic [ASI_MAX_PCL_CYC_M:0] cyc; } type_t;

以一定宽度说[3:0]

所以type_t [3:0] my_bus_req;

我如何编写一个涵盖点,指出在任何时钟周期,只有一个vld为高即my_bus_req [0] .vld = 1,rest =0。(仅一个请求进入)

如果信号不是结构类型,例如逻辑[3:0] my_req_bus;我们可以简单地完成

coverpoint i iff(my_bus_req [i] .vld == 1 && $ onehot(my_bus_req))

但不确定如何对结构类型的总线执行此操作

code-coverage system-verilog uvm system-verilog-assertions
1个回答
0
投票

由于您将其制作为打包数组,所以没有简单的表达式可以直接使用,而无需创建单独的函数或转换为未打包的数组。

typedef type_t type_unpacked_t[4];
type_unpacked temp;
temp = type_unpacked'(my_bus_req);
...
coverpoint i iff (temp[i].vld == 1 && temp.sum() with (int'(item.vld)) == 1)
© www.soinside.com 2019 - 2024. All rights reserved.