|
Verilog-2001 added the much acclaimed @* combinational sensitivity list. The primary intent of this enhancement
' H% P/ _5 n% H; ~. kwas to create concise, error-free combinational always blocks. The @* basically means, "if Synopsys DC wants the
1 r1 l8 D1 Q; j# D; xcombinational signal in the sensitivity list, so do we!"- |% @' s" R. d* ?" ^' L
Example 1 and Example 2 show the Verilog-1995 and Verilog-2001 versions respectively of combinational
7 F0 z4 e0 ^' z% b/ rsensitivity lists for the combinational always block of any of the three always block fsm1 coding styles.
( h4 S1 r3 D/ h* b V- x
+ f& W( \7 I1 k6 ~always @(state or go or ws) S: k1 ]1 E( U5 l- P' A f% }
begin, I; O' E$ |! F
..." J% x) W2 Y4 Y. M( B
end
& ?9 Z+ ^% @. G//Example 1! ^% I* }# w* b
' G9 m4 d) V+ y1 X3 I+ i5 J
& W9 P/ j0 ]) X5 w1 A: B
always @*, j$ ~* k& m% [: G `
begin
( T0 j4 P% O! F7 h: I' C' @...# p( d* i5 i) A G. ]1 ^7 R
end- S% `' ]" M7 `/ N8 o
//Example 2$ v* I. t8 N! P+ n1 _+ G$ X# k( F
) b; ^+ ~5 a) s2 V7 \6 R
The @* combinational sensitivity list as defined in the IEEE Verilog-2001 Standard can be written with or without! G1 J# X# x( f
parentheses and with or without spaces as shown in Example 3. Unfortunately (* is the token that is used to open6 m, p( v5 u F7 X1 G: W* g
a Verilog-2001 attribute, so there is some debate about removing support for all but the always @* form of this
( U& Y! [6 d; H. T5 gcombinational sensitivity list. In-house tools would probably also be easier to write if the in-house tools did not- t3 a W3 t. S2 ^+ d4 W. P
have to parse anything but the most concise @* form. For these reasons, I recommend that users restrict their usage
2 e* |7 g; L4 V1 G* c6 tof the combinational sensitivity list to the @* form.$ Z# X5 J; W1 O% H
always @*, R+ q5 M( V) L0 v( L
always @ *
J1 U: s5 }3 zalways @(*)
$ F2 q+ Q0 ]( W) A" n- J; Calways @ ( * )& y5 W9 D$ X3 Z- t: `* x
//Example 3 |
|