|
Verilog-2001 added the much acclaimed @* combinational sensitivity list. The primary intent of this enhancement. u, k- j* q$ E2 ?* ^& F
was to create concise, error-free combinational always blocks. The @* basically means, "if Synopsys DC wants the4 A: i# D7 e: m) g5 Z" ?1 _
combinational signal in the sensitivity list, so do we!"8 [. o h# n) d% a8 d9 u
Example 1 and Example 2 show the Verilog-1995 and Verilog-2001 versions respectively of combinational
, g @1 |+ O5 M4 Q ~1 |sensitivity lists for the combinational always block of any of the three always block fsm1 coding styles.
* q! X% L; E7 ]# ?( j3 D: f
! M" E# }+ ~; [1 Oalways @(state or go or ws)3 }7 o# e1 A* F* b
begin( b$ ~# X: Q! }* T
...
( w9 [. V$ G5 J- p* Y: }% X) B, Eend& j9 r% W K; Z4 W( V3 U) D& {# s& z
//Example 1
5 h) {6 Q. a F; d- M7 ]8 F
8 V, D+ V; s7 J! t0 P/ f, h5 w' N1 H5 R: M
always @*
3 N5 A" e+ J% v( g3 l! X5 J$ d L% wbegin
$ S4 X7 o. s5 {* G b: }...5 [( ]1 I1 j; E$ E) N3 ]. X6 R
end
% x P3 y0 S) y5 R* i0 S1 `' D' F8 E//Example 2
; b9 [6 e& |& V. R! I1 [9 [7 E% @: \7 z. d. R( E4 f
The @* combinational sensitivity list as defined in the IEEE Verilog-2001 Standard can be written with or without7 j7 \: W9 q. c4 A+ ?- s
parentheses and with or without spaces as shown in Example 3. Unfortunately (* is the token that is used to open+ N( P8 X }* I+ x* r
a Verilog-2001 attribute, so there is some debate about removing support for all but the always @* form of this! q- `& N0 X0 \+ C7 d% r
combinational sensitivity list. In-house tools would probably also be easier to write if the in-house tools did not
3 `* l) i5 \/ Rhave to parse anything but the most concise @* form. For these reasons, I recommend that users restrict their usage/ f& r' |, w. ~" W% O3 S
of the combinational sensitivity list to the @* form.
9 w6 t! r' {5 u; Walways @*/ V' i2 |4 B R3 P
always @ *
8 \9 i4 r9 H+ [always @(*)) d7 U. I2 }' C. p2 i
always @ ( * )& \4 j/ v; U0 l- W0 V
//Example 3 |
|