|
Verilog-2001 added the much acclaimed @* combinational sensitivity list. The primary intent of this enhancement
# W7 N# t5 N9 o) ^) z fwas to create concise, error-free combinational always blocks. The @* basically means, "if Synopsys DC wants the
9 F- l0 U9 \, F9 ucombinational signal in the sensitivity list, so do we!"
A3 h2 l, o y ]8 S7 K4 gExample 1 and Example 2 show the Verilog-1995 and Verilog-2001 versions respectively of combinational9 M3 V0 U/ O" T! P- w; C3 W( v6 a
sensitivity lists for the combinational always block of any of the three always block fsm1 coding styles.
- g+ \$ l2 g ^
, W$ _) d' n7 H; g B8 x- Halways @(state or go or ws)9 r5 I2 c4 _4 |, J# }
begin
2 P" W5 c7 d3 C0 B2 W& q0 @; o3 r4 Q& h...
/ _+ ?, Z7 K r1 S' v6 dend' ^. R) G% Z- [3 k5 o( h1 O- q
//Example 1
) ?# z* q. y1 N+ g3 Z, c
" x( F- Y; C5 a2 t
' z/ V3 o* k$ {. ?5 |always @*! M' E- k0 w$ v8 ^
begin
: q) A3 J4 v) [& s+ C...
{0 @& n# s+ E% S/ I2 rend3 o) W0 r: y2 K! [1 I; I
//Example 2( T& h6 B7 @. L, E- m5 r
) |. S8 K' \3 S: M0 }: M
The @* combinational sensitivity list as defined in the IEEE Verilog-2001 Standard can be written with or without! f! z7 q, C7 V( D
parentheses and with or without spaces as shown in Example 3. Unfortunately (* is the token that is used to open% ]) b! e, k# q W
a Verilog-2001 attribute, so there is some debate about removing support for all but the always @* form of this
, e6 s: b9 Z- Qcombinational sensitivity list. In-house tools would probably also be easier to write if the in-house tools did not
, H0 w: }. D* v: e% G/ d8 j0 e" Yhave to parse anything but the most concise @* form. For these reasons, I recommend that users restrict their usage) ^/ u* g$ J# X+ a3 k
of the combinational sensitivity list to the @* form.
! M" [( ~' W1 Salways @*/ p: r: e" n6 k/ V0 d# l
always @ *' w: m5 T9 o+ N* Z/ k, [! j# S" M
always @(*)
Z0 p7 u) ~ z# ^) m9 C2 malways @ ( * )! n/ w! E. ~! e$ X3 M9 ^4 e f
//Example 3 |
|