Change Section 15.10, page 188

The expression can be any SystemVerilog expression that evaluates to a positive integer value.

What constitutes a cycle is determined by the default clocking in effect (see Section 15.11). If no default clocking has been specified for the current module, interface, or program then the compiler shall issue an error.

 

Example:

## 5; // wait 5 cycles (clocking events) using the default clocking

## (j + 1); // wait j+1 cycles (clocking events) using the default clocking

The execution of a cycle delay statement is dependent upon the clocking event of the default clocking in effect. When the program execution reaches a cycle delay statement, the execution continues if there is a clocking event. Otherwise, the execution waits until the occurrence of a clocking event. For example,

module cpu( interface y );

...

default clocking bus @(posedge clk);

initial begin

a = b;

## 5; // delay statement (1)

c = d;

## 0; // delay statement (2)

e = f

...

end

endmodule

In the example above, when delay statement (1) is reached, it waits for next five clocking events of (posedge clk). When the execution reaches delay statement (2), the execution continues to the next statement if the clocking event (posedge clk) has occurred in the current time unit. Otherwise it waits, until the clocking event occurs and then continues to the next statement.