Combining coverpoints to create an aggregate Announcing the arrival of Valued Associate #679: Cesar Manara Planned maintenance scheduled April 17/18, 2019 at 00:00UTC (8:00pm US/Eastern) Data science time! April 2019 and salary with experience The Ask Question Wizard is Live!UVM: illegal combination of driver and procedural assignment warningMake all but a given set of crosses ilegal in systemverilog cross coverageHow can I create 2 instances of monitors to 2 instance of interfacescreating test bench for AXI busUVM -Create my own macrosUVM: create a task that gets called every 100 or so cycles for all the component.How to more easily make coverpoints for each bit in a bus?What is the difference in creating uvm_reg_field with or without get_full_name()Coverpoints in System VerilogCan you either, forward declare a type to be used as a port type or can you use an interface as an external port?

Would "destroying" Wurmcoil Engine prevent its tokens from being created?

Is grep documentation wrong?

Do wooden building fires get hotter than 600°C?

Amount of permutations on an NxNxN Rubik's Cube

Most bit efficient text communication method?

What do you call the main part of a joke?

Is there such thing as an Availability Group failover trigger?

What does the "x" in "x86" represent?

Extracting terms with certain heads in a function

How to down pick a chord with skipped strings?

Can a new player join a group only when a new campaign starts?

If my PI received research grants from a company to be able to pay my postdoc salary, did I have a potential conflict interest too?

If a VARCHAR(MAX) column is included in an index, is the entire value always stored in the index page(s)?

Why are both D and D# fitting into my E minor key?

Significance of Cersei's obsession with elephants?

What do you call a floor made of glass so you can see through the floor?

Around usage results

Is the Standard Deduction better than Itemized when both are the same amount?

How does the math work when buying airline miles?

How do I stop a creek from eroding my steep embankment?

What would be the ideal power source for a cybernetic eye?

For a new assistant professor in CS, how to build/manage a publication pipeline

Does classifying an integer as a discrete log require it be part of a multiplicative group?

When a candle burns, why does the top of wick glow if bottom of flame is hottest?



Combining coverpoints to create an aggregate



Announcing the arrival of Valued Associate #679: Cesar Manara
Planned maintenance scheduled April 17/18, 2019 at 00:00UTC (8:00pm US/Eastern)
Data science time! April 2019 and salary with experience
The Ask Question Wizard is Live!UVM: illegal combination of driver and procedural assignment warningMake all but a given set of crosses ilegal in systemverilog cross coverageHow can I create 2 instances of monitors to 2 instance of interfacescreating test bench for AXI busUVM -Create my own macrosUVM: create a task that gets called every 100 or so cycles for all the component.How to more easily make coverpoints for each bit in a bus?What is the difference in creating uvm_reg_field with or without get_full_name()Coverpoints in System VerilogCan you either, forward declare a type to be used as a port type or can you use an interface as an external port?



.everyoneloves__top-leaderboard:empty,.everyoneloves__mid-leaderboard:empty,.everyoneloves__bot-mid-leaderboard:empty height:90px;width:728px;box-sizing:border-box;








0















`define A 'd1
`define B 'd2
`define C 'd3
`define D 'd4
`define E 'd5
`define F 'd6
`define I 'd7
`define J 'd8

module testModule(input clk,
input CReset,
input[4;0] Opcode_P0I1,
input[4;0] Opcode_P0I2,
input[4;0] Opcode_P0I3,
input[4;0] Opcode_P0I4,
input[4;0] Opcode_P1I1,
input[4;0] Opcode_P1I2,
input[4;0] Opcode_P1I3,
input[4;0] Opcode_P1I4,
input P0V,
input P1V,
input P0IsFe,
input P1IsFe,
input P0I1PAllow,
input P0I2PAllow,
input P0I3PAllow,
input P0I4PAllow,
input P1I1PAllow,
input P1I2PAllow,
input P1I3PAllow,
input P1I4PAllow,
input I1VT0,
input I1VT1,
input I1VT2,
input I1VT4,
input I2VT0,
input I2VT1,
input I2VT2,
input I2VT3,
input I3VT0,
input I3VT1,
input I3VT2,
input I3VT3,
input I4VT0,
input I4VT1,
input I4VT2,
input I4VT3,
input[3:0] P0TId,
input[3:0] P1TId);
covergroup cg_Abc @(posedge clk);
option.per_instance = 1;
cp_P0I1_IsSquare: coverpoint Opcode_P0I1 iff (P0V == 1 && P0IsFe == 1 && P0I1PAllow == 1 && (I1VT0 && P0TId == 2**0 || I1VT1 && P0TdId == 2**1 || I1VT2 && P0TId == 2**2 || I1VT3 && P0TId == 2**3)) option.weight = 0;type_option.weight = 0; bins derp = `A,`B,`C;
cp_P0I2_IsSquare: coverpoint Opcode_P0I2 iff (P0V == 1 && P0IsFe == 1 && P0I2PAllow == 1 && (I2VT0 && P0TId == 2**0 || I2VT1 && P0TdId == 2**1 || I2VT2 && P0TId == 2**2 || I2VT3 && P0TId == 2**3)) option.weight = 0;type_option.weight = 0; bins derp = `A,`B,`C;
cp_P0I3_IsSquare: coverpoint Opcode_P0I3 iff (P0V == 1 && P0IsFe == 1 && P0I3PAllow == 1 && (I3VT0 && P0TId == 2**0 || I3VT1 && P0TdId == 2**1 || I3VT2 && P0TId == 2**2 || I3VT3 && P0TId == 2**3)) option.weight = 0;type_option.weight = 0; bins derp = `A,`B,`C;
cp_P0I4_IsSquare: coverpoint Opcode_P0I4 iff (P0V == 1 && P0IsFe == 1 && P0I4PAllow == 1 && (I4VT0 && P0TId == 2**0 || I4VT1 && P0TdId == 2**1 || I4VT2 && P0TId == 2**2 || I4VT3 && P0TId == 2**3)) option.weight = 0;type_option.weight = 0; bins derp = `A,`B,`C;
cp_P1I1_IsSquare: coverpoint Opcode_P1I1 iff (P1V == 1 && P1IsFe == 1 && P1I1PAllow == 1 && (I1VT0 && P1TId == 2**0 || I1VT1 && P1TdId == 2**1 || I1VT2 && P1TId == 2**2 || I1VT3 && P1TId == 2**3)) option.weight = 0;type_option.weight = 0; bins derp = `A,`B,`C;
cp_P1I2_IsSquare: coverpoint Opcode_P1I2 iff (P1V == 1 && P1IsFe == 1 && P1I2PAllow == 1 && (I2VT0 && P1TId == 2**0 || I2VT1 && P1TdId == 2**1 || I2VT2 && P1TId == 2**2 || I2VT3 && P1TId == 2**3)) option.weight = 0;type_option.weight = 0; bins derp = `A,`B,`C;
cp_P1I3_IsSquare: coverpoint Opcode_P1I3 iff (P1V == 1 && P1IsFe == 1 && P1I3PAllow == 1 && (I3VT0 && P1TId == 2**0 || I3VT1 && P1TdId == 2**1 || I3VT2 && P1TId == 2**2 || I3VT3 && P1TId == 2**3)) option.weight = 0;type_option.weight = 0; bins derp = `A,`B,`C;
cp_P1I4_IsSquare: coverpoint Opcode_P1I4 iff (P1V == 1 && P1IsFe == 1 && P1I4PAllow == 1 && (I4VT0 && P1TId == 2**0 || I4VT1 && P1TdId == 2**1 || I4VT2 && P1TId == 2**2 || I4VT3 && P1TId == 2**3)) option.weight = 0;type_option.weight = 0; bins derp = `A,`B,`C;

