An event control suspends a process until a selected change occurs. A combinational sensitivity list must include every signal the process reads, or simulation may miss a required reevaluation. Verilog-2001's @* reduces manual list errors. A clock-edge event control instead describes when state is sampled.

Worked example

Changing either a or b causes the combinational expression to be evaluated. An explicit always @(a) block would omit changes to b and could simulate differently from the intended combinational circuit.

Verilog
module sensitive(input a,b,output reg y);
  always @* begin
    y=a | b;
  end
endmodule

What to watch for

@* is not a reset or initialization guarantee. Functions with hidden external reads and unusual constructs deserve careful tool-specific review; pass dependencies as explicit function arguments.

Try it yourself

Why can always @(a) y=a & b be a simulation bug?

Answer: If only b changes, the process does not wake up. The modeled output can remain stale even though the intended gate output should change.

How to study this topic

Save the example in a .v file and identify its top module before compiling. Separate stimulus and observation from synthesizable RTL. Change one input, width or boundary condition at a time, predict the result, and compare that prediction with simulation. A syntax check does not establish synthesis support or timing closure.

Continue learning

Previous: Event queues and delta cycles

Next: Timescale and simulation delays

Browse the complete Verilog index

Explore related programmes

These recorded programmes are upcoming. This article is general educational content, not a syllabus or course sample.

Verilog