我有以下类型的公共汽车
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))
但不确定如何对结构类型的总线执行此操作
由于您将其制作为打包数组,所以没有简单的表达式可以直接使用,而无需创建单独的函数或转换为未打包的数组。
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)