cp_P0I1_IsCircle: coverpoint Opcode_P0I1 iff (P0V == 1 && P0I1PAllow == 0 && (I1VT0 && P0TId == 2**0 || I1VT1 && P0TdId == 2**1 || I1VT2_DE2 && P0TId == 2**2 || I1VT3 && P0TId == 2**3)) option.weight = 0;type_option.weight = 0; bins bxx = `D,`E,`F,`G,`H,`I,`J;
cp_P0I2_IsCircle: coverpoint Opcode_P0I2 iff (P0V == 1 && P0I2PAllow == 0 && (I2VT0 && P0TId == 2**0 || I2VT1 && P0TdId == 2**1 || I2VT2_DE2 && P0TId == 2**2 || I2VT3 && P0TId == 2**3)) option.weight = 0;type_option.weight = 0; bins bxx = `D,`E,`F,`G,`H,`I,`J;
cp_P0I3_IsCircle: coverpoint Opcode_P0I3 iff (P0V == 1 && P0I3PAllow == 0 && (I3VT0 && P0TId == 2**0 || I3VT1 && P0TdId == 2**1 || I3VT2_DE2 && P0TId == 2**2 || I3VT3 && P0TId == 2**3)) option.weight = 0;type_option.weight = 0; bins bxx = `D,`E,`F,`G,`H,`I,`J;
cp_P0I4_IsCircle: coverpoint Opcode_P0I4 iff (P0V == 1 && P0I4PAllow == 0 && (I4VT0 && P0TId == 2**0 || I4VT1 && P0TdId == 2**1 || I4VT2_DE2 && P0TId == 2**2 || I4VT3 && P0TId == 2**3)) option.weight = 0;type_option.weight = 0; bins bxx = `D,`E,`F,`G,`H,`I,`J;
cp_P1I1_IsCircle: coverpoint Opcode_P1I1 iff (P1V == 1 && P1I1PAllow == 0 && (I1VT0 && P1TId == 2**0 || I1VT1 && P1TdId == 2**1 || I1VT2 && P1TId == 2**2 || I1VT3 && P1TId == 2**3)) option.weight = 0;type_option.weight = 0; bins bxx = `D,`E,`F,`G,`H,`I,`J;
cp_P1I2_IsCircle: coverpoint Opcode_P1I2 iff (P1V == 1 && P1I2PAllow == 0 && (I2VT0 && P1TId == 2**0 || I2VT1 && P1TdId == 2**1 || I2VT2 && P1TId == 2**2 || I2VT3 && P1TId == 2**3)) option.weight = 0;type_option.weight = 0; bins bxx = `D,`E,`F,`G,`H,`I,`J;
cp_P1I3_IsCircle: coverpoint Opcode_P1I3 iff (P1V == 1 && P1I3PAllow == 0 && (I3VT0 && P1TId == 2**0 || I3VT1 && P1TdId == 2**1 || I3VT2 && P1TId == 2**2 || I3VT3 && P1TId == 2**3)) option.weight = 0;type_option.weight = 0; bins bxx = `D,`E,`F,`G,`H,`I,`J;
cp_P1I4_IsCircle: coverpoint Opcode_P1I4 iff (P1V == 1 && P1I4PAllow == 0 && (I4VT0 && P1TId == 2**0 || I4VT1 && P1TdId == 2**1 || I4VT2 && P1TId == 2**2 || I4VT3 && P1TId == 2**3)) option.weight = 0;type_option.weight = 0; bins bxx = `D,`E,`F,`G,`H,`I,`J;

cr_P0I1I2_IsSqauarexIsCircle : cross cp_P0I1_IsSquare,cp_P0I2_IsCircleoption.weight = 0;type_option.weight = 0;
cr_P0I2I3_IsSqauarexIsCircle : cross cp_P0I2_IsSquare,cp_P0I3_IsCircleoption.weight = 0;type_option.weight = 0;
cr_P0I3I4_IsSqauarexIsCircle : cross cp_P0I3_IsSquare,cp_P0I4_IsCircleoption.weight = 0;type_option.weight = 0;
AggregateCov1 : ?

cr_P1I1I2_IsSqauarexIsCircle : cross cp_P1I1_IsSquare,cp_P1I2_IsCircleoption.weight = 0;type_option.weight = 0;
cr_P1I2I3_IsSqauarexIsCircle : cross cp_P1I2_IsSquare,cp_P1I3_IsCircleoption.weight = 0;type_option.weight = 0;
cr_P1I3I4_IsSqauarexIsCircle : cross cp_P1I3_IsSquare,cp_P1I14_IsCircleoption.weight = 0;type_option.weight = 0;
AggregateCov2 : ?
endgroup
cg_Abc cg_Abc_inst = new();
endmodule


I am looking for AggregateCov1 which tells if any of cr_P0I1I2_IsSqauarexIsCircle,cr_P0I2I3_IsSqauarexIsCircle,cr_P0I3I4_IsSqauarexIsCircle is a hit. Essentially meaning I have at least one square and a circle adjacent to each other in the group [Opcode_P0I1,Opcode_P0I2,Opcode_P0I3,Opcode_P0I4].



Also looking for AggregateCov2 which tells if I have at least one square and a circle adjacent to each other in the group [Opcode_P0I1,Opcode_P0I2,Opcode_P0I3,Opcode_P0I4] or [Opcode_P1I1,Opcode_P1I2,Opcode_P1I3,Opcode_P1I4]










share|improve this question






























    0















    `define A 'd1
    `define B 'd2
    `define C 'd3
    `define D 'd4
    `define E 'd5
    `define F 'd6
    `define I 'd7
    `define J 'd8

    module testModule(input clk,
    input CReset,
    input[4;0] Opcode_P0I1,
    input[4;0] Opcode_P0I2,
    input[4;0] Opcode_P0I3,
    input[4;0] Opcode_P0I4,
    input[4;0] Opcode_P1I1,
    input[4;0] Opcode_P1I2,
    input[4;0] Opcode_P1I3,
    input[4;0] Opcode_P1I4,
    input P0V,
    input P1V,
    input P0IsFe,
    input P1IsFe,
    input P0I1PAllow,
    input P0I2PAllow,
    input P0I3PAllow,
    input P0I4PAllow,
    input P1I1PAllow,
    input P1I2PAllow,
    input P1I3PAllow,
    input P1I4PAllow,
    input I1VT0,
    input I1VT1,
    input I1VT2,
    input I1VT4,
    input I2VT0,
    input I2VT1,
    input I2VT2,
    input I2VT3,
    input I3VT0,
    input I3VT1,
    input I3VT2,
    input I3VT3,
    input I4VT0,
    input I4VT1,
    input I4VT2,
    input I4VT3,
    input[3:0] P0TId,
    input[3:0] P1TId);
    covergroup cg_Abc @(posedge clk);
    option.per_instance = 1;
    cp_P0I1_IsSquare: coverpoint Opcode_P0I1 iff (P0V == 1 && P0IsFe == 1 && P0I1PAllow == 1 && (I1VT0 && P0TId == 2**0 || I1VT1 && P0TdId == 2**1 || I1VT2 && P0TId == 2**2 || I1VT3 && P0TId == 2**3)) option.weight = 0;type_option.weight = 0; bins derp = `A,`B,`C;
    cp_P0I2_IsSquare: coverpoint Opcode_P0I2 iff (P0V == 1 && P0IsFe == 1 && P0I2PAllow == 1 && (I2VT0 && P0TId == 2**0 || I2VT1 && P0TdId == 2**1 || I2VT2 && P0TId == 2**2 || I2VT3 && P0TId == 2**3)) option.weight = 0;type_option.weight = 0; bins derp = `A,`B,`C;
    cp_P0I3_IsSquare: coverpoint Opcode_P0I3 iff (P0V == 1 && P0IsFe == 1 && P0I3PAllow == 1 && (I3VT0 && P0TId == 2**0 || I3VT1 && P0TdId == 2**1 || I3VT2 && P0TId == 2**2 || I3VT3 && P0TId == 2**3)) option.weight = 0;type_option.weight = 0; bins derp = `A,`B,`C;
    cp_P0I4_IsSquare: coverpoint Opcode_P0I4 iff (P0V == 1 && P0IsFe == 1 && P0I4PAllow == 1 && (I4VT0 && P0TId == 2**0 || I4VT1 && P0TdId == 2**1 || I4VT2 && P0TId == 2**2 || I4VT3 && P0TId == 2**3)) option.weight = 0;type_option.weight = 0; bins derp = `A,`B,`C;
    cp_P1I1_IsSquare: coverpoint Opcode_P1I1 iff (P1V == 1 && P1IsFe == 1 && P1I1PAllow == 1 && (I1VT0 && P1TId == 2**0 || I1VT1 && P1TdId == 2**1 || I1VT2 && P1TId == 2**2 || I1VT3 && P1TId == 2**3)) option.weight = 0;type_option.weight = 0; bins derp = `A,`B,`C;
    cp_P1I2_IsSquare: coverpoint Opcode_P1I2 iff (P1V == 1 && P1IsFe == 1 && P1I2PAllow == 1 && (I2VT0 && P1TId == 2**0 || I2VT1 && P1TdId == 2**1 || I2VT2 && P1TId == 2**2 || I2VT3 && P1TId == 2**3)) option.weight = 0;type_option.weight = 0; bins derp = `A,`B,`C;
    cp_P1I3_IsSquare: coverpoint Opcode_P1I3 iff (P1V == 1 && P1IsFe == 1 && P1I3PAllow == 1 && (I3VT0 && P1TId == 2**0 || I3VT1 && P1TdId == 2**1 || I3VT2 && P1TId == 2**2 || I3VT3 && P1TId == 2**3)) option.weight = 0;type_option.weight = 0; bins derp = `A,`B,`C;
    cp_P1I4_IsSquare: coverpoint Opcode_P1I4 iff (P1V == 1 && P1IsFe == 1 && P1I4PAllow == 1 && (I4VT0 && P1TId == 2**0 || I4VT1 && P1TdId == 2**1 || I4VT2 && P1TId == 2**2 || I4VT3 && P1TId == 2**3)) option.weight = 0;type_option.weight = 0; bins derp = `A,`B,`C;

    cp_P0I1_IsCircle: coverpoint Opcode_P0I1 iff (P0V == 1 && P0I1PAllow == 0 && (I1VT0 && P0TId == 2**0 || I1VT1 && P0TdId == 2**1 || I1VT2_DE2 && P0TId == 2**2 || I1VT3 && P0TId == 2**3)) option.weight = 0;type_option.weight = 0; bins bxx = `D,`E,`F,`G,`H,`I,`J;
    cp_P0I2_IsCircle: coverpoint Opcode_P0I2 iff (P0V == 1 && P0I2PAllow == 0 && (I2VT0 && P0TId == 2**0 || I2VT1 && P0TdId == 2**1 || I2VT2_DE2 && P0TId == 2**2 || I2VT3 && P0TId == 2**3)) option.weight = 0;type_option.weight = 0; bins bxx = `D,`E,`F,`G,`H,`I,`J;
    cp_P0I3_IsCircle: coverpoint Opcode_P0I3 iff (P0V == 1 && P0I3PAllow == 0 && (I3VT0 && P0TId == 2**0 || I3VT1 && P0TdId == 2**1 || I3VT2_DE2 && P0TId == 2**2 || I3VT3 && P0TId == 2**3)) option.weight = 0;type_option.weight = 0; bins bxx = `D,`E,`F,`G,`H,`I,`J;
    cp_P0I4_IsCircle: coverpoint Opcode_P0I4 iff (P0V == 1 && P0I4PAllow == 0 && (I4VT0 && P0TId == 2**0 || I4VT1 && P0TdId == 2**1 || I4VT2_DE2 && P0TId == 2**2 || I4VT3 && P0TId == 2**3)) option.weight = 0;type_option.weight = 0; bins bxx = `D,`E,`F,`G,`H,`I,`J;
    cp_P1I1_IsCircle: coverpoint Opcode_P1I1 iff (P1V == 1 && P1I1PAllow == 0 && (I1VT0 && P1TId == 2**0 || I1VT1 && P1TdId == 2**1 || I1VT2 && P1TId == 2**2 || I1VT3 && P1TId == 2**3)) option.weight = 0;type_option.weight = 0; bins bxx = `D,`E,`F,`G,`H,`I,`J;
    cp_P1I2_IsCircle: coverpoint Opcode_P1I2 iff (P1V == 1 && P1I2PAllow == 0 && (I2VT0 && P1TId == 2**0 || I2VT1 && P1TdId == 2**1 || I2VT2 && P1TId == 2**2 || I2VT3 && P1TId == 2**3)) option.weight = 0;type_option.weight = 0; bins bxx = `D,`E,`F,`G,`H,`I,`J;
    cp_P1I3_IsCircle: coverpoint Opcode_P1I3 iff (P1V == 1 && P1I3PAllow == 0 && (I3VT0 && P1TId == 2**0 || I3VT1 && P1TdId == 2**1 || I3VT2 && P1TId == 2**2 || I3VT3 && P1TId == 2**3)) option.weight = 0;type_option.weight = 0; bins bxx = `D,`E,`F,`G,`H,`I,`J;
    cp_P1I4_IsCircle: coverpoint Opcode_P1I4 iff (P1V == 1 && P1I4PAllow == 0 && (I4VT0 && P1TId == 2**0 || I4VT1 && P1TdId == 2**1 || I4VT2 && P1TId == 2**2 || I4VT3 && P1TId == 2**3)) option.weight = 0;type_option.weight = 0; bins bxx = `D,`E,`F,`G,`H,`I,`J;

    cr_P0I1I2_IsSqauarexIsCircle : cross cp_P0I1_IsSquare,cp_P0I2_IsCircleoption.weight = 0;type_option.weight = 0;
    cr_P0I2I3_IsSqauarexIsCircle : cross cp_P0I2_IsSquare,cp_P0I3_IsCircleoption.weight = 0;type_option.weight = 0;
    cr_P0I3I4_IsSqauarexIsCircle : cross cp_P0I3_IsSquare,cp_P0I4_IsCircleoption.weight = 0;type_option.weight = 0;
    AggregateCov1 : ?

    cr_P1I1I2_IsSqauarexIsCircle : cross cp_P1I1_IsSquare,cp_P1I2_IsCircleoption.weight = 0;type_option.weight = 0;
    cr_P1I2I3_IsSqauarexIsCircle : cross cp_P1I2_IsSquare,cp_P1I3_IsCircleoption.weight = 0;type_option.weight = 0;
    cr_P1I3I4_IsSqauarexIsCircle : cross cp_P1I3_IsSquare,cp_P1I14_IsCircleoption.weight = 0;type_option.weight = 0;
    AggregateCov2 : ?
    endgroup
    cg_Abc cg_Abc_inst = new();
    endmodule


    I am looking for AggregateCov1 which tells if any of cr_P0I1I2_IsSqauarexIsCircle,cr_P0I2I3_IsSqauarexIsCircle,cr_P0I3I4_IsSqauarexIsCircle is a hit. Essentially meaning I have at least one square and a circle adjacent to each other in the group [Opcode_P0I1,Opcode_P0I2,Opcode_P0I3,Opcode_P0I4].



    Also looking for AggregateCov2 which tells if I have at least one square and a circle adjacent to each other in the group [Opcode_P0I1,Opcode_P0I2,Opcode_P0I3,Opcode_P0I4] or [Opcode_P1I1,Opcode_P1I2,Opcode_P1I3,Opcode_P1I4]










    share|improve this question


























      0












      0








      0








      `define A 'd1
      `define B 'd2
      `define C 'd3
      `define D 'd4
      `define E 'd5
      `define F 'd6
      `define I 'd7
      `define J 'd8

      module testModule(input clk,
      input CReset,
      input[4;0] Opcode_P0I1,
      input[4;0] Opcode_P0I2,
      input[4;0] Opcode_P0I3,
      input[4;0] Opcode_P0I4,
      input[4;0] Opcode_P1I1,
      input[4;0] Opcode_P1I2,
      input[4;0] Opcode_P1I3,
      input[4;0] Opcode_P1I4,
      input P0V,
      input P1V,
      input P0IsFe,
      input P1IsFe,
      input P0I1PAllow,
      input P0I2PAllow,
      input P0I3PAllow,
      input P0I4PAllow,
      input P1I1PAllow,
      input P1I2PAllow,
      input P1I3PAllow,
      input P1I4PAllow,
      input I1VT0,
      input I1VT1,
      input I1VT2,
      input I1VT4,
      input I2VT0,
      input I2VT1,
      input I2VT2,
      input I2VT3,
      input I3VT0,
      input I3VT1,
      input I3VT2,
      input I3VT3,
      input I4VT0,
      input I4VT1,
      input I4VT2,
      input I4VT3,
      input[3:0] P0TId,
      input[3:0] P1TId);
      covergroup cg_Abc @(posedge clk);
      option.per_instance = 1;
      cp_P0I1_IsSquare: coverpoint Opcode_P0I1 iff (P0V == 1 && P0IsFe == 1 && P0I1PAllow == 1 && (I1VT0 && P0TId == 2**0 || I1VT1 && P0TdId == 2**1 || I1VT2 && P0TId == 2**2 || I1VT3 && P0TId == 2**3)) option.weight = 0;type_option.weight = 0; bins derp = `A,`B,`C;
      cp_P0I2_IsSquare: coverpoint Opcode_P0I2 iff (P0V == 1 && P0IsFe == 1 && P0I2PAllow == 1 && (I2VT0 && P0TId == 2**0 || I2VT1 && P0TdId == 2**1 || I2VT2 && P0TId == 2**2 || I2VT3 && P0TId == 2**3)) option.weight = 0;type_option.weight = 0; bins derp = `A,`B,`C;
      cp_P0I3_IsSquare: coverpoint Opcode_P0I3 iff (P0V == 1 && P0IsFe == 1 && P0I3PAllow == 1 && (I3VT0 && P0TId == 2**0 || I3VT1 && P0TdId == 2**1 || I3VT2 && P0TId == 2**2 || I3VT3 && P0TId == 2**3)) option.weight = 0;type_option.weight = 0; bins derp = `A,`B,`C;
      cp_P0I4_IsSquare: coverpoint Opcode_P0I4 iff (P0V == 1 && P0IsFe == 1 && P0I4PAllow == 1 && (I4VT0 && P0TId == 2**0 || I4VT1 && P0TdId == 2**1 || I4VT2 && P0TId == 2**2 || I4VT3 && P0TId == 2**3)) option.weight = 0;type_option.weight = 0; bins derp = `A,`B,`C;
      cp_P1I1_IsSquare: coverpoint Opcode_P1I1 iff (P1V == 1 && P1IsFe == 1 && P1I1PAllow == 1 && (I1VT0 && P1TId == 2**0 || I1VT1 && P1TdId == 2**1 || I1VT2 && P1TId == 2**2 || I1VT3 && P1TId == 2**3)) option.weight = 0;type_option.weight = 0; bins derp = `A,`B,`C;
      cp_P1I2_IsSquare: coverpoint Opcode_P1I2 iff (P1V == 1 && P1IsFe == 1 && P1I2PAllow == 1 && (I2VT0 && P1TId == 2**0 || I2VT1 && P1TdId == 2**1 || I2VT2 && P1TId == 2**2 || I2VT3 && P1TId == 2**3)) option.weight = 0;type_option.weight = 0; bins derp = `A,`B,`C;
      cp_P1I3_IsSquare: coverpoint Opcode_P1I3 iff (P1V == 1 && P1IsFe == 1 && P1I3PAllow == 1 && (I3VT0 && P1TId == 2**0 || I3VT1 && P1TdId == 2**1 || I3VT2 && P1TId == 2**2 || I3VT3 && P1TId == 2**3)) option.weight = 0;type_option.weight = 0; bins derp = `A,`B,`C;
      cp_P1I4_IsSquare: coverpoint Opcode_P1I4 iff (P1V == 1 && P1IsFe == 1 && P1I4PAllow == 1 && (I4VT0 && P1TId == 2**0 || I4VT1 && P1TdId == 2**1 || I4VT2 && P1TId == 2**2 || I4VT3 && P1TId == 2**3)) option.weight = 0;type_option.weight = 0; bins derp = `A,`B,`C;

      cp_P0I1_IsCircle: coverpoint Opcode_P0I1 iff (P0V == 1 && P0I1PAllow == 0 && (I1VT0 && P0TId == 2**0 || I1VT1 && P0TdId == 2**1 || I1VT2_DE2 && P0TId == 2**2 || I1VT3 && P0TId == 2**3)) option.weight = 0;type_option.weight = 0; bins bxx = `D,`E,`F,`G,`H,`I,`J;
      cp_P0I2_IsCircle: coverpoint Opcode_P0I2 iff (P0V == 1 && P0I2PAllow == 0 && (I2VT0 && P0TId == 2**0 || I2VT1 && P0TdId == 2**1 || I2VT2_DE2 && P0TId == 2**2 || I2VT3 && P0TId == 2**3)) option.weight = 0;type_option.weight = 0; bins bxx = `D,`E,`F,`G,`H,`I,`J;
      cp_P0I3_IsCircle: coverpoint Opcode_P0I3 iff (P0V == 1 && P0I3PAllow == 0 && (I3VT0 && P0TId == 2**0 || I3VT1 && P0TdId == 2**1 || I3VT2_DE2 && P0TId == 2**2 || I3VT3 && P0TId == 2**3)) option.weight = 0;type_option.weight = 0; bins bxx = `D,`E,`F,`G,`H,`I,`J;
      cp_P0I4_IsCircle: coverpoint Opcode_P0I4 iff (P0V == 1 && P0I4PAllow == 0 && (I4VT0 && P0TId == 2**0 || I4VT1 && P0TdId == 2**1 || I4VT2_DE2 && P0TId == 2**2 || I4VT3 && P0TId == 2**3)) option.weight = 0;type_option.weight = 0; bins bxx = `D,`E,`F,`G,`H,`I,`J;
      cp_P1I1_IsCircle: coverpoint Opcode_P1I1 iff (P1V == 1 && P1I1PAllow == 0 && (I1VT0 && P1TId == 2**0 || I1VT1 && P1TdId == 2**1 || I1VT2 && P1TId == 2**2 || I1VT3 && P1TId == 2**3)) option.weight = 0;type_option.weight = 0; bins bxx = `D,`E,`F,`G,`H,`I,`J;
      cp_P1I2_IsCircle: coverpoint Opcode_P1I2 iff (P1V == 1 && P1I2PAllow == 0 && (I2VT0 && P1TId == 2**0 || I2VT1 && P1TdId == 2**1 || I2VT2 && P1TId == 2**2 || I2VT3 && P1TId == 2**3)) option.weight = 0;type_option.weight = 0; bins bxx = `D,`E,`F,`G,`H,`I,`J;
      cp_P1I3_IsCircle: coverpoint Opcode_P1I3 iff (P1V == 1 && P1I3PAllow == 0 && (I3VT0 && P1TId == 2**0 || I3VT1 && P1TdId == 2**1 || I3VT2 && P1TId == 2**2 || I3VT3 && P1TId == 2**3)) option.weight = 0;type_option.weight = 0; bins bxx = `D,`E,`F,`G,`H,`I,`J;
      cp_P1I4_IsCircle: coverpoint Opcode_P1I4 iff (P1V == 1 && P1I4PAllow == 0 && (I4VT0 && P1TId == 2**0 || I4VT1 && P1TdId == 2**1 || I4VT2 && P1TId == 2**2 || I4VT3 && P1TId == 2**3)) option.weight = 0;type_option.weight = 0; bins bxx = `D,`E,`F,`G,`H,`I,`J;

      cr_P0I1I2_IsSqauarexIsCircle : cross cp_P0I1_IsSquare,cp_P0I2_IsCircleoption.weight = 0;type_option.weight = 0;
      cr_P0I2I3_IsSqauarexIsCircle : cross cp_P0I2_IsSquare,cp_P0I3_IsCircleoption.weight = 0;type_option.weight = 0;
      cr_P0I3I4_IsSqauarexIsCircle : cross cp_P0I3_IsSquare,cp_P0I4_IsCircleoption.weight = 0;type_option.weight = 0;
      AggregateCov1 : ?

      cr_P1I1I2_IsSqauarexIsCircle : cross cp_P1I1_IsSquare,cp_P1I2_IsCircleoption.weight = 0;type_option.weight = 0;
      cr_P1I2I3_IsSqauarexIsCircle : cross cp_P1I2_IsSquare,cp_P1I3_IsCircleoption.weight = 0;type_option.weight = 0;
      cr_P1I3I4_IsSqauarexIsCircle : cross cp_P1I3_IsSquare,cp_P1I14_IsCircleoption.weight = 0;type_option.weight = 0;
      AggregateCov2 : ?
      endgroup
      cg_Abc cg_Abc_inst = new();
      endmodule


      I am looking for AggregateCov1 which tells if any of cr_P0I1I2_IsSqauarexIsCircle,cr_P0I2I3_IsSqauarexIsCircle,cr_P0I3I4_IsSqauarexIsCircle is a hit. Essentially meaning I have at least one square and a circle adjacent to each other in the group [Opcode_P0I1,Opcode_P0I2,Opcode_P0I3,Opcode_P0I4].



      Also looking for AggregateCov2 which tells if I have at least one square and a circle adjacent to each other in the group [Opcode_P0I1,Opcode_P0I2,Opcode_P0I3,Opcode_P0I4] or [Opcode_P1I1,Opcode_P1I2,Opcode_P1I3,Opcode_P1I4]










      share|improve this question
















      `define A 'd1
      `define B 'd2
      `define C 'd3
      `define D 'd4
      `define E 'd5
      `define F 'd6
      `define I 'd7
      `define J 'd8

      module testModule(input clk,
      input CReset,
      input[4;0] Opcode_P0I1,
      input[4;0] Opcode_P0I2,
      input[4;0] Opcode_P0I3,
      input[4;0] Opcode_P0I4,
      input[4;0] Opcode_P1I1,
      input[4;0] Opcode_P1I2,
      input[4;0] Opcode_P1I3,
      input[4;0] Opcode_P1I4,
      input P0V,
      input P1V,
      input P0IsFe,
      input P1IsFe,
      input P0I1PAllow,
      input P0I2PAllow,
      input P0I3PAllow,
      input P0I4PAllow,
      input P1I1PAllow,
      input P1I2PAllow,
      input P1I3PAllow,
      input P1I4PAllow,
      input I1VT0,
      input I1VT1,
      input I1VT2,
      input I1VT4,
      input I2VT0,
      input I2VT1,
      input I2VT2,
      input I2VT3,
      input I3VT0,
      input I3VT1,
      input I3VT2,
      input I3VT3,
      input I4VT0,
      input I4VT1,
      input I4VT2,
      input I4VT3,
      input[3:0] P0TId,
      input[3:0] P1TId);
      covergroup cg_Abc @(posedge clk);
      option.per_instance = 1;
      cp_P0I1_IsSquare: coverpoint Opcode_P0I1 iff (P0V == 1 && P0IsFe == 1 && P0I1PAllow == 1 && (I1VT0 && P0TId == 2**0 || I1VT1 && P0TdId == 2**1 || I1VT2 && P0TId == 2**2 || I1VT3 && P0TId == 2**3)) option.weight = 0;type_option.weight = 0; bins derp = `A,`B,`C;
      cp_P0I2_IsSquare: coverpoint Opcode_P0I2 iff (P0V == 1 && P0IsFe == 1 && P0I2PAllow == 1 && (I2VT0 && P0TId == 2**0 || I2VT1 && P0TdId == 2**1 || I2VT2 && P0TId == 2**2 || I2VT3 && P0TId == 2**3)) option.weight = 0;type_option.weight = 0; bins derp = `A,`B,`C;
      cp_P0I3_IsSquare: coverpoint Opcode_P0I3 iff (P0V == 1 && P0IsFe == 1 && P0I3PAllow == 1 && (I3VT0 && P0TId == 2**0 || I3VT1 && P0TdId == 2**1 || I3VT2 && P0TId == 2**2 || I3VT3 && P0TId == 2**3)) option.weight = 0;type_option.weight = 0; bins derp = `A,`B,`C;
      cp_P0I4_IsSquare: coverpoint Opcode_P0I4 iff (P0V == 1 && P0IsFe == 1 && P0I4PAllow == 1 && (I4VT0 && P0TId == 2**0 || I4VT1 && P0TdId == 2**1 || I4VT2 && P0TId == 2**2 || I4VT3 && P0TId == 2**3)) option.weight = 0;type_option.weight = 0; bins derp = `A,`B,`C;
      cp_P1I1_IsSquare: coverpoint Opcode_P1I1 iff (P1V == 1 && P1IsFe == 1 && P1I1PAllow == 1 && (I1VT0 && P1TId == 2**0 || I1VT1 && P1TdId == 2**1 || I1VT2 && P1TId == 2**2 || I1VT3 && P1TId == 2**3)) option.weight = 0;type_option.weight = 0; bins derp = `A,`B,`C;
      cp_P1I2_IsSquare: coverpoint Opcode_P1I2 iff (P1V == 1 && P1IsFe == 1 && P1I2PAllow == 1 && (I2VT0 && P1TId == 2**0 || I2VT1 && P1TdId == 2**1 || I2VT2 && P1TId == 2**2 || I2VT3 && P1TId == 2**3)) option.weight = 0;type_option.weight = 0; bins derp = `A,`B,`C;
      cp_P1I3_IsSquare: coverpoint Opcode_P1I3 iff (P1V == 1 && P1IsFe == 1 && P1I3PAllow == 1 && (I3VT0 && P1TId == 2**0 || I3VT1 && P1TdId == 2**1 || I3VT2 && P1TId == 2**2 || I3VT3 && P1TId == 2**3)) option.weight = 0;type_option.weight = 0; bins derp = `A,`B,`C;
      cp_P1I4_IsSquare: coverpoint Opcode_P1I4 iff (P1V == 1 && P1IsFe == 1 && P1I4PAllow == 1 && (I4VT0 && P1TId == 2**0 || I4VT1 && P1TdId == 2**1 || I4VT2 && P1TId == 2**2 || I4VT3 && P1TId == 2**3)) option.weight = 0;type_option.weight = 0; bins derp = `A,`B,`C;

      cp_P0I1_IsCircle: coverpoint Opcode_P0I1 iff (P0V == 1 && P0I1PAllow == 0 && (I1VT0 && P0TId == 2**0 || I1VT1 && P0TdId == 2**1 || I1VT2_DE2 && P0TId == 2**2 || I1VT3 && P0TId == 2**3)) option.weight = 0;type_option.weight = 0; bins bxx = `D,`E,`F,`G,`H,`I,`J;
      cp_P0I2_IsCircle: coverpoint Opcode_P0I2 iff (P0V == 1 && P0I2PAllow == 0 && (I2VT0 && P0TId == 2**0 || I2VT1 && P0TdId == 2**1 || I2VT2_DE2 && P0TId == 2**2 || I2VT3 && P0TId == 2**3)) option.weight = 0;type_option.weight = 0; bins bxx = `D,`E,`F,`G,`H,`I,`J;
      cp_P0I3_IsCircle: coverpoint Opcode_P0I3 iff (P0V == 1 && P0I3PAllow == 0 && (I3VT0 && P0TId == 2**0 || I3VT1 && P0TdId == 2**1 || I3VT2_DE2 && P0TId == 2**2 || I3VT3 && P0TId == 2**3)) option.weight = 0;type_option.weight = 0; bins bxx = `D,`E,`F,`G,`H,`I,`J;
      cp_P0I4_IsCircle: coverpoint Opcode_P0I4 iff (P0V == 1 && P0I4PAllow == 0 && (I4VT0 && P0TId == 2**0 || I4VT1 && P0TdId == 2**1 || I4VT2_DE2 && P0TId == 2**2 || I4VT3 && P0TId == 2**3)) option.weight = 0;type_option.weight = 0; bins bxx = `D,`E,`F,`G,`H,`I,`J;
      cp_P1I1_IsCircle: coverpoint Opcode_P1I1 iff (P1V == 1 && P1I1PAllow == 0 && (I1VT0 && P1TId == 2**0 || I1VT1 && P1TdId == 2**1 || I1VT2 && P1TId == 2**2 || I1VT3 && P1TId == 2**3)) option.weight = 0;type_option.weight = 0; bins bxx = `D,`E,`F,`G,`H,`I,`J;
      cp_P1I2_IsCircle: coverpoint Opcode_P1I2 iff (P1V == 1 && P1I2PAllow == 0 && (I2VT0 && P1TId == 2**0 || I2VT1 && P1TdId == 2**1 || I2VT2 && P1TId == 2**2 || I2VT3 && P1TId == 2**3)) option.weight = 0;type_option.weight = 0; bins bxx = `D,`E,`F,`G,`H,`I,`J;
      cp_P1I3_IsCircle: coverpoint Opcode_P1I3 iff (P1V == 1 && P1I3PAllow == 0 && (I3VT0 && P1TId == 2**0 || I3VT1 && P1TdId == 2**1 || I3VT2 && P1TId == 2**2 || I3VT3 && P1TId == 2**3)) option.weight = 0;type_option.weight = 0; bins bxx = `D,`E,`F,`G,`H,`I,`J;
      cp_P1I4_IsCircle: coverpoint Opcode_P1I4 iff (P1V == 1 && P1I4PAllow == 0 && (I4VT0 && P1TId == 2**0 || I4VT1 && P1TdId == 2**1 || I4VT2 && P1TId == 2**2 || I4VT3 && P1TId == 2**3)) option.weight = 0;type_option.weight = 0; bins bxx = `D,`E,`F,`G,`H,`I,`J;

      cr_P0I1I2_IsSqauarexIsCircle : cross cp_P0I1_IsSquare,cp_P0I2_IsCircleoption.weight = 0;type_option.weight = 0;
      cr_P0I2I3_IsSqauarexIsCircle : cross cp_P0I2_IsSquare,cp_P0I3_IsCircleoption.weight = 0;type_option.weight = 0;
      cr_P0I3I4_IsSqauarexIsCircle : cross cp_P0I3_IsSquare,cp_P0I4_IsCircleoption.weight = 0;type_option.weight = 0;
      AggregateCov1 : ?

      cr_P1I1I2_IsSqauarexIsCircle : cross cp_P1I1_IsSquare,cp_P1I2_IsCircleoption.weight = 0;type_option.weight = 0;
      cr_P1I2I3_IsSqauarexIsCircle : cross cp_P1I2_IsSquare,cp_P1I3_IsCircleoption.weight = 0;type_option.weight = 0;
      cr_P1I3I4_IsSqauarexIsCircle : cross cp_P1I3_IsSquare,cp_P1I14_IsCircleoption.weight = 0;type_option.weight = 0;
      AggregateCov2 : ?
      endgroup
      cg_Abc cg_Abc_inst = new();
      endmodule


      I am looking for AggregateCov1 which tells if any of cr_P0I1I2_IsSqauarexIsCircle,cr_P0I2I3_IsSqauarexIsCircle,cr_P0I3I4_IsSqauarexIsCircle is a hit. Essentially meaning I have at least one square and a circle adjacent to each other in the group [Opcode_P0I1,Opcode_P0I2,Opcode_P0I3,Opcode_P0I4].



      Also looking for AggregateCov2 which tells if I have at least one square and a circle adjacent to each other in the group [Opcode_P0I1,Opcode_P0I2,Opcode_P0I3,Opcode_P0I4] or [Opcode_P1I1,Opcode_P1I2,Opcode_P1I3,Opcode_P1I4]







      code-coverage system-verilog uvm cadence






      share|improve this question















      share|improve this question













      share|improve this question




      share|improve this question








      edited Mar 12 at 17:52







      Sparsh Gupta

















      asked Mar 8 at 18:46









      Sparsh GuptaSparsh Gupta

      169




      169






















          1 Answer
          1






          active

          oldest

          votes


















          0














          There is no need to do this as you need to hit the AND of all coverpoints a,b,c to get 100% coverage of this covergroup.



          But if you insist, you can use a coverpoint expression



          AggregateCoverpoint: coverpoint v_a | v_b | v_c;





          share|improve this answer























          • Hi Dave, I don't want to use the expression v_a and so forth because they are actually sampled @ iff condition which essentially is different for all of them. I have made edits to better represent my problem. I would ideally like to use 'a','b','c' to create a seperate coverpoint and I want to avoid combining those conditions.

            – Sparsh Gupta
            Mar 8 at 19:46












          • I'll ask again why you need to do this. It will not collect anymore coverage unless the iff conditions are different. You'll need to explain with some sample values.

            – dave_59
            Mar 8 at 20:40











          • Essentially the requirement is to verify that along an array adjacent items are of 2 different types. For instance, at posedge clk array[i] is of type 1 detected by 'a' and array[j] if of type 2. Now, I need to do this over the whole array say of length 4. So 3 items which check the same. But overall I want to qualify that along the array, I have type1 followed by type2. If this happens even once I want to report 100%.

            – Sparsh Gupta
            Mar 8 at 20:54











          • That is a lot of additional information that was not in the original question, and still probably not enough. Think of creating an mcve that generates the data you want to check without thinking about the covergroup syntax. stackoverflow.com/help/mcve

            – dave_59
            Mar 9 at 4:33












          • I have changed the original description and added a code barebone, Does that help?

            – Sparsh Gupta
            Mar 12 at 16:06











          Your Answer






          StackExchange.ifUsing("editor", function ()
          StackExchange.using("externalEditor", function ()
          StackExchange.using("snippets", function ()
          StackExchange.snippets.init();
          );
          );
          , "code-snippets");

          StackExchange.ready(function()
          var channelOptions =
          tags: "".split(" "),
          id: "1"
          ;
          initTagRenderer("".split(" "), "".split(" "), channelOptions);

          StackExchange.using("externalEditor", function()
          // Have to fire editor after snippets, if snippets enabled
          if (StackExchange.settings.snippets.snippetsEnabled)
          StackExchange.using("snippets", function()
          createEditor();
          );

          else
          createEditor();

          );

          function createEditor()
          StackExchange.prepareEditor(
          heartbeatType: 'answer',
          autoActivateHeartbeat: false,
          convertImagesToLinks: true,
          noModals: true,
          showLowRepImageUploadWarning: true,
          reputationToPostImages: 10,
          bindNavPrevention: true,
          postfix: "",
          imageUploader:
          brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
          contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
          allowUrls: true
          ,
          onDemand: true,
          discardSelector: ".discard-answer"
          ,immediatelyShowMarkdownHelp:true
          );



          );













          draft saved

          draft discarded


















          StackExchange.ready(
          function ()
          StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f55069241%2fcombining-coverpoints-to-create-an-aggregate%23new-answer', 'question_page');

          );

          Post as a guest















          Required, but never shown

























          1 Answer
          1






          active

          oldest

          votes








          1 Answer
          1






          active

          oldest

          votes









          active

          oldest

          votes






          active

          oldest

          votes









          0














          There is no need to do this as you need to hit the AND of all coverpoints a,b,c to get 100% coverage of this covergroup.



          But if you insist, you can use a coverpoint expression



          AggregateCoverpoint: coverpoint v_a | v_b | v_c;





          share|improve this answer























          • Hi Dave, I don't want to use the expression v_a and so forth because they are actually sampled @ iff condition which essentially is different for all of them. I have made edits to better represent my problem. I would ideally like to use 'a','b','c' to create a seperate coverpoint and I want to avoid combining those conditions.

            – Sparsh Gupta
            Mar 8 at 19:46












          • I'll ask again why you need to do this. It will not collect anymore coverage unless the iff conditions are different. You'll need to explain with some sample values.

            – dave_59
            Mar 8 at 20:40











          • Essentially the requirement is to verify that along an array adjacent items are of 2 different types. For instance, at posedge clk array[i] is of type 1 detected by 'a' and array[j] if of type 2. Now, I need to do this over the whole array say of length 4. So 3 items which check the same. But overall I want to qualify that along the array, I have type1 followed by type2. If this happens even once I want to report 100%.

            – Sparsh Gupta
            Mar 8 at 20:54











          • That is a lot of additional information that was not in the original question, and still probably not enough. Think of creating an mcve that generates the data you want to check without thinking about the covergroup syntax. stackoverflow.com/help/mcve

            – dave_59
            Mar 9 at 4:33












          • I have changed the original description and added a code barebone, Does that help?

            – Sparsh Gupta
            Mar 12 at 16:06















          0














          There is no need to do this as you need to hit the AND of all coverpoints a,b,c to get 100% coverage of this covergroup.



          But if you insist, you can use a coverpoint expression



          AggregateCoverpoint: coverpoint v_a | v_b | v_c;





          share|improve this answer























          • Hi Dave, I don't want to use the expression v_a and so forth because they are actually sampled @ iff condition which essentially is different for all of them. I have made edits to better represent my problem. I would ideally like to use 'a','b','c' to create a seperate coverpoint and I want to avoid combining those conditions.

            – Sparsh Gupta
            Mar 8 at 19:46












          • I'll ask again why you need to do this. It will not collect anymore coverage unless the iff conditions are different. You'll need to explain with some sample values.

            – dave_59
            Mar 8 at 20:40











          • Essentially the requirement is to verify that along an array adjacent items are of 2 different types. For instance, at posedge clk array[i] is of type 1 detected by 'a' and array[j] if of type 2. Now, I need to do this over the whole array say of length 4. So 3 items which check the same. But overall I want to qualify that along the array, I have type1 followed by type2. If this happens even once I want to report 100%.

            – Sparsh Gupta
            Mar 8 at 20:54











          • That is a lot of additional information that was not in the original question, and still probably not enough. Think of creating an mcve that generates the data you want to check without thinking about the covergroup syntax. stackoverflow.com/help/mcve

            – dave_59
            Mar 9 at 4:33












          • I have changed the original description and added a code barebone, Does that help?

            – Sparsh Gupta
            Mar 12 at 16:06













          0












          0








          0







          There is no need to do this as you need to hit the AND of all coverpoints a,b,c to get 100% coverage of this covergroup.



          But if you insist, you can use a coverpoint expression



          AggregateCoverpoint: coverpoint v_a | v_b | v_c;





          share|improve this answer













          There is no need to do this as you need to hit the AND of all coverpoints a,b,c to get 100% coverage of this covergroup.



          But if you insist, you can use a coverpoint expression



          AggregateCoverpoint: coverpoint v_a | v_b | v_c;






          share|improve this answer












          share|improve this answer



          share|improve this answer










          answered Mar 8 at 19:25









          dave_59dave_59

          21k21639




          21k21639












          • Hi Dave, I don't want to use the expression v_a and so forth because they are actually sampled @ iff condition which essentially is different for all of them. I have made edits to better represent my problem. I would ideally like to use 'a','b','c' to create a seperate coverpoint and I want to avoid combining those conditions.

            – Sparsh Gupta
            Mar 8 at 19:46












          • I'll ask again why you need to do this. It will not collect anymore coverage unless the iff conditions are different. You'll need to explain with some sample values.

            – dave_59
            Mar 8 at 20:40











          • Essentially the requirement is to verify that along an array adjacent items are of 2 different types. For instance, at posedge clk array[i] is of type 1 detected by 'a' and array[j] if of type 2. Now, I need to do this over the whole array say of length 4. So 3 items which check the same. But overall I want to qualify that along the array, I have type1 followed by type2. If this happens even once I want to report 100%.

            – Sparsh Gupta
            Mar 8 at 20:54











          • That is a lot of additional information that was not in the original question, and still probably not enough. Think of creating an mcve that generates the data you want to check without thinking about the covergroup syntax. stackoverflow.com/help/mcve

            – dave_59
            Mar 9 at 4:33












          • I have changed the original description and added a code barebone, Does that help?

            – Sparsh Gupta
            Mar 12 at 16:06

















          • Hi Dave, I don't want to use the expression v_a and so forth because they are actually sampled @ iff condition which essentially is different for all of them. I have made edits to better represent my problem. I would ideally like to use 'a','b','c' to create a seperate coverpoint and I want to avoid combining those conditions.

            – Sparsh Gupta
            Mar 8 at 19:46












          • I'll ask again why you need to do this. It will not collect anymore coverage unless the iff conditions are different. You'll need to explain with some sample values.

            – dave_59
            Mar 8 at 20:40











          • Essentially the requirement is to verify that along an array adjacent items are of 2 different types. For instance, at posedge clk array[i] is of type 1 detected by 'a' and array[j] if of type 2. Now, I need to do this over the whole array say of length 4. So 3 items which check the same. But overall I want to qualify that along the array, I have type1 followed by type2. If this happens even once I want to report 100%.

            – Sparsh Gupta
            Mar 8 at 20:54











          • That is a lot of additional information that was not in the original question, and still probably not enough. Think of creating an mcve that generates the data you want to check without thinking about the covergroup syntax. stackoverflow.com/help/mcve

            – dave_59
            Mar 9 at 4:33












          • I have changed the original description and added a code barebone, Does that help?

            – Sparsh Gupta
            Mar 12 at 16:06
















          Hi Dave, I don't want to use the expression v_a and so forth because they are actually sampled @ iff condition which essentially is different for all of them. I have made edits to better represent my problem. I would ideally like to use 'a','b','c' to create a seperate coverpoint and I want to avoid combining those conditions.

          – Sparsh Gupta
          Mar 8 at 19:46






          Hi Dave, I don't want to use the expression v_a and so forth because they are actually sampled @ iff condition which essentially is different for all of them. I have made edits to better represent my problem. I would ideally like to use 'a','b','c' to create a seperate coverpoint and I want to avoid combining those conditions.

          – Sparsh Gupta
          Mar 8 at 19:46














          I'll ask again why you need to do this. It will not collect anymore coverage unless the iff conditions are different. You'll need to explain with some sample values.

          – dave_59
          Mar 8 at 20:40





          I'll ask again why you need to do this. It will not collect anymore coverage unless the iff conditions are different. You'll need to explain with some sample values.

          – dave_59
          Mar 8 at 20:40













          Essentially the requirement is to verify that along an array adjacent items are of 2 different types. For instance, at posedge clk array[i] is of type 1 detected by 'a' and array[j] if of type 2. Now, I need to do this over the whole array say of length 4. So 3 items which check the same. But overall I want to qualify that along the array, I have type1 followed by type2. If this happens even once I want to report 100%.

          – Sparsh Gupta
          Mar 8 at 20:54





          Essentially the requirement is to verify that along an array adjacent items are of 2 different types. For instance, at posedge clk array[i] is of type 1 detected by 'a' and array[j] if of type 2. Now, I need to do this over the whole array say of length 4. So 3 items which check the same. But overall I want to qualify that along the array, I have type1 followed by type2. If this happens even once I want to report 100%.

          – Sparsh Gupta
          Mar 8 at 20:54













          That is a lot of additional information that was not in the original question, and still probably not enough. Think of creating an mcve that generates the data you want to check without thinking about the covergroup syntax. stackoverflow.com/help/mcve

          – dave_59
          Mar 9 at 4:33






          That is a lot of additional information that was not in the original question, and still probably not enough. Think of creating an mcve that generates the data you want to check without thinking about the covergroup syntax. stackoverflow.com/help/mcve

          – dave_59
          Mar 9 at 4:33














          I have changed the original description and added a code barebone, Does that help?

          – Sparsh Gupta
          Mar 12 at 16:06





          I have changed the original description and added a code barebone, Does that help?

          – Sparsh Gupta
          Mar 12 at 16:06



















          draft saved

          draft discarded
















































          Thanks for contributing an answer to Stack Overflow!


          • Please be sure to answer the question. Provide details and share your research!

          But avoid


          • Asking for help, clarification, or responding to other answers.

          • Making statements based on opinion; back them up with references or personal experience.

          To learn more, see our tips on writing great answers.




          draft saved


          draft discarded














          StackExchange.ready(
          function ()
          StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f55069241%2fcombining-coverpoints-to-create-an-aggregate%23new-answer', 'question_page');

          );

          Post as a guest















          Required, but never shown





















































          Required, but never shown














          Required, but never shown












          Required, but never shown







          Required, but never shown

































          Required, but never shown














          Required, but never shown












          Required, but never shown







          Required, but never shown







          Popular posts from this blog

          1928 у кіно

          Захаров Федір Захарович

          Ель Греко