Dist keyword in constraints
The dist keyword is helpful whenever to have weighed distribution during randomization. The probability random value occurrence can be controlled using the dist keyword.
How to allocate weighted distribution?
There are two ways to provide weightage for values.
- Using :/ operator
- Using := operator
Syntax for the operator:
value :/ weightage
value := weightage
//Value - Random value of the variable
//Weightage - weight for random variable i.e. occurrence of value can be specified.
Note: The sum of weightage is not necessary to be 100.
:/ operator
- For specific value: Assign mentioned weight to that value
- For range of values ([<range1>: <range2>]): Assigns weight/(number of value) to each value in that range
:/ operator Example
constraint value_c {value dist {3:/4, [5:8] :/ 7}; }
//Elaboration:
value = 3. weightage = 4
value = 5. weightage = 7/4 = 1.75
value = 6. weightage = 7/4 = 1.75
value = 7. weightage = 7/4 = 1.75
value = 8. weightage = 7/4 = 1.75
:= operator
For a specific value or range of value, the mentioned weight is assigned.
:= operator Example
constraint value_c {value dist {3:=4, [5:8] := 7}; }
//Elaboration:
value = 3. weightage = 4
value = 5. weightage = 7
value = 6. weightage = 7
value = 7. weightage = 7
value = 8. weightage = 7
:/ and := Operator Example
In the below example, both operators are used. Notice how the occurrence of values is changed.
class seq_item;
rand bit [7:0] value1;
rand bit [7:0] value2;
constraint value1_c {value1 dist {3:/4, [5:8] :/ 7}; }
constraint value2_c {value2 dist {3:=4, [5:8] := 7}; }
endclass
module constraint_example;
seq_item item;
initial begin
item = new();
repeat(5) begin
item.randomize();
$display("value1 (with :/) = %0d, value2 (with :=)= %0d", item.value1, item.value2);
end
end
endmodule
Output:
value1 (with :/) = 3, value2 (with :=)= 8
value1 (with :/) = 5, value2 (with :=)= 5
value1 (with :/) = 3, value2 (with :=)= 7
value1 (with :/) = 3, value2 (with :=)= 6
value1 (with :/) = 3, value2 (with :=)= 6
System Verilog Tutorials