Back to EECS 31L Index

EECS 31L • 00. Motivation to Verilog and EECS 31L

EECS 31L • Study Notes • Motivation
Mahmoud Elfar • Spring 2026 • v0.1

v0.1: Initial version


Table of Contents

TBD


0. Motivation

I have decided to write these notes for two reasons:

  1. On one hand, the textbook is easy to follow but has too many “discrepancies” to my liking, and
  2. on the other hand, the IEEE 1800-2017 standard is very comprehensive (it is the definitive reference for Verilog) but can be difficult to navigate for beginners.
    Unfortunately, my attention span is non-existent, so my notes will look like lists within lists.

↑ Back to top


1. The Bigger Picture

Our goal for this course is for you to be able to describe (model), design, test, analyze, and (hopefully) synthesize digital systems using Verilog.
Verilog is a hardware description language (HDL) that allows you to model digital systems through describing things about them (dataflow, behavior, structure).

You should know:

We achieve those goals through the following objectives:

  1. Learn the language basics, which involves:
    1. Its syntax — what can you write without the simulator cursing back at you
    2. Its semantics — understanding the meaning behind what you write
    3. Its constructs — learning the common ways the language is used to do its job (in modeling digital systems)
  2. Learn the three levels of abstraction by which we can describe a digital system:
    1. By describing how the data flows through the system from inputs to outputs
    2. By describing how the system should behave based on inputs (present) and states (past)
    3. By describing how the system is structurally built from smaller, interconnected components
  3. Learn how to test and analyze our designs using simulation, which involves:
    1. Understanding how simulation works (simulation semantics, event scheduling, etc.)
    2. Learning how to write (virtual) testbenches to poke and prod our design to verify it works as intended
    3. Learning how to read and interpret simulation waveforms (timing diagrams drawn by the simulator) along with techniques for debugging and troubleshooting
  4. Learn how to synthesize our designs (translate them to actual hardware), which involves:
    1. Understanding the synthesis process and how it works
    2. Learning what constructs are synthesizable and which are not
    3. Learning what an FPGA is and ho to program one with our designs without setting the world on fire

2. The Picture Behind the Picture

There is a hidden agenda for EECS 31L that instructors choose to keep to themselves (for a good reason). The most important goal of this course is non of the above — those are just means to an end. The end here is:

↑ Back to top