|
Verilog-2001 added the much acclaimed @* combinational sensitivity list. The primary intent of this enhancement: {4 S* C5 h' U) [3 r6 v
was to create concise, error-free combinational always blocks. The @* basically means, "if Synopsys DC wants the9 k5 U& s: \0 M$ [( |- n4 W
combinational signal in the sensitivity list, so do we!"
) N- }- V6 B2 }; k$ V! u0 x$ \7 pExample 1 and Example 2 show the Verilog-1995 and Verilog-2001 versions respectively of combinational
8 I6 V7 a; @+ `/ Isensitivity lists for the combinational always block of any of the three always block fsm1 coding styles.
" ^) g+ c) g: f3 E) q5 x: ^% ?# Q4 Q$ B6 r6 U2 S
always @(state or go or ws)+ T" O3 y+ M) z9 f( l! n
begin
. B4 P" {9 i/ j, l+ X7 ]...8 z! I$ m; ^1 p7 ^
end
8 _ _/ T& u* z. R/ W( i& F//Example 14 Q: I0 R2 p O* b8 k J
& |( S; Z/ A$ [6 u) G8 r
, H7 I% Y& p1 {8 c4 ^7 W* [always @*+ B7 J5 R! S; y( Z% K$ z, U
begin
' a& i( L9 r5 a2 r# }...
. L- b n! g3 l5 m6 ]. \end
8 R5 R) G3 i: U4 l9 s3 h//Example 2
8 |1 D- G& ?! k* Q
+ p/ v% Q2 [- e) n; BThe @* combinational sensitivity list as defined in the IEEE Verilog-2001 Standard can be written with or without7 h& t& P- x) ^- [) e' q: H
parentheses and with or without spaces as shown in Example 3. Unfortunately (* is the token that is used to open; f( W, _6 o* f1 ^' e9 i" f" X7 w O
a Verilog-2001 attribute, so there is some debate about removing support for all but the always @* form of this
! E# V3 o! o$ f! j" q3 H: fcombinational sensitivity list. In-house tools would probably also be easier to write if the in-house tools did not
) j7 s% n4 [* e6 B5 ehave to parse anything but the most concise @* form. For these reasons, I recommend that users restrict their usage0 i1 z% J7 E/ m6 @
of the combinational sensitivity list to the @* form.
4 S& M' {( `2 v) {always @*' V2 v+ g$ I0 [* R7 u8 H% k; \4 ^7 n
always @ *. I" R; K$ k- d8 v" W( e7 k" f0 f
always @(*)8 F/ V) a' j+ p" c6 m
always @ ( * )
1 S7 m, O0 e1 D L+ U" ~; H P//Example 3 |
|