<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Module 6: Verilog for Testbench &amp; Simulation on Circuit Quest</title>
    <link>https://circuit.quest/courses/digital-design-verilog/module-06/</link>
    <description>Recent content in Module 6: Verilog for Testbench &amp; Simulation on Circuit Quest</description>
    <generator>Hugo</generator>
    <language>en-us</language>
    <lastBuildDate>Sun, 05 Apr 2026 00:00:00 +0000</lastBuildDate>
    <atom:link href="https://circuit.quest/courses/digital-design-verilog/module-06/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>Guilty Until Proven Innocent</title>
      <link>https://circuit.quest/courses/digital-design-verilog/module-06/06-01-testbench-architecture/01-why-testbenches-exist/</link>
      <pubDate>Sun, 05 Apr 2026 00:00:00 +0000</pubDate>
      <guid>https://circuit.quest/courses/digital-design-verilog/module-06/06-01-testbench-architecture/01-why-testbenches-exist/</guid>
      <description>Synthesis passing is not the design working. What the simulator does, why hardware cannot be debugged like software, a first testbench, and the assumption every verification effort starts from.</description>
    </item>
    <item>
      <title>The Four Parts of a Testbench</title>
      <link>https://circuit.quest/courses/digital-design-verilog/module-06/06-01-testbench-architecture/02-anatomy-of-a-testbench/</link>
      <pubDate>Sun, 05 Apr 2026 00:00:00 +0000</pubDate>
      <guid>https://circuit.quest/courses/digital-design-verilog/module-06/06-01-testbench-architecture/02-anatomy-of-a-testbench/</guid>
      <description>Instance, stimulus, checker, report. Why the testbench has no ports, which side gets reg and which gets wire, and a skeleton to build on.</description>
    </item>
    <item>
      <title>Driving the Inputs</title>
      <link>https://circuit.quest/courses/digital-design-verilog/module-06/06-01-testbench-architecture/03-driving-the-dut/</link>
      <pubDate>Sun, 05 Apr 2026 00:00:00 +0000</pubDate>
      <guid>https://circuit.quest/courses/digital-design-verilog/module-06/06-01-testbench-architecture/03-driving-the-dut/</guid>
      <description>Exhaustive loops for combinational inputs, the drive-after-the-edge rule for clocked ones, why driving on the edge is a race, and tasks for stimulus that repeats.</description>
    </item>
    <item>
      <title>Sampling the Outputs</title>
      <link>https://circuit.quest/courses/digital-design-verilog/module-06/06-01-testbench-architecture/04-observing-and-sampling-outputs/</link>
      <pubDate>Sun, 05 Apr 2026 00:00:00 +0000</pubDate>
      <guid>https://circuit.quest/courses/digital-design-verilog/module-06/06-01-testbench-architecture/04-observing-and-sampling-outputs/</guid>
      <description>Why reading a registered output at the clock edge gives last cycle&amp;rsquo;s value, the two safe ways to sample, and $strobe against $display with a trace.</description>
    </item>
    <item>
      <title>Automatic Pass and Fail</title>
      <link>https://circuit.quest/courses/digital-design-verilog/module-06/06-01-testbench-architecture/05-the-self-checking-loop/</link>
      <pubDate>Sun, 05 Apr 2026 00:00:00 +0000</pubDate>
      <guid>https://circuit.quest/courses/digital-design-verilog/module-06/06-01-testbench-architecture/05-the-self-checking-loop/</guid>
      <description>An error counter, a comparison with !==, a final verdict, and a check task: the 4-bit adder tested over all 512 input combinations without anyone reading a number.</description>
    </item>
    <item>
      <title>$display, $monitor and $strobe</title>
      <link>https://circuit.quest/courses/digital-design-verilog/module-06/06-02-simulation-only-constructs/01-display-monitor-and-strobe/</link>
      <pubDate>Sun, 05 Apr 2026 00:00:00 +0000</pubDate>
      <guid>https://circuit.quest/courses/digital-design-verilog/module-06/06-02-simulation-only-constructs/01-display-monitor-and-strobe/</guid>
      <description>Three ways to print, firing at three different points in the time step, with the format specifiers, $timeformat, $write, and a trace that shows all three side by side.</description>
    </item>
    <item>
      <title>$finish, $stop and Time</title>
      <link>https://circuit.quest/courses/digital-design-verilog/module-06/06-02-simulation-only-constructs/02-simulation-control-tasks/</link>
      <pubDate>Sun, 05 Apr 2026 00:00:00 +0000</pubDate>
      <guid>https://circuit.quest/courses/digital-design-verilog/module-06/06-02-simulation-only-constructs/02-simulation-control-tasks/</guid>
      <description>Ending a simulation, reading the time, the watchdog that kills a hung run, and the four severity tasks that report failures with a grade.</description>
    </item>
    <item>
      <title>Writing to Files</title>
      <link>https://circuit.quest/courses/digital-design-verilog/module-06/06-02-simulation-only-constructs/03-file-io-in-verilog/</link>
      <pubDate>Sun, 05 Apr 2026 00:00:00 +0000</pubDate>
      <guid>https://circuit.quest/courses/digital-design-verilog/module-06/06-02-simulation-only-constructs/03-file-io-in-verilog/</guid>
      <description>$fopen, $fdisplay and $fclose; the multichannel descriptor that writes to a file and the console with one call; reading with $fscanf; and a testbench that logs every vector.</description>
    </item>
    <item>
      <title>$readmemh and $readmemb</title>
      <link>https://circuit.quest/courses/digital-design-verilog/module-06/06-02-simulation-only-constructs/04-readmemh-and-readmemb/</link>
      <pubDate>Sun, 05 Apr 2026 00:00:00 +0000</pubDate>
      <guid>https://circuit.quest/courses/digital-design-verilog/module-06/06-02-simulation-only-constructs/04-readmemh-and-readmemb/</guid>
      <description>Test vectors as data in a text file rather than literals in the testbench: the file format, loading into an array, address ranges, packed records, and an ALU testbench driven from a file.</description>
    </item>
    <item>
      <title>#delay, @(event) and wait()</title>
      <link>https://circuit.quest/courses/digital-design-verilog/module-06/06-02-simulation-only-constructs/05-timing-control-constructs/</link>
      <pubDate>Sun, 05 Apr 2026 00:00:00 +0000</pubDate>
      <guid>https://circuit.quest/courses/digital-design-verilog/module-06/06-02-simulation-only-constructs/05-timing-control-constructs/</guid>
      <description>The three ways a testbench yields and waits: a fixed delay, an edge, or a condition. When each is right, why wait() catches a signal that is already high, and a reset-and-handshake sequence using all three.</description>
    </item>
    <item>
      <title>Generating Clocks</title>
      <link>https://circuit.quest/courses/digital-design-verilog/module-06/06-03-clocks-and-resets/01-generating-clocks/</link>
      <pubDate>Sun, 05 Apr 2026 00:00:00 +0000</pubDate>
      <guid>https://circuit.quest/courses/digital-design-verilog/module-06/06-03-clocks-and-resets/01-generating-clocks/</guid>
      <description>The three-line clock, why the reg must be initialised, the forever form, duty cycles other than 50 percent, several clocks, and phase offsets.</description>
    </item>
    <item>
      <title>Reset in the Testbench</title>
      <link>https://circuit.quest/courses/digital-design-verilog/module-06/06-03-clocks-and-resets/02-reset-assertion-protocols/</link>
      <pubDate>Sun, 05 Apr 2026 00:00:00 +0000</pubDate>
      <guid>https://circuit.quest/courses/digital-design-verilog/module-06/06-03-clocks-and-resets/02-reset-assertion-protocols/</guid>
      <description>How long to hold reset, why to release it a little after a clock edge whether the design&amp;rsquo;s reset is synchronous or not, the active-low convention, and a template.</description>
    </item>
    <item>
      <title>Initialisation</title>
      <link>https://circuit.quest/courses/digital-design-verilog/module-06/06-03-clocks-and-resets/03-initialization-sequences/</link>
      <pubDate>Sun, 05 Apr 2026 00:00:00 +0000</pubDate>
      <guid>https://circuit.quest/courses/digital-design-verilog/module-06/06-03-clocks-and-resets/03-initialization-sequences/</guid>
      <description>How one undriven input turns a whole design to x, the start-up order that prevents it, inline against procedural initial values, driving x on purpose, and what x looks like in a printout.</description>
    </item>
    <item>
      <title>Two Clocks</title>
      <link>https://circuit.quest/courses/digital-design-verilog/module-06/06-03-clocks-and-resets/04-multi-clock-testbenches/</link>
      <pubDate>Sun, 05 Apr 2026 00:00:00 +0000</pubDate>
      <guid>https://circuit.quest/courses/digital-design-verilog/module-06/06-03-clocks-and-resets/04-multi-clock-testbenches/</guid>
      <description>Two independent clocks, the rule that each signal is driven from the clock of the domain it feeds, resets in parallel with fork and join, and crossing domains with a handshake rather than a delay.</description>
    </item>
    <item>
      <title>Why Checking Has to Be Automatic</title>
      <link>https://circuit.quest/courses/digital-design-verilog/module-06/06-04-self-checking-tests/01-the-pass-fail-mindset/</link>
      <pubDate>Sun, 05 Apr 2026 00:00:00 +0000</pubDate>
      <guid>https://circuit.quest/courses/digital-design-verilog/module-06/06-04-self-checking-tests/01-the-pass-fail-mindset/</guid>
      <description>The arithmetic of input spaces, what regression testing means, what a bug costs at each stage, and the same adder tested by eye and by code.</description>
    </item>
    <item>
      <title>$error, $fatal and Assertions</title>
      <link>https://circuit.quest/courses/digital-design-verilog/module-06/06-04-self-checking-tests/02-immediate-assertions-and-error-tasks/</link>
      <pubDate>Sun, 05 Apr 2026 00:00:00 +0000</pubDate>
      <guid>https://circuit.quest/courses/digital-design-verilog/module-06/06-04-self-checking-tests/02-immediate-assertions-and-error-tasks/</guid>
      <description>The four severity tasks and when each fits, the immediate assertion form, what a useful error message contains, and a check task that uses all of them.</description>
    </item>
    <item>
      <title>Reference Models</title>
      <link>https://circuit.quest/courses/digital-design-verilog/module-06/06-04-self-checking-tests/03-golden-reference-models/</link>
      <pubDate>Sun, 05 Apr 2026 00:00:00 +0000</pubDate>
      <guid>https://circuit.quest/courses/digital-design-verilog/module-06/06-04-self-checking-tests/03-golden-reference-models/</guid>
      <description>A second, obviously correct implementation beside the design, computing the expected value for any input: a multiplier, a CRC, and a stateful counter model.</description>
    </item>
    <item>
      <title>The Comparison</title>
      <link>https://circuit.quest/courses/digital-design-verilog/module-06/06-04-self-checking-tests/04-comparing-dut-vs-reference/</link>
      <pubDate>Sun, 05 Apr 2026 00:00:00 +0000</pubDate>
      <guid>https://circuit.quest/courses/digital-design-verilog/module-06/06-04-self-checking-tests/04-comparing-dut-vs-reference/</guid>
      <description>Why == lets an x pass and === does not, a reusable check task, an exhaustive loop for 8-bit inputs, and a corner-value set for 32-bit ones.</description>
    </item>
    <item>
      <title>Directed Tests</title>
      <link>https://circuit.quest/courses/digital-design-verilog/module-06/06-04-self-checking-tests/05-directed-tests-and-test-vectors/</link>
      <pubDate>Sun, 05 Apr 2026 00:00:00 +0000</pubDate>
      <guid>https://circuit.quest/courses/digital-design-verilog/module-06/06-04-self-checking-tests/05-directed-tests-and-test-vectors/</guid>
      <description>The inputs most likely to fail, named test cases so that a failure says what broke, a directed suite followed by a sweep, and the tiers a test suite falls into.</description>
    </item>
    <item>
      <title>VCD Files</title>
      <link>https://circuit.quest/courses/digital-design-verilog/module-06/06-05-waveform-analysis/01-value-change-dump/</link>
      <pubDate>Sun, 05 Apr 2026 00:00:00 +0000</pubDate>
      <guid>https://circuit.quest/courses/digital-design-verilog/module-06/06-05-waveform-analysis/01-value-change-dump/</guid>
      <description>The two-line dump, what the depth and scope arguments do, keeping the file small, windowed recording, what the file looks like inside, and the FST alternative.</description>
    </item>
    <item>
      <title>Getting Around GTKWave</title>
      <link>https://circuit.quest/courses/digital-design-verilog/module-06/06-05-waveform-analysis/02-navigating-gtkwave/</link>
      <pubDate>Sun, 05 Apr 2026 00:00:00 +0000</pubDate>
      <guid>https://circuit.quest/courses/digital-design-verilog/module-06/06-05-waveform-analysis/02-navigating-gtkwave/</guid>
      <description>Opening a file, adding signals, zooming, the two cursors and what they measure, groups and aliases, radix, and the save file that keeps your layout.</description>
    </item>
    <item>
      <title>Reading Waveforms</title>
      <link>https://circuit.quest/courses/digital-design-verilog/module-06/06-05-waveform-analysis/03-reading-waveforms-like-a-pro/</link>
      <pubDate>Sun, 05 Apr 2026 00:00:00 +0000</pubDate>
      <guid>https://circuit.quest/courses/digital-design-verilog/module-06/06-05-waveform-analysis/03-reading-waveforms-like-a-pro/</guid>
      <description>Work from the wrong output backwards; then the shapes to recognise: x propagation, glitches, setup and hold signatures, state decoding with a translate file, and pipeline latency.</description>
    </item>
    <item>
      <title>From a Waveform to a Fix</title>
      <link>https://circuit.quest/courses/digital-design-verilog/module-06/06-05-waveform-analysis/04-from-waveform-to-bug-fix/</link>
      <pubDate>Sun, 05 Apr 2026 00:00:00 +0000</pubDate>
      <guid>https://circuit.quest/courses/digital-design-verilog/module-06/06-05-waveform-analysis/04-from-waveform-to-bug-fix/</guid>
      <description>One bug the whole way: the error message, checking the inputs, tracing the datapath, a specific hypothesis, the fix, the re-run and the regression, with an off-by-one counter as the example.</description>
    </item>
  </channel>
</rss>
