You are not allowed to use a @(posedge CLK) unless you are in a procedural
block.
So I guess your question Something like below:
What is the difference between
always@(posedge CLK) begin
/* Some code */
end
and
always begin
@(posedge CLK);
/* Some code */
end
As far as I know there is no behavioral difference between these.
But your synthesizer might not like the last example.
Also,
always@(posedge CLK) is used to describe a D-Flip Flop, while @(posedge
CLK); is used in testbench.
For example,
c = d;
@(posedge CLK);
a = b;
means a = b; will not be executed until there is a posedge CLK(i.e. at
the posedge CLK time slot, simulator will execute a = b) .
Best Regards,
Chetan Shah
Sr. ASIC Verification Engineer
Product Engineering Services
Software | Embedded | Semiconductor
www.einfochips.com
Frost & Sullivan Company of the Year 2013-14