|
Verilog-2001 added the much acclaimed @* combinational sensitivity list. The primary intent of this enhancement) k# E8 B- k3 j( K: T
was to create concise, error-free combinational always blocks. The @* basically means, "if Synopsys DC wants the
' i. k a6 a3 b8 U. Z. H6 n+ wcombinational signal in the sensitivity list, so do we!"- {1 q9 O) Z5 U4 {1 g$ I+ k4 V+ m
Example 1 and Example 2 show the Verilog-1995 and Verilog-2001 versions respectively of combinational% f! u- N+ ?) v; H, N/ h i
sensitivity lists for the combinational always block of any of the three always block fsm1 coding styles.
6 C6 s. e# { J N' X# _
* z1 _' I5 ]6 `, s) falways @(state or go or ws)
* g! S1 B9 `0 L( U+ Obegin
0 X5 r. M* h4 Y K0 K...
9 a( F; { b2 q# S! _, Y7 z9 vend
; A5 ~0 {5 w/ Q8 o8 B; u' L' D//Example 1
5 c6 M" {6 ~$ O
C1 e1 u& \) q' B: u) Y5 B+ M. T1 v( P
always @*: D; P$ c" C- v+ {- D
begin
( @$ l# {2 k3 |0 Z.... A+ S( Q6 a; N g. @1 K$ d
end9 H) J8 A9 `- w I& q8 c4 G, _" s
//Example 24 @1 b/ Z0 O& K7 D4 z: Z
4 x, H4 c2 _+ S5 AThe @* combinational sensitivity list as defined in the IEEE Verilog-2001 Standard can be written with or without
2 N3 ~4 b) N2 f/ C: e$ |) T) rparentheses and with or without spaces as shown in Example 3. Unfortunately (* is the token that is used to open
7 K* ?- D# T7 P8 Q! Q! M8 L! Va Verilog-2001 attribute, so there is some debate about removing support for all but the always @* form of this
5 K3 m5 E/ c$ ocombinational sensitivity list. In-house tools would probably also be easier to write if the in-house tools did not9 X! C3 R- J( s! G
have to parse anything but the most concise @* form. For these reasons, I recommend that users restrict their usage- n6 X; E _8 l3 e) \4 t3 @
of the combinational sensitivity list to the @* form.. i) ~$ v* x' I4 O# q
always @*) Y- Q( O$ w- S% r* s/ N( j1 r# ^
always @ *
, }% ?; r+ x& h7 halways @(*)3 }' P: t; W$ L- d& ]
always @ ( * )+ K/ Z5 a; Y; Y5 }, `1 H
//Example 3 |
|