3 posts.
Blocking (=) updates at once; nonblocking (<=) waits until every clocked block has read its inputs. Why a shift register with = becomes one flip-flop.
A 1011 sequence detector as a Moore FSM in three blocks (state, next state, output), checked against a reference model for 1000 random bits.
A combinational always block infers a latch when a path leaves an output unassigned, so it must hold its old value. How to spot it, and the fix.