Friday, November 26, 2010

Randomization of floating point or Real variable !!!

What are the application areas of floating point numbers ?

1) Floating point numbers are used in PLL configuration were fractional values are required.
2) Processor,image processing & graphics applications mostly work on floating point numbers.

Vera/ NTB does not even have a real or a floating point type; forget about randomizing a floating point number. The workaround for this is to write your own floating point class, randomize the class and use it. System verilog has a real type which is used to represents a floating point number, but a real type cannot be randomized. The LRM does not support the randomization of real data types. Some time back when i was discussing about this with one of my friend he was telling me that system verilog committee was working on this, not sure how true this information is.


Vishnu Prasanth said...

But there is a way to generate random real numbers in Systemverilog.

reg sgn;
reg [10:0] exp;
reg [51:0] man;
real r_num;

sgn = $random;
exp = $random;
man = $random;
r_num = $bitstoreal({sgn,exp,man});
$display("r_num = %e",r_num);

saravanan said...

Yes, the method you have suggested will work.But it is procedural randomization,it is not through the constraint solver randomization. You can not have a real type to be rand variable in system verilog.