Transition

Hi All,
I want to check pattern looks like (2=>3=>…=>2=>3), where 2=>3 repeats two times.
I created the bin like that, but it does not work. Do you have some suggestions?
Thank a lot!


 coverpoint data{
         bins d2 = (2=>3=>!2[*0:50]=>2=>3);
      
                      }


In reply to peter:

‘!’ is a logical not, sop ‘!2’ is ‘0’, not sure if that is what you want.

You can do

 bins d2 = (2=>3[=2]);

Which is nonconsecutive repetition 2=>3…=>2=>3. But there is no way to set a limit between repetitions

In reply to dave_59:

Hi Dave ,

For the following :


 bins d2 = (2=>3[=2]);

Won’t bin d2 be covered if the sampled values were :: 2 3 1 3 ?

One possible solution for the requirement :


  //  Assuming  coverpoint  ' data '  is  3-bit  variable
  wildcard bins transitn   =  ( 2 => 3 => 3'b?[*0:50] => 2 => 3 );
  ignore_bins   ig_trans   =  ( 2  =>  3  =>  2[*1:50]  =>  2  =>  3 );

Bin tranitn would be covered if the sampled values were ::

  1. 2 3 1 2 3
  2. 2 3 2 3

*One of the tools throws compilation error for [0] which I believe is incorrect

Error-[FCITRV] Illegal repeat value in transition
Illegal value 0 specified in repeat min/max field of a transition in bin transitn of coverpoint data

This can be bypassed using ::


  wildcard bins transitn = ( 2 => 3 => 2 => 3 ) , ( 2 => 3 => 3'b?[*1:50] => 2 => 3 );

A Note for future reference : ’ $ ’ can’t be specified as upper bound i.e following is illegal :


  wildcard bins transitn = ( 2 => 3 => 2 => 3 ) , ( 2 => 3 => 3'b?[*1:$] => 2 => 3 );

In reply to dave_59:

Hi Dave


 bins d2 = (2=>3[=2])

Does it just cover 2=>3…=>3, not 2=>3…=>2=>3?
Thank you!