#
One of the main feature of the systemverilog classes are randomization. You can randomize the system verilog classes with the randomize method using
obj.randomize();
It will randomize all the properties which are declared as rand and randc and can take any valid value for the varialbe. like for variable
rand bit [3:0] a;
A can take any value between 0 – 15. Constraints can be applied to or used to contol the value generated with randomization. In system verilog constraints can be applied in two ways :
- In line constraints
- Class constraints
Inline constraints can be attached to randomize using with.
– Simple relational constraint
– Change weighting of values with dist
But they are difficult to maintain and a better option is to use subclasses and inheritance.
01.class randframe;
02.local logic [3:0] addr;
03.rand local logic [3:0] len;
04.logic [7:0] data_arr [];
05. 
06.function new(input logic [3:0] pa);
07.addr = pa;
08.endfunction
09. 
10.function void post_randomize();
11.data_rand();
12.endfunction
13. 
14....
15. 
16.endclass
17. 
18.randframe one = new(.pa(5));
19. 
20.initial begin
21.assert(one.randomize() with {len>0; len<=7;});
22....
23.assert(one.randomize() with {len dist {[1:7]:=2, [8:15]:=1};});
24....