|
Verilog-2001 added the much acclaimed @* combinational sensitivity list. The primary intent of this enhancement
8 w* O2 n" x* R9 D Y/ Kwas to create concise, error-free combinational always blocks. The @* basically means, "if Synopsys DC wants the+ e- e) _( x; ~
combinational signal in the sensitivity list, so do we!"
+ q. D ^& D& z' G7 b( MExample 1 and Example 2 show the Verilog-1995 and Verilog-2001 versions respectively of combinational
$ h3 O6 i0 F$ D( r. x5 L8 jsensitivity lists for the combinational always block of any of the three always block fsm1 coding styles.
7 o8 n) D. o f" p1 U& Z8 w
5 K9 p" y3 i' K* c( ialways @(state or go or ws)* q* Z' S( N0 o
begin
2 J% h9 j+ h/ a0 F! J...
; k1 |/ ^, p/ r* R2 ]/ ?+ k8 fend
: f( F( h0 }) J6 S$ u//Example 1& h4 N7 u- Z9 t& O( z5 n
+ P/ z5 |+ T7 S5 O S# e
6 r; _2 Y S% C' Talways @* S( `7 M7 {& C3 W9 V& A
begin2 G8 K, z0 b( Q& U7 U- m, G" |
...
) P+ R4 o2 j* iend
) j* u1 k) A3 o0 a/ F4 Z//Example 23 G7 ^$ ?! n( S2 n2 }
9 {# I7 t1 Z3 \
The @* combinational sensitivity list as defined in the IEEE Verilog-2001 Standard can be written with or without
" o1 Z4 q# p6 G2 X/ b2 c( zparentheses and with or without spaces as shown in Example 3. Unfortunately (* is the token that is used to open' y4 x" k5 Y4 y N; o: N* H
a Verilog-2001 attribute, so there is some debate about removing support for all but the always @* form of this
$ a& V; Z$ V j; l$ a( Gcombinational sensitivity list. In-house tools would probably also be easier to write if the in-house tools did not
9 }% x5 ^* h1 l @0 G: e6 Z9 yhave to parse anything but the most concise @* form. For these reasons, I recommend that users restrict their usage2 u7 P! A4 P& D$ V" n- e
of the combinational sensitivity list to the @* form.
# A% j8 t, k& ?- s) Salways @*
3 W8 i) d) x& ^% i# b# d) valways @ *' B# h/ J; Q6 j7 C5 I6 n7 }
always @(*)
1 t9 K) l+ c; |( W3 c9 zalways @ ( * )8 W" S! P2 n2 m+ A8 |
//Example 3 |
|