Покрытие для автобуса с типом структуры - PullRequest
0 голосов
/ 12 ноября 2019

У меня есть шина следующего типа

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. (Приходит только один запрос)in)

, если сигнал не был структурным типом, например, logic [3: 0] my_req_bus;мы могли бы просто сделать

прикрытие i iff (my_bus_req [i] .vld == 1 && $ onehot (my_bus_req))

, но не уверены, как это может бытьсделано для автобуса типа struct

1 Ответ

0 голосов
/ 12 ноября 2019

Поскольку вы создали этот упакованный массив, нет простого выражения, которое вы можете использовать напрямую, не создавая отдельную функцию или не приводя к распакованному массиву.

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)
...