User guide

2-19
Modeling Your Design
Using either blocking or nonblocking procedural assignment
statements in the always block does not prevent VCS from inferring
a sequential device, but in VCS blocking procedural assignment
statements are more efficient.
Synopsys recommends zero delay nonblocking assignment
statements to avoid race conditions.
IEEE Std 1364-2001 describes blocking and nonblocking procedural
assignment statements on pages 119-124.
Place Task Enabling Statements in Their Own always Block and
Use No Delays
IEEE Std 1364-2001 defines tasks and task enabling statements on
pages 151-156.
VCS infers that an always block that contains a task enabling
statement is a sequential device only when there are no delays in the
task declaration.
All Sequential Controls Must Be in the Sensitivity List
To borrow a concept from VHDL, the sensitivity list for an always
block is the event control that immediately follows the always
keyword.
IEEE Std 1364-2001 defines event controls on page 138 and
mentions sensitivity lists on page 139.
For correct inference, all sequential controls must be in the sensitivity
list. The following code examples illustrate this rule:
VCS does not infer the following DFF to be a sequential device:
always @ (d)