Combinational logic computes outputs from current inputs only. There is no clocked memory: when inputs change, outputs update after propagation delay.
Mental model
| Idea | Meaning in RTL |
|---|---|
| Pure function | Same inputs → same outputs |
| No state | No flip-flops / latches intended |
| Glitch possible | Intermediate hazards can pulse briefly |
In Verilog / SystemVerilog, combinational blocks are usually:
- Continuous assigns:
assign y = a & b; always_comb/always @(*)with blocking (=) assignments
Design checklist
- Every output path must be assigned in every branch (avoid unintended latches).
- Prefer
always_combover sensitivity-list typos. - Keep combo cones readable — extract helpers / functions for repeated expressions.
- Do not sample with a clock inside a combo process.
Topics in this section
- Gates — boolean primitives
- Mux & demux — select paths
- Arithmetic — adders, compare, signedness
See also
- Synthesizable RTL
- Setup & hold — why combo delay still matters on clocked paths