Skip to content
DenseChip
Learn
PracticeCode labInterview
LearnPracticeCode labInterview

DenseChip

Navigate

Menu

LearnPracticeCode labInterview

Tools

All toolsSV editorCode repoResume
DenseChip

Practice, courses, and chip-design tools in one focused workspace.

LearnPracticeCode labInterviewToolsLearning paths

© 2026 DenseChip

AboutRoadmapCareersInternshipsFAQContactPrivacyTerms
← Topics
  1. Topics
  2. RTL Design

RTL Design

Beginner

Design working RTL from gates to FSMs, timing, CDC and bus interfaces.

Start courseAlgebra Before GatesOpen lesson

New to chips?Do Start Here first

Course map

  1. RTL Foundations
    36 lessons

    Starts with Algebra Before Gates

  2. Combinational Design
    25 lessons

    Starts with Propagation Delay and Levels of Logic

  3. Sequential Design
    27 lessons

    Starts with Edge-Triggered State Elements

  4. FSM & Control
    27 lessons

    Starts with Split Design: Intent First

  5. Timing & Clocking
    39 lessons

    Starts with Where RTL Meets STA

  6. Reset & CDC
    34 lessons

    Starts with Reset Is a System Contract

  7. Memory & Buses
    57 lessons

    Starts with Inference Starts from Coding Style

  8. Advanced RTL
    28 lessons

    Starts with Parameters vs localparams

  9. Senior & Interview
    76 lessons

    Starts with Clock gating done right

  10. Glossary and Notation
    1 lesson

    Starts with Glossary and Notation

About this course

Choose a learning path

Pick a path. Each one orders the same lessons for a different goal. Your progress counts on every path.

New terms or suffixes such as _q and rst_n? Keep the Glossary and notation page open beside the lessons.

New to the chip flow, or to simulators, Git and Make? Start with Start Here: RTL and Verification first, then come back here.

New to RTL, or returning after time away.

8 steps · 114 lessons

  1. 1RTL Foundations36 lessons
  2. 2Combinational Design25 lessons
  3. 3Sequential Design27 lessons
  4. 4Controller and Datapath6 lessons
  5. 5Moore vs Mealy4 lessons
  6. 6STA Foundations5 lessons
  7. 7Setup, Hold and Slack6 lessons
  8. 8Reset Architecture5 lessons

At the end you can: read small synchronous designs, write the basic templates from memory, and explain what limits their clock.

Who this course is for

This is a complete RTL design curriculum from first principles through senior/staff-level topics. Each lesson includes extended theory, ASCII diagrams, multiple Verilog examples, waveform guides, interview angles, and hands-on exercises.

  • Students and new grads entering VLSI/RTL roles

  • Engineers moving from verification or firmware into design

  • Interview prep for RTL/design positions (2–10 YOE)

  • Anyone replacing ad-hoc notes with a structured reference

Start here: 12 lessons for beginners

New to RTL? These twelve lessons are a first introduction, not the full beginner curriculum. Read them in order to meet the main ideas, then follow the Beginner path below for the complete sequence and practice. Each entry says what it teaches.

  1. Algebra Before Gates – Boolean algebra rules that simplify logic before it becomes gates.

  2. Truth Tables as a Debug Anchor – using truth tables to pin down what a block should do when debugging.

  3. Two's Complement Intuition – how negative numbers are represented and why the encoding works.

  4. Modules and Ports – how a Verilog module declares its interface and connects to other blocks.

  5. assign vs always – when a continuous assignment fits and when a procedural block fits.

  6. The Two Process Templates – the two standard always-block shapes for combinational and sequential logic.

  7. Blocking vs Non-blocking – why = and <= behave differently and how to avoid races.

  8. always_ff and always_comb – how SystemVerilog keywords state design intent for synthesis and simulation.

  9. Why Accidental Latches Happen – which coding gaps infer latches and how to close them.

  10. Synchronous Reset and Register Enable – how registers reset and when they update.

  11. Two-Process FSM Style – the recommended two-process structure for controllers.

  12. Minimal but Robust Testbench Structure – a small testbench shape that checks a design automatically.

Course scale

The course is organised into sections, topics and focused lessons, with theory, code, diagrams, review questions, and sign-off guidance.

Structure

Show how the course is organised
Diagram
rtl/                          course hub
rtl/<section>/                section hub (9 parts)
rtl/<section>/<topic>/        topic hub
rtl/<section>/<topic>/<sub>/  focused lesson

Lesson patterns

  • Worked examples and waveforms

  • Corner cases and stress tests

  • Integration and sign-off notes

  • Interview categories include advanced scenario + whiteboard drills

Learning paths

The three paths at the top of this page (Beginner, Interview and Senior RTL) list their steps in order, with reading time and, when you are signed in, your progress on each step.

What you will build

Things you build along the way, and the existing lessons where you build or see each one:

Build item

Where you build or see it

Counters and timers

Counters and timers

UART transmitter

UART transmitter

Controller + datapath (GCD)

Controller and datapath

Valid-ready pipeline

Valid/Ready Handshake, Valid/Ready Flow Control

Synchronous FIFO

Synchronous FIFO

AXI-Lite register block

AXI-Lite, Register-Map and CSR RTL

Asynchronous FIFO

Asynchronous FIFO

Final capstone

Capstone: Resilient Streaming Peripheral

Interview prep vs project work

How each section pays off in interviews and in day-to-day project work:

Section

Common in interviews

Matters most in project work

Foundations

Boolean algebra, blocking vs non-blocking

Widths, signedness and testbench habits

Combinational

Muxes, adders, latch causes

Latch-free coding and datapath area

Sequential

Counters, pipelines, skid buffers

Reset values, enables and stall handling

FSM

Sequence detectors, UART, GCD

Illegal states and outputs on idle cycles

Timing

Slack math, skew, exceptions

Depth budgets and constraint discipline

Reset & CDC

Synchronisers, async FIFO, pulses

Reset trees and hostile verification

Memory & buses

FIFOs, AXI-Lite, address maps

Backpressure, CSR semantics and integration

Advanced

Parameters, lint rules, assertions

Reuse, waivers and proof scope

Senior

Trade-offs with evidence, ECO choice

Closure, handoff and debug discipline

How to study

Follow these steps for each lesson, in the order your chosen path gives:

  • Read the core lesson first

  • Run or inspect the code example in simulation — reading is not enough

  • Answer the check-yourself questions before moving on

  • Review the interview angle for the lesson

  • Move on when you can explain the idea and write the pattern from memory

  • Estimated time: about 40 hours to read through the course, 80-120 hours if you also run every example and work the exercises.

Practice questions for this track