Random System Functions
Table of Contents
$urandom( )
The system function $urandom provides a mechanism for generating pseudorandom numbers. The function returns a new 32-bit random number each time it is called. The number shall be unsigned.
variable = $urandom(seed);
The seed is an optional argument that determines the sequence of random numbers generated. The seed can be an integral expression. for a particular seed, the same value will get generated.
bit [31:0] addr1; bit [31:0] addr2; bit [64:0] addr3; bit [31:0] data;
addr1 = $urandom(); addr2 = $urandom(89); addr3 = {$urandom(),$urandom()}; data = $urandom * 6;
$random( )
$random() is same as $urandom() but it generates signed numbers.
$urandom_range( )
The $urandom_range() function returns an unsigned integer within a specified range.
$urandom_range( int unsigned maxval, int unsigned minval = 0 );addr1 = $urandom_range(30,20); addr2 = $urandom_range(20); //takes max value as '0' addr3 = $urandom_range(20,30); //considers max value as '30' and min value as '20'
random system methods examples
In the example below,
Shows usage of $urandom and $urandom_range.
module system_funcations; bit [31:0] addr1; bit [31:0] addr2; bit [64:0] addr3; bit [31:0] data; initial begin addr1 = $urandom(); addr2 = $urandom(89); addr3 = {$urandom(),$urandom()}; data = $urandom * 6; $display("addr1=%0d, addr2=%0d, addr3=%0d, data=%0d",addr1,addr2,addr3,data); addr1 = $urandom_range(30,20); addr2 = $urandom_range(20); //takes max value as '0' addr3 = $urandom_range(20,30); //considers max value as '30' and min value as '20' $display("addr1=%0d, addr2=%0d, addr3=%0d",addr1,addr2,addr3); end endmodule
Simulator Output
addr1=303379748, addr2=2153631232, addr3=423959822444962108, data=546103870 addr1=27, addr2=6, addr3=25