This document provides an introduction and overview of Verilog HDL (Hardware Description Language). It discusses how Verilog is used to model event-driven digital systems through simulation. It describes the basic limitations of Verilog in only describing digital systems. It also outlines the different abstraction levels in Verilog including data flow, behavioral, gate, and switch levels. Finally, it covers some main language concepts in Verilog including concurrency, structure, procedural statements, time, user identifiers, comments, value sets, numbers, nets, registers, and vectors.