Привет, я новичок в stackoverflow и systemverilog / uvm. В настоящее время я пытаюсь получить точку перекрестного покрытия, чтобы поймать условие (a == b) && (c == d), независимо от того, какое значение они имеют. Я попробовал следующие кресты, и ни один из них, кажется, не работает.
covergroup abcd_tracking with function sample (bit [7:0] a, bit [7:0] b, bit [7:0] c, bit [7:0] d);
coverpoint a {
bins a_bin[1] = {[0:$]};
}
coverpoint b {
bins b_bin[1] = {[0:$]};
}
coverpoint c {
bins c_bin[1] = {[0:$]};
}
coverpoint d {
bins d_bin[1] = {[0:$]};
abcd_cross : cross a,b,c,d
{
bins abcd_bin = abcd_cross with( (a==b) && (c==d) );
}
abcd_cross_2 : cross a,b,c,d
{
bins abcd_2_bin = ( binsof(a) intersect(b) && binsof(c) intersect(d) );
}
abcd_cross_3 : cross a,b,c,d
{
bins abcd_3_bin = ( binsof(a) intersect{[0:$]} with (a==b) && binsof(c) intersect{[0:$]} with (c==d) );
}
На самом деле это должно быть недопустимым условием, которое никогда не будет достигнуто, но 3 точки перекрестного покрытия, кажется, постоянно получают удар, даже несмотря на то, что, проверяя мои файлы журнала, выбранные переменные не соответствуют условию, которое я пытаюсь определить в моем точка пересечения Каков правильный синтаксис для перехвата этого конкретного условия: "(a == b) && (c == d)"?