Constraint Randomization Interview Question

In reply to Ammu786:


class c; 
  
  rand bit[31:0] v;  
  
  rand int int1 , int2 ;
  
  constraint  LOW_BOUND     {  int1  inside { [ 0 : 31 ] } ; }
  
  constraint  UPPER_BOUND   {  int2  inside { [ 0 : 31 ] } ; }
  
  constraint  DIFF          {  int2 ==  int1  +  9 ;  }  // Range of  Indexes  is  10  !!
  
  // constraint ct12 { $countones(v) == ( 32 - 10 ) ; }  // Can be Skipped  !!
  
  constraint  VAL  {     foreach( v[i] )
                        {   
                          if( i inside { [ int1 : int2 ] } ) 
                            v[ i ] == 0 ;
                          else
                            v[ i ] == 1 ;
                        }
                   }
  
    function  void  post_randomize() ;
    $display(" int1  is  %0d , int2 is %0d" , int1 , int2) ;
    endfunction
                    
endclass 
 
module m; 
    c c1=new(); 
 
  initial begin 
    repeat(5) begin
      if (! c1.randomize() ) $display(" XXX FAILS !! XXX ");
      $display("c1.v= %b", c1.v);
      
    end
  end
endmodule  

1 Like