Cross coverage between different covergroups

Does SV support cross coverage between 2 different cover groups
as shown in eg below:

class abc;
 bit [7:0] a;
 bit [7:0] b;
 bit [7:0] a;

covergroup ab1;

 a1 : coverpoint a
  { bins a1 = {[0:7]};}
 b1 : coverpoint b
  { bins b1 = {[0:7]};}
 a1b1 : cross a1,b1{
   bins a1b1_1 = binsof(a1.a1) && binsof(b1) intersect {4};
  }
endgroup

covegroup ab1c1;

 c1 : coverpoint c
  { bins c1 = {[0:7]};}

a1b1c1 : cross ab1.a1b1,c1
  bins a1b1c1 = binsof(ab1.a1b1) && binsof(c1);

endgroup


endclass
1 Like

No, SystemVerilog does not support crosses between covergroups. One of the main issues is defining the sample of the cross between the two covergroups. See 0002993: Cross cover points across different cover groups - Accellera Mantis

One of the solution would be to duplicate the coverpoints(a1, b1) and cross(a1b1) in the target covergroup manually.
More details here: SystemVerilog : Cross coverage between two different covergroups – VerifSudha

In reply to dave_59:

No, SystemVerilog does not support crosses between covergroups. One of the main issues is defining the sample of the cross between the two covergroups. See 02993: Cross cover points across different cover groups - Accellera Mantis

I’m sorry for necroposting, but I was wondering if there is any recommended guideline on how to proceed with coverage point reuse and/or cross-coverage across separate covergroups.

In our case we have our protocol VIP vendor which is providing a fairly comprehensive set of covergroups for the protocol, but we would like to ‘extend’ that to include our own cross-coverage items to make sure the protocol is working properly under specific conditions of the DUT.

Any recommendation on how to proceed?

In reply to abasili:

Today, you have to cut&paste the existing coverpoint code.

But a recent enhancement to 1800 allows you to extend a covergroup embedded in a class when you extend the class. Check with your tool vendor for implementation status.

In reply to dave_59:

Thank you very much!