User guide
24-90
SystemVerilog Testbench Constructs
}
Figure 24-1
Figure 24-1 illustrates the dependencies between the variables. The
variable y must be solved before x (see x% $void(y) ==0;). y and
x must be solved before z (see z==$void(x*y);). Therefore, the
solving order is y, x and then z.
When can r be solved for?
• Can r be solved at the same time as y?
Consider the constraint x !=(y+r). If no solving order is
specified by unidirectional constraints, then r can be solved at the
same time as y and x. However, because of the existence of x%
$void(y) ==0 in the same constraint block, an ordering is
imposed. y, which is a function parameter in x%$void(y) ==0,
must be solved before x. This means that the three variables
cannot be solved for at the same time in x!=(y+r). y is
solved in y inside {2,3}, before x and r are solved.
Table 24-2
Constraint Function Parameter Non-Function Parameter
y inside {2,3}; y
x%void(y)==0; y x
x!=(y+r); x,y.r
z==void(x*y); x,y z
r == 5; r