The designer writes Verilog modules describing the circuit's structure and behavior. Combinational logic is expressed via assign or always @(*) blocks; sequential logic via always @(posedge clk) with non-blocking assignments (<=). The code is event-driven and concurrent — many always blocks run in parallel. A simulator (e.g., event-driven Icarus/ModelSim or cycle-based Verilator) runs a testbench that applies stimuli and checks responses. For fabrication, a synthesis tool (e.g., Yosys, Design Compiler) translates the synthesizable Verilog subset into a gate netlist, then mapped onto ASIC cells or FPGA resources. Key rules: use non-blocking assignments in sequential logic and blocking in combinational, write complete assignments (avoid unintended latches), and stay within the synthesizable language subset.
Rising IC complexity made schematic and gate-level design impractical. Verilog provided a text-based, hierarchical, simulatable, and synthesizable way to describe hardware at a high level (RTL), enabling pre-fabrication verification and automation of the path from description to finished circuit.
The basic unit of Verilog description: a block with input/output ports, composed hierarchically into larger circuits.
always blocks (combinational/sequential logic) and initial blocks (initialization/testbench) triggered by events, e.g., a clock edge.
Signal types: wire (continuously driven, connects elements) and reg (holds a value between procedural assignments).
Blocking (=) assignments model immediate (combinational) computation; non-blocking (<=) model simultaneous register updates on the clock edge.
Using = instead of <= in sequential logic (or vice versa) causes simulation–synthesis mismatches and race conditions.
Delays (#), unbounded loops, and some testbench constructs work in simulation but are not synthesizable.
An incomplete sensitivity list or missing else leads to simulation mismatch and inference of unintended latches.
Prabhu Goel, Phil Moorby, and Chi-Lai Huang create Verilog as a hardware description and simulation language; the name combines "verification" and "logic."
Cadence Design Systems acquires Gateway; Verilog is soon opened publicly (Open Verilog International), accelerating adoption.
Verilog becomes an open IEEE standard, alongside later 2001 (signed arithmetic) and 2005 revisions.
IEEE 1364-2005 is merged into the SystemVerilog standard (IEEE 1800-2009), adding advanced verification and object-oriented constructs.
The standard version (Verilog-95/2001/2005 or SystemVerilog 1800) determines available language and verification constructs.
Restricting to synthesizable constructs (vs. simulation-only) determines whether code can be realized in hardware.
Verilog describes concurrent hardware: all always blocks and continuous assignments run in parallel, reflecting the physical simultaneity of the circuit.
Verilog is one of the two main languages for describing designs mapped to FPGAs.
The same Verilog code synthesizes to ASIC or FPGA — the language is independent of the target technology.