|
Verilog-2001 added the much acclaimed @* combinational sensitivity list. The primary intent of this enhancement2 k& L2 ~- L5 B, y. o/ ?* A
was to create concise, error-free combinational always blocks. The @* basically means, "if Synopsys DC wants the
# E; C3 O. o; Ycombinational signal in the sensitivity list, so do we!"
/ F" Y6 n. z( Z* R7 [2 kExample 1 and Example 2 show the Verilog-1995 and Verilog-2001 versions respectively of combinational
4 i0 d' n7 ^9 J- X' dsensitivity lists for the combinational always block of any of the three always block fsm1 coding styles.9 l/ Z9 x# }2 S5 Z* t1 _$ E$ o ~. _
: n* f/ k' _1 Ialways @(state or go or ws)
. y0 P: K- l' d+ D3 C+ f' jbegin
6 a# H4 M. a! J3 M. P...
( Z( D, |7 a4 ^+ {$ K8 send. z. M% j+ W, B- A- z5 ]
//Example 1
9 u( Y; u( x2 p6 F; ]8 r+ ~1 R U# i) c, x0 U( ?
; Y, B& I1 P9 `' z8 E S! Y' C6 X4 e6 R
always @*
: n: w6 R6 W2 w/ z* X' L# N; j6 ^begin
y+ F3 J) |! Z& B3 ?...! [7 S7 A; s( l% t% Y# H
end& l; m+ I v$ Q7 K" |+ U# |9 L
//Example 2# _# o) }" S6 i- M
$ d* s* v; l7 \5 d, S; o' gThe @* combinational sensitivity list as defined in the IEEE Verilog-2001 Standard can be written with or without/ o. H* M: T( T% I4 I* o0 e7 Y; {/ A; i
parentheses and with or without spaces as shown in Example 3. Unfortunately (* is the token that is used to open
* f, X" i) r- Ha Verilog-2001 attribute, so there is some debate about removing support for all but the always @* form of this
! k$ z- D! V1 O# W* i+ ucombinational sensitivity list. In-house tools would probably also be easier to write if the in-house tools did not
9 x2 S/ }0 D6 Zhave to parse anything but the most concise @* form. For these reasons, I recommend that users restrict their usage- L$ A" @7 L% t: ]
of the combinational sensitivity list to the @* form.6 ?( A3 X. f# U9 M
always @*
( d% Y2 e% i4 Zalways @ *% y) b8 w5 X3 q8 b: j
always @(*)
* F7 b8 A% q1 Y) I+ c' c3 Valways @ ( * )
+ z0 x& u/ B7 {9 M: J3 V2 A//Example 3 |
|