In reply to DVtrojan:
In reply to Rahulkumar:
In general i am looking to understand how to write constraints for consecutive things? One problem statement i have is following. any idea for below?
100 bits width number.
Write a constraint such a way that,
- Number of continuous zeros will be between 2 to 5.
- number of continuous ones will be between 2 to 5.
rand bit [99:0] var1;
rand bit [2:0] arr[];
constraint c1 {
arr.size() inside {[20:50]};
arr.sum with (int'(item)) == 100;
foreach(arr[i]) arr[i] inside {[2:5]};
}
function void post_randomize();
bit n;
n = $urandom;
foreach(arr[i])begin
var1 = var1 << arr[i];
if(n) var1 = var1 | ((n<<arr[i])-1);
n = ~n;
end
endfunction
/*
//output :
arr : '{'h2, 'h5, 'h4, 'h2, 'h2, 'h3, 'h5, 'h5, 'h5, 'h3, 'h5, 'h5, 'h4, 'h3, 'h5, 'h5, 'h3, 'h4, 'h4, 'h5, 'h5, 'h4, 'h3, 'h4, 'h5}
var1 : 0011111000011001110000011111000001110000011111000011100000111110001111000011111000001111000111100000
arr : '{'h2, 'h5, 'h3, 'h3, 'h5, 'h4, 'h5, 'h4, 'h5, 'h5, 'h2, 'h5, 'h5, 'h5, 'h5, 'h5, 'h3, 'h4, 'h5, 'h5, 'h3, 'h2, 'h5, 'h5}
var1 : 1100000111000111110000111110000111110000011000001111100000111110000011100001111100000111001111100000
arr : '{'h2, 'h2, 'h2, 'h2, 'h2, 'h2, 'h2, 'h2, 'h5, 'h2, 'h2, 'h2, 'h2, 'h2, 'h2, 'h2, 'h2, 'h3, 'h2, 'h2, 'h2, 'h4, 'h2, 'h2, 'h2, 'h2, 'h3, 'h2, 'h4, 'h2, 'h4, 'h2, 'h2, 'h2, 'h2, 'h4, 'h2, 'h4, 'h3, 'h2, 'h2, 'h2}
var1 : 0011001100110011000001100110011001100111001100111100110011000110000110000110011001111001111000110011
*/
https://www.linkedin.com/in/patel-rahulkumar/