Part 6 · Testbench Architecture · Intermediate
Stimulus: Generators, Transactions & Drivers
Hub — transaction design, generator patterns, driver design, pipelined and backpressured driving, and mixing directed with random stimulus.
Overview
Stimulus is a three-stage pipeline: a transaction describes one operation abstractly, a generator decides which transactions happen and in what order, and a driver translates each transaction into cycle-accurate pin activity. Keeping those three concerns in three classes is what lets you change the scenario without touching timing, and change the protocol without touching scenarios.
Sub-topics
Transaction Design for Stimulus — rand controls vs derived fields vs metadata, ids and timestamps, printing discipline.
Generator Patterns — randomize-in-loop, scenario generators, weighted mixes, and stop conditions.
Driver Design — the mailbox loop, clocking-block driving, handshake timing, idle and reset behavior.
Pipelined & Backpressured Driving — multi-outstanding transactions, ready/backpressure, split channels, semaphores.
Mixing Directed & Random Stimulus — bring-up directed, constrained-random volume, targeted-random for holes.
STIMULUS — topic map
WHAT to send TRANSACTION DESIGN (lesson 1)
│ rand fields, constraints, metadata
WHEN / HOW MANY GENERATOR PATTERNS (lesson 2)
│ loops, scenarios, weights, stop conditions
▼ mailbox #(txn)
HOW on the pins DRIVER DESIGN (lesson 3)
│ clocking block, handshakes, reset
▼
HOW FAST / OVERLAPPED PIPELINING/BACKPRESSURE (lesson 4)
│ outstanding txns, ids, semaphores
▼
STRATEGY over a project DIRECTED + RANDOM (lesson 5)
coverage-feedback loopKey takeaways
Transaction = what, generator = when and how many, driver = how on the pins.
Generators stay clockless; drivers own every cycle of timing.
Stimulus strategy evolves across a project: directed bring-up, random volume, targeted closure.