Random Variables
rand modifier
Variables declared with keyword rand are random variables. Their values are uniformly distributed over their range.
Syntax:
randc modifier
Variables declared with keyword randc are random-cyclic variables. Their random values are not repeated until every possible value has been assigned.
Random-cyclic can only be of type bit or enumerated types, and can be limited to a maximum size.
Syntax:
Contraint Blocks
rand modifier
Variables declared with keyword rand are random variables. Their values are uniformly distributed over their range.
Syntax:
randc modifier
Variables declared with keyword randc are random-cyclic variables. Their random values are not repeated until every possible value has been assigned.
Random-cyclic can only be of type bit or enumerated types, and can be limited to a maximum size.
Syntax:
Contraint Blocks
- The values of the random variables are determined using constraint expressions that are declared using constraint blocks.
- Constraint blocks are class members, like tasks, functions and variables.
- Constraint block names must be unique within a class
External Constraint Blocks
Constraint blocks can be declared outside a class declaration, just like external task and function bodies.
Inheritance
- Constraints follow the same general rules for inheritance as class variables, tasks and functions.
- A constraint in a derived class that uses the same name as a constraint in its parent class overrides the constraint in the base class.
Set Membership
- You can create sets of values with the inside operator.
- All values(either single value or values ranges), have an equal probability of being chosen.