|
Verilog-2001 added the much acclaimed @* combinational sensitivity list. The primary intent of this enhancement
' s1 I( M9 W* V+ W/ j3 [$ hwas to create concise, error-free combinational always blocks. The @* basically means, "if Synopsys DC wants the/ ^* E! r/ U( Y
combinational signal in the sensitivity list, so do we!"* w8 Q0 o( G% p/ M' p7 y' T
Example 1 and Example 2 show the Verilog-1995 and Verilog-2001 versions respectively of combinational
6 a& K# C7 N3 L2 @0 g( I* gsensitivity lists for the combinational always block of any of the three always block fsm1 coding styles.
9 j" G& l. r% a3 k+ c* Y; P8 [! p
% H" k9 G# f! D: T8 `0 Galways @(state or go or ws)
/ e. v" k- }8 y' `begin
" Z) ~% A& f* o. S& L...
8 g7 s% d9 d( {9 w& }# d. i. K4 vend8 P' e0 _- R; P; X! P9 e: h
//Example 1$ R( n) W7 ~8 r1 d) p
+ H6 l* D2 x4 d6 `/ Q" I. [/ P
$ @& b8 ~8 Y" T& n
always @*
- A6 V1 x7 V2 jbegin
. }( B: k: Y: x/ C) p3 M7 E& i...
& ? {4 g( X4 d3 Q9 `end+ J% g) _6 c2 L+ n8 D' R
//Example 2
+ O% E1 P* `) e5 k- c1 M
3 J/ i, ` J* ?1 k8 _+ n. m' g' b* aThe @* combinational sensitivity list as defined in the IEEE Verilog-2001 Standard can be written with or without @3 H, T: \& T
parentheses and with or without spaces as shown in Example 3. Unfortunately (* is the token that is used to open' ~( D1 A8 h1 S0 T
a Verilog-2001 attribute, so there is some debate about removing support for all but the always @* form of this
# B; I9 m; N- [3 f0 f$ `7 W% ucombinational sensitivity list. In-house tools would probably also be easier to write if the in-house tools did not
+ G( X- F- Q* V. L4 H% D; G4 mhave to parse anything but the most concise @* form. For these reasons, I recommend that users restrict their usage& j, l8 C' e; p
of the combinational sensitivity list to the @* form.
3 q. w3 [8 ^- v' q6 Malways @*
8 i5 S. M4 p4 y" g0 nalways @ *
& ?! j5 r+ r6 }* t' z: N/ Malways @(*)
+ F! _! S7 h6 u" H6 r9 }always @ ( * )6 C2 u0 R% Y% k) p: p! w
//Example 3 |
|