Is repeat_range as [*0:N] Valid?

Hi ,

For SVA the following sequence :: *Sig1 |=> Sig2[0:4] is Legal

However when I use the following code in Functional Coverage ::


     bit  a , b ;
 
     covergroup cg ; 
      
     coverpoint {a,b}
     {
       bins a_to_b = ( 2'b11 => 2'b10[*0:5] =>  2'b00 ) ; //  Compilation  Error  here 
     }
     endgroup 

     cg  cg1  =  new();

The error message I observe is ::
Illegal value 0 specified in repeat min/max field of a transition in bin
a_to_b of coverpoint {a, b} in covergroup Transition::cg.
Covergroup Instance: cg1

I tried looking in LRM which simply states ::


Consecutive repetitions of transitions are specified using:
trans_item [* repeat_range ]

It doesn’t explicitly state whether value of 0 is Illegal as such .

Any thoughts / suggestions would be appreciated

From LRM :

Section 19.5.2 at the very end.

Transition bin specifications of length 0 shall be illegal. These are transition bin specifications containing a
trans_set production of a single covergroup_value_range, e.g., (0) or ([0:1]), or a single
covergroup_value_range with a repeat_range evaluating to 1, e.g., (0[*1]) or ([0:1][*1]).

In reply to rag123:

Thanks for pointing the LRM Section .

As per my interpretation of the particular LRM section , transition length of 0 is Invalid .

So ( 0 ) or ( [0:1] ) are invalid as there are no transitions effectively .

Eg :: ( 0 => 1 ) or ( [0:1] => 3 ) . These have length of non-zero transition due to => 1 and => 3

Similarly *( 0[1] ) or *( [0:1][1] ) have no transition , hence their length is 0 .

In the top code due to transition ( 2’b11 => … ) in the start itself ensures there is a transition i.e Non-zero length ,

So I still think it should be valid