假设我有一个枚举类型的未打包数组:
client_e read_only_clients[] = {CLIENT1, CLIENT2};
还有这个封面组:
covergroup cg with function sample ( client_e client, dir_e dir );
client_cp : coverpoint client;
dir_cp : coverpoint dir;
client_dir_cr : cross client_cp, dir_cp;
endgroup
我想为交叉创建一个ignore_bins,它将忽略client_cp属于read_only_clients的bin,并且dir是WRITE
我尝试过做这样的事情:
client_dir_cr : cross client_cp, dir_cp {
ignore_bins ignore_read_only_clients = binsof(client_cp) intersect {read_only_clients} &&
binsof(dir_cp) intersect {WRITE};
}
还有这个:
client_dir_cr : cross client_cp, dir_cp {
ignore_bins ignore_read_only_clients = client_dir_cr with (client_cp inside {read_only_clients} &&
dir_cp == WRITE);
}
但是两者都给了我编译错误。有什么想法吗?
您需要在coverpoint中定义read_only_clients和其他bin,然后将其用于ignore_bins。
covergroup cg with function sample ( client_e client, dir_e dir );
client_cp : coverpoint client {
bins read_only_clients = {CLIENT1, CLIENT2};
bins others[] = default;
}
dir_cp : coverpoint dir;
client_dir_cr : cross client, dir {
ignore_bins ignore_read_only_clients = binsof(client_cp.read_only_clients)
&& binsof(dir_cp) intersect {WRITE}; }
endgroup