Every lesson in this course is built the same way, so you always know where to look. This page explains the shape, the labels on code and simulation output, and how to tell you are actually learning rather than just reading.
Each lesson opens with why it matters, then the core idea, then the circuit or pattern (drawn as a diagram or a table where one helps). After that come the two signoff viewpoints: what the checking tools look for, and how you verify the behaviour. Common pitfalls and the interview angle follow where they earn their place, and every lesson ends with at least one check-yourself and links to related lessons. Section and topic hubs are shorter: a purpose paragraph, a table of their lessons with an After it you can column, and a suggested order.
Complete modules and testbenches compile and run under Icarus or Verilator and follow the self-checking convention: they print PASS or FAIL and call $finish. Anything else carries a label on its first line, and the label is part of the lesson:
Label | Meaning | How to read it |
|---|---|---|
| Partial code showing one idea, not a whole module. | Read for structure; do not compile it. |
| Intentionally wrong code demonstrating a violation. | Study the flaw, never copy the pattern. |
| Code that cannot run here, with the reason stated. | Read for intent; the reason tells you what is missing. |
Waveforms in this course come from real simulation through the course waveform generator, never hand-drawn. Each carries a caption beginning Simulation output followed by what the lanes show, plus a short How to read it note describing only what the lanes display. Deliberately unsafe CDC examples never claim a simulator reproduces real metastability: they either use a plainly written metastability-aware model (an old-or-new value inside a stated window, deterministic by seed or pattern) or appear as bad-example snippets.
Progress is measured by exit checks, not page views. Every topic hub table has an After it you can column: that sentence is the skill the topic promises, and you have finished the topic when you can perform it without the page open. Within lessons, the check-yourself blocks are the unit tests. Work the course in nav order inside each section, because each topic assumes the vocabulary of the previous one; the Reading Path gives the order across sections for each role.
Each check-yourself asks one question and hides its answer. Cover the answer, say yours out loud in full sentences, then compare: a match on the mechanism counts as a pass even if the wording differs, while a vaguer answer than the model means re-read the lesson. If you miss two in a row inside one topic, restart that topic rather than pushing on. The Capstone Signoff Lab is the final check-yourself for the whole course.
// not-run: needs a commercial simulator. Can you rely on its PASS claim?No. The label states the code was not executed here, so there is no observed result to rely on. Read it for the checking intent, and prove the behaviour with a runnable model instead.