<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Module 5: Behavioral Verilog for Synthesis on Circuit Quest</title>
    <link>https://circuit.quest/courses/digital-design-verilog/module-05/</link>
    <description>Recent content in Module 5: Behavioral Verilog for Synthesis on Circuit Quest</description>
    <generator>Hugo</generator>
    <language>en-us</language>
    <lastBuildDate>Sun, 01 Mar 2026 00:00:00 +0000</lastBuildDate>
    <atom:link href="https://circuit.quest/courses/digital-design-verilog/module-05/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>Everything Runs at Once</title>
      <link>https://circuit.quest/courses/digital-design-verilog/module-05/05-01-procedural-blocks/01-the-concurrent-world-of-verilog/</link>
      <pubDate>Sun, 01 Mar 2026 00:00:00 +0000</pubDate>
      <guid>https://circuit.quest/courses/digital-design-verilog/module-05/05-01-procedural-blocks/01-the-concurrent-world-of-verilog/</guid>
      <description>always blocks, assigns and instances are all active at once; how the event-driven simulator models that; and the two places where the order the simulator picks can change the answer.</description>
    </item>
    <item>
      <title>always and initial</title>
      <link>https://circuit.quest/courses/digital-design-verilog/module-05/05-01-procedural-blocks/02-always-vs-initial/</link>
      <pubDate>Sun, 01 Mar 2026 00:00:00 +0000</pubDate>
      <guid>https://circuit.quest/courses/digital-design-verilog/module-05/05-01-procedural-blocks/02-always-vs-initial/</guid>
      <description>always runs forever and is hardware; initial runs once at time zero and is not. The three forms of always, what initial is for, and why using it to initialise a register fails in silicon.</description>
    </item>
    <item>
      <title>Blocking Assignments</title>
      <link>https://circuit.quest/courses/digital-design-verilog/module-05/05-01-procedural-blocks/03-blocking-assignments/</link>
      <pubDate>Sun, 01 Mar 2026 00:00:00 +0000</pubDate>
      <guid>https://circuit.quest/courses/digital-design-verilog/module-05/05-01-procedural-blocks/03-blocking-assignments/</guid>
      <description>What blocking means, why sequential steps inside a combinational block still produce combinational logic, a mux and a priority encoder done right, and the race that = creates in a clocked block.</description>
    </item>
    <item>
      <title>Non-Blocking Assignments</title>
      <link>https://circuit.quest/courses/digital-design-verilog/module-05/05-01-procedural-blocks/04-nonblocking-assignments/</link>
      <pubDate>Sun, 01 Mar 2026 00:00:00 +0000</pubDate>
      <guid>https://circuit.quest/courses/digital-design-verilog/module-05/05-01-procedural-blocks/04-nonblocking-assignments/</guid>
      <description>The two-phase time step: every right-hand side is read, then every left-hand side is updated. Why that makes flip-flop models correct whatever order the blocks run in, shown on a swap and a pipeline.</description>
    </item>
    <item>
      <title>The Scheduler</title>
      <link>https://circuit.quest/courses/digital-design-verilog/module-05/05-01-procedural-blocks/05-the-nba-scheduling-model/</link>
      <pubDate>Sun, 01 Mar 2026 00:00:00 +0000</pubDate>
      <guid>https://circuit.quest/courses/digital-design-verilog/module-05/05-01-procedural-blocks/05-the-nba-scheduling-model/</guid>
      <description>The stratified event queue: active, non-blocking and postponed regions, delta cycles, a clock edge traced with and without the race, and why $display lies where $strobe does not.</description>
    </item>
    <item>
      <title>The Sensitivity List</title>
      <link>https://circuit.quest/courses/digital-design-verilog/module-05/05-02-sensitivity-lists/01-what-is-a-sensitivity-list/</link>
      <pubDate>Sun, 01 Mar 2026 00:00:00 +0000</pubDate>
      <guid>https://circuit.quest/courses/digital-design-verilog/module-05/05-02-sensitivity-lists/01-what-is-a-sensitivity-list/</guid>
      <description>What the @(&amp;hellip;) means, level against edge sensitivity, and how that choice decides whether the block becomes gates, a flip-flop or a latch.</description>
    </item>
    <item>
      <title>always @(*)</title>
      <link>https://circuit.quest/courses/digital-design-verilog/module-05/05-02-sensitivity-lists/02-always-star-construct/</link>
      <pubDate>Sun, 01 Mar 2026 00:00:00 +0000</pubDate>
      <guid>https://circuit.quest/courses/digital-design-verilog/module-05/05-02-sensitivity-lists/02-always-star-construct/</guid>
      <description>The automatic sensitivity list: what it includes, what it leaves out, converting old code to it, and the SystemVerilog always_comb that goes one step further.</description>
    </item>
    <item>
      <title>The Missing Signal</title>
      <link>https://circuit.quest/courses/digital-design-verilog/module-05/05-02-sensitivity-lists/03-incomplete-sensitivity-lists/</link>
      <pubDate>Sun, 01 Mar 2026 00:00:00 +0000</pubDate>
      <guid>https://circuit.quest/courses/digital-design-verilog/module-05/05-02-sensitivity-lists/03-incomplete-sensitivity-lists/</guid>
      <description>A missing signal traced event by event: the simulation models storage the synthesiser will not build, the tests pass, and the silicon is different. How to see it and the one fix.</description>
    </item>
    <item>
      <title>Accidental Latches</title>
      <link>https://circuit.quest/courses/digital-design-verilog/module-05/05-02-sensitivity-lists/04-latch-inference-and-avoidance/</link>
      <pubDate>Sun, 01 Mar 2026 00:00:00 +0000</pubDate>
      <guid>https://circuit.quest/courses/digital-design-verilog/module-05/05-02-sensitivity-lists/04-latch-inference-and-avoidance/</guid>
      <description>The two shapes of code that make the synthesiser build a latch, the default-assignment habit that rules them out, what the warnings look like, and the few places a latch is meant.</description>
    </item>
    <item>
      <title>if and else</title>
      <link>https://circuit.quest/courses/digital-design-verilog/module-05/05-03-conditional-and-case/01-if-else-in-always-blocks/</link>
      <pubDate>Sun, 01 Mar 2026 00:00:00 +0000</pubDate>
      <guid>https://circuit.quest/courses/digital-design-verilog/module-05/05-03-conditional-and-case/01-if-else-in-always-blocks/</guid>
      <description>An if-else chain is a chain of muxes with the first condition winning. When that priority is what the specification wants, what it costs in depth, and why an if without else is a latch in one kind of block and an enable in the other.</description>
    </item>
    <item>
      <title>case</title>
      <link>https://circuit.quest/courses/digital-design-verilog/module-05/05-03-conditional-and-case/02-case-statement/</link>
      <pubDate>Sun, 01 Mar 2026 00:00:00 +0000</pubDate>
      <guid>https://circuit.quest/courses/digital-design-verilog/module-05/05-03-conditional-and-case/02-case-statement/</guid>
      <description>case compares one expression against a list of values. With distinct constant values it builds a flat decoder rather than a chain; it needs a default for the same reason if needs an else; and it is the natural way to decode a state.</description>
    </item>
    <item>
      <title>casez, and Why Not casex</title>
      <link>https://circuit.quest/courses/digital-design-verilog/module-05/05-03-conditional-and-case/03-casex-and-casez/</link>
      <pubDate>Sun, 01 Mar 2026 00:00:00 +0000</pubDate>
      <guid>https://circuit.quest/courses/digital-design-verilog/module-05/05-03-conditional-and-case/03-casex-and-casez/</guid>
      <description>Both add don&amp;rsquo;t-care bits to case items. casez treats ? and z as wildcards; casex also treats x as one, which hides unknowns in simulation and gives silicon that behaves differently. Use casez.</description>
    </item>
    <item>
      <title>full_case and parallel_case</title>
      <link>https://circuit.quest/courses/digital-design-verilog/module-05/05-03-conditional-and-case/04-full-case-and-parallel-case/</link>
      <pubDate>Sun, 01 Mar 2026 00:00:00 +0000</pubDate>
      <guid>https://circuit.quest/courses/digital-design-verilog/module-05/05-03-conditional-and-case/04-full-case-and-parallel-case/</guid>
      <description>Two synthesis pragmas that promise the tool a case is complete or its arms exclusive, the mismatch you get when the promise is false, and the SystemVerilog keywords that replace them.</description>
    </item>
    <item>
      <title>Priority or Parallel</title>
      <link>https://circuit.quest/courses/digital-design-verilog/module-05/05-03-conditional-and-case/05-priority-vs-parallel-decode/</link>
      <pubDate>Sun, 01 Mar 2026 00:00:00 +0000</pubDate>
      <guid>https://circuit.quest/courses/digital-design-verilog/module-05/05-03-conditional-and-case/05-priority-vs-parallel-decode/</guid>
      <description>Choosing between a priority chain and a flat decoder on purpose: what each costs, which specifications need priority, the accidental-priority bug, and a parameterised encoder with an exhaustive test.</description>
    </item>
    <item>
      <title>for Loops and Synthesis</title>
      <link>https://circuit.quest/courses/digital-design-verilog/module-05/05-04-loops/01-for-loops-and-synthesis/</link>
      <pubDate>Sun, 01 Mar 2026 00:00:00 +0000</pubDate>
      <guid>https://circuit.quest/courses/digital-design-verilog/module-05/05-04-loops/01-for-loops-and-synthesis/</guid>
      <description>A for loop in RTL is unrolled into parallel hardware when the design is built, not run when it operates. What that requires of the loop, and a parity generator and a popcount that scale with a parameter.</description>
    </item>
    <item>
      <title>while, repeat and forever</title>
      <link>https://circuit.quest/courses/digital-design-verilog/module-05/05-04-loops/02-while-repeat-and-forever/</link>
      <pubDate>Sun, 01 Mar 2026 00:00:00 +0000</pubDate>
      <guid>https://circuit.quest/courses/digital-design-verilog/module-05/05-04-loops/02-while-repeat-and-forever/</guid>
      <description>The other three loops, which ones synthesise, and what each is for in a testbench: waiting a number of cycles, waiting for a condition, and generating a clock.</description>
    </item>
    <item>
      <title>Loops as Hardware Generators</title>
      <link>https://circuit.quest/courses/digital-design-verilog/module-05/05-04-loops/03-loops-for-hardware-patterns/</link>
      <pubDate>Sun, 01 Mar 2026 00:00:00 +0000</pubDate>
      <guid>https://circuit.quest/courses/digital-design-verilog/module-05/05-04-loops/03-loops-for-hardware-patterns/</guid>
      <description>Four circuits built with a parameterised for loop: a Gray code encoder, a leading-zero counter, a bit reversal that costs no gates, and an equality comparator, with a self-checking testbench.</description>
    </item>
    <item>
      <title>generate for and Procedural for</title>
      <link>https://circuit.quest/courses/digital-design-verilog/module-05/05-04-loops/04-generate-for-vs-procedural-loops/</link>
      <pubDate>Sun, 01 Mar 2026 00:00:00 +0000</pubDate>
      <guid>https://circuit.quest/courses/digital-design-verilog/module-05/05-04-loops/04-generate-for-vs-procedural-loops/</guid>
      <description>Two loops with one keyword: a procedural for unrolls an expression inside a block, a generate for stamps out instances, wires and assigns at module level. Which does what, and the label that makes generated instances addressable.</description>
    </item>
    <item>
      <title>Inferring Flip-Flops</title>
      <link>https://circuit.quest/courses/digital-design-verilog/module-05/05-05-flip-flops-and-registers/01-inferring-d-flip-flops/</link>
      <pubDate>Sun, 01 Mar 2026 00:00:00 +0000</pubDate>
      <guid>https://circuit.quest/courses/digital-design-verilog/module-05/05-05-flip-flops-and-registers/01-inferring-d-flip-flops/</guid>
      <description>Three lines that become a physical flip-flop, why the edge in the sensitivity list is what does it, several registers in one block, the logic between the edges, and checking the result in Yosys.</description>
    </item>
    <item>
      <title>Reset</title>
      <link>https://circuit.quest/courses/digital-design-verilog/module-05/05-05-flip-flops-and-registers/02-synchronous-vs-asynchronous-reset/</link>
      <pubDate>Sun, 01 Mar 2026 00:00:00 +0000</pubDate>
      <guid>https://circuit.quest/courses/digital-design-verilog/module-05/05-05-flip-flops-and-registers/02-synchronous-vs-asynchronous-reset/</guid>
      <description>Synchronous and asynchronous reset in Verilog, what each costs, the release-timing problem of the asynchronous kind, and the two-flop synchroniser that asserts asynchronously and releases synchronously.</description>
    </item>
    <item>
      <title>Enables and Loads</title>
      <link>https://circuit.quest/courses/digital-design-verilog/module-05/05-05-flip-flops-and-registers/03-clock-enable-and-load-signals/</link>
      <pubDate>Sun, 01 Mar 2026 00:00:00 +0000</pubDate>
      <guid>https://circuit.quest/courses/digital-design-verilog/module-05/05-05-flip-flops-and-registers/03-clock-enable-and-load-signals/</guid>
      <description>The enable pattern that maps onto a flip-flop&amp;rsquo;s clock-enable pin, the priority between reset, clear and enable, and why gating a clock with an AND gate in RTL is the one thing not to do.</description>
    </item>
    <item>
      <title>Register Patterns</title>
      <link>https://circuit.quest/courses/digital-design-verilog/module-05/05-05-flip-flops-and-registers/04-register-design-patterns/</link>
      <pubDate>Sun, 01 Mar 2026 00:00:00 +0000</pubDate>
      <guid>https://circuit.quest/courses/digital-design-verilog/module-05/05-05-flip-flops-and-registers/04-register-design-patterns/</guid>
      <description>Six register shapes that recur in every design, up counter, up/down counter, modulo-N counter, serial-in and parallel-in shift registers, and a saturating accumulator, all the same enable-and-reset structure with a different next value.</description>
    </item>
    <item>
      <title>Pipeline Registers</title>
      <link>https://circuit.quest/courses/digital-design-verilog/module-05/05-05-flip-flops-and-registers/05-pipeline-registers-and-valid-signals/</link>
      <pubDate>Sun, 01 Mar 2026 00:00:00 +0000</pubDate>
      <guid>https://circuit.quest/courses/digital-design-verilog/module-05/05-05-flip-flops-and-registers/05-pipeline-registers-and-valid-signals/</guid>
      <description>Cutting a long combinational path into stages with registers between them: what it buys in clock rate, what it costs in latency, and the valid bit that travels with the data.</description>
    </item>
    <item>
      <title>The State Machine in RTL</title>
      <link>https://circuit.quest/courses/digital-design-verilog/module-05/05-06-modeling-fsms/01-fsm-anatomy-in-rtl/</link>
      <pubDate>Sun, 01 Mar 2026 00:00:00 +0000</pubDate>
      <guid>https://circuit.quest/courses/digital-design-verilog/module-05/05-06-modeling-fsms/01-fsm-anatomy-in-rtl/</guid>
      <description>The state register, the next-state logic and the output logic of section 3.3, each as an always block; state encodings with localparam; and where Moore and Mealy differ in the code.</description>
    </item>
    <item>
      <title>The One-Process Style</title>
      <link>https://circuit.quest/courses/digital-design-verilog/module-05/05-06-modeling-fsms/02-one-process-fsm-style/</link>
      <pubDate>Sun, 01 Mar 2026 00:00:00 +0000</pubDate>
      <guid>https://circuit.quest/courses/digital-design-verilog/module-05/05-06-modeling-fsms/02-one-process-fsm-style/</guid>
      <description>State, next state and outputs in one clocked block: the shortest state machine, with every output registered, which is either exactly right or a one-cycle surprise depending on what the outputs are for.</description>
    </item>
    <item>
      <title>The Two-Process Style</title>
      <link>https://circuit.quest/courses/digital-design-verilog/module-05/05-06-modeling-fsms/03-two-process-fsm-style/</link>
      <pubDate>Sun, 01 Mar 2026 00:00:00 +0000</pubDate>
      <guid>https://circuit.quest/courses/digital-design-verilog/module-05/05-06-modeling-fsms/03-two-process-fsm-style/</guid>
      <description>The state register in a clocked block, next state and outputs in a combinational one: the style in every vendor&amp;rsquo;s guide, and how Moore and Mealy outputs fit the same template.</description>
    </item>
    <item>
      <title>The Three-Process Style</title>
      <link>https://circuit.quest/courses/digital-design-verilog/module-05/05-06-modeling-fsms/04-three-process-fsm-style/</link>
      <pubDate>Sun, 01 Mar 2026 00:00:00 +0000</pubDate>
      <guid>https://circuit.quest/courses/digital-design-verilog/module-05/05-06-modeling-fsms/04-three-process-fsm-style/</guid>
      <description>State register, next-state logic and output logic in three blocks: each answers one question, at the cost of one more block to keep in step. A comparison of the three styles.</description>
    </item>
    <item>
      <title>Encoding and Safe State Machines</title>
      <link>https://circuit.quest/courses/digital-design-verilog/module-05/05-06-modeling-fsms/05-state-encoding-and-safe-fsm/</link>
      <pubDate>Sun, 01 Mar 2026 00:00:00 +0000</pubDate>
      <guid>https://circuit.quest/courses/digital-design-verilog/module-05/05-06-modeling-fsms/05-state-encoding-and-safe-fsm/</guid>
      <description>Five states in three bits leave three encodings that mean nothing. How a machine gets into one, why it might never leave, and the one line that guarantees recovery.</description>
    </item>
    <item>
      <title>Three Complete State Machines</title>
      <link>https://circuit.quest/courses/digital-design-verilog/module-05/05-06-modeling-fsms/06-fsm-worked-examples/</link>
      <pubDate>Sun, 01 Mar 2026 00:00:00 +0000</pubDate>
      <guid>https://circuit.quest/courses/digital-design-verilog/module-05/05-06-modeling-fsms/06-fsm-worked-examples/</guid>
      <description>The three machines designed by hand in Module 3, now as tested RTL: a Moore traffic light with a timer, a Mealy sequence detector that handles overlap, and a vending machine split into a controller and a datapath. Then a look back over Module 5.</description>
    </item>
  </channel>
</rss>
