Я создаю покрытие для своего дизайна и хочу повторно использовать определение группы покрытия для нескольких экземпляров. Первый экземпляр должен использовать все точки покрытия по назначению, но во втором случае я хочу исключить некоторые из точек покрытия в группе покрытия.
Я думал, что мог бы использовать вход для группы покрытия и iff () нежелательные точки покрытия, так что первый экземпляр связывает вход с 1, а второй экземпляр связывает вход с 0. Однако я думаю, что это все еще покажет точки покрытия для второго экземпляра как всегда не ударил, и я хочу, чтобы они вообще не были включены.
covergroup cg_address(input bit enable) @ (posedge clock);
address_check: coverpoint (address){
bins addr_0 = {5'd0};
bins addr_1 = {5'd1};
}
data_check: coverpoint (data) iff (enable){
bins data_0 = {10'd0};
bins data_1 = {10'd1};
}
endgroup : cg_address
cg_address cg_address_inst0 = new(1'b1);
cg_address cg_address_inst1 = new(1'b0); //want this one to exclude data_check coverpoint
Я знаю, что приведенный выше код не будет работать, потому что у второго экземпляра все еще будет точка покрытия data_check, он просто никогда не попадет ни в один из бинов, потому что enable связан с 0. Есть ли другой способ, которым я могу попытаться исключить data_check точка прикрытия для второго экземпляра?