Probabilistic Distribution Functions
Formal Definition
Probabilistic Distribution Functions provide the functionality of
random number generators.
Simplified Syntax
$dist_uniform (seed, start,
end) ;
$dist_normal (seed, mean,
standard_deviation) ;
$dist_exponential (seed,
mean) ;
$dist_poisson (seed, mean) ;
$dist_chi_square (seed,
degree_of_freedom) ;
$dist_t (seed,
degree_of_freedom) ;
$dist_erlang (seed, k_stage,
mean) ;
Description
Probabilistic distribution functions present a way to test your
design using a randomly generated data. Testbenches often do not
reveal irregularities in working models because designers tend to
write testbenches in a schematic fashion. Usually, test vectors
applied to the inputs of a module do not cover all possible states.
When used, these functions may find a specific input combination for
which the model does not work correctly. To enable repetitive design
debugging, the probabilistic distribution functions must return
recurrent data. This means that each time they are called they should
return the same values in the last call order.
Probabilistic distribution functions use several arguments for
generating data. A first function argument is a seed. Each time a
function is called, the seed argument determines an order of values
that are returned from the function. This argument must be a register
type value of an inout
direction. Users can initialize this value and let the system
override it. This will make these functions repetitive.
The $dist_uniform function
returns an integer value that is a random generated number in a range
depending on the start and end arguments. Returned values are
uniformly distributed. Both start and end arguments can be any
integer, positive or negative, however the start value should be
smaller than the end value.
The $dist_normal function
returns a number that is an average approach to the mean argument.
The mean argument is also used in $dist_expotential,
$dist_poisson and $dist_erlang.
The standard_deviation argument is used to determine the shape of
density. In $dist_chi_square
and $dist_t the shape of
density depends on the degree_of_freedom.
Examples
Example 1
reg [15:0] a ;
initial begin
a = $dist_exponential(60,
24);
end
Example 2
reg [15:0] a ;
initial begin
a = $dist_erlang(60,
24, 7) ;
end
Important Notes
