How to write constraint for generating a continuous mask

In reply to Tapas:


class seq_item;
  rand bit[7:0] mask;
  rand bit[2:0] q[$];
    
  constraint cont_mask_c { q.size() inside {[1:$size(mask)]}; //generate a queue of random size but less than size of mask
                           q[$] inside {[0:$size(mask)-1]};
                           
                          foreach(q[i]) {if(q.size() > 1) if(i<= q.size()-2) q[i+1] == q[i] + 1;} //fill random queue with contiguous numbers
                            foreach(mask[i]) {if (i inside {q} ) mask[i] == 1; else mask[i] == 0;} //only in those contiguos positions generate 1, else 0
                         }
endclass: seq_item


This generates continuous masks, you can test it here…