Glossary¶
Short definitions for the terms the rest of this documentation uses without stopping to explain. Each entry links to the page that treats it fully.
- Access set
The set of internal hierarchy paths a testbench actually touches, recovered at build time by compiling the testbench translation units with the discovery define and scanning the objects — no test code executes. The generated wrapper carries transport only for this set. See How a build works.
- Backdoor
Reading or depositing a value directly into design state (a memory word, a register field) without a bus transaction, through generated hierarchy probes. Backdoor operations are immediate. The opposite is a frontdoor access. See Memory and register models.
- Conformance suite
The scheduler and timing regression that pins the documented semantics — trigger ordering, the phase contract, the write model — on every supported backend, run by every
make test. A backend is supported only while it passes the whole suite. See Scheduling.- Drive point / drive anchor
The instant within a clock cycle at which a driver writes its pins. In the write model, the anchor is the rising edge plus the
ReadWritesettle: a write queued there lands after the edge’s own updates and is captured by the next edge. Legacy immediate-write benches anchored half a cycle earlier, at the falling edge, achieving the same DUT-visible timing by geometry. See Scheduling.- Full advance vs. settle
The two moves a driver makes between anchors. A full advance consumes a clock edge and lands at the next cycle’s anchor. A settle descends to the anchor of the cycle it is already in — after a bare
RisingEdgewait, for instance — without consuming another edge. Classifying a drive site as one or the other is done by its predecessor await in control flow, never by the preceding line of text. See Coming from cocotb.- Frontdoor
An access that goes through the design’s protocol interface — a bus transaction driven on pins — and therefore takes simulation time. Its pin drives queue like any port
set()under the write model. The opposite is a backdoor access. See Memory and register models.- Harness and framework
The load-bearing packaging distinction. The framework is the reusable C++ API — scheduler, DUT access, lifecycle, results — that survives embedding in someone else’s build or CI system. The harness is the optional reference tooling around it: the
cpptbcommand,cpptb-run, and their process policy. Framework milestones never block on harness features. See Running tests.- Phase contract
The guarantee attached to each simulator phase wait: what has already happened when it resumes.
ReadWriteresumes after the timestep’s evaluation has settled and queued writes flush there;ReadOnlyresumes at the end of the timestep, when writing is illegal;NextTimeStepresumes at the start of the next one. The scheduler conformance suite pins this contract on every supported backend. See Scheduling.- Settle point
The
ReadWriteinstant of a timestep — where evaluation has settled and the deferred write queue flushes. Writing from inside it re-arms it, so the queue drains within the timestep (cocotb’s writes-until-stable loop). See Scheduling.- Timing backend
The mechanism that gives the C++ scheduler its simulator-phase waits.
"verilator-direct"drives Verilator’s host loop directly;"vpi"rides standard VPI callbacks and is the portable path. Every project selects one; there is no supported build without a backend. See Scheduling.- Transport
The generated DPI path that moves signal values between the simulator and the C++ side — packed word arrays with generated signal IDs, batched per scheduler step. No hierarchical name lookup happens at run time. The build walkthrough calls its wrapper-side interface the DPI trunk. See How a build works.
- Twin bench / peer bench
A pure-SystemVerilog testbench that performs the exact same workload as a C++ testbench — same stimulus, same checks, same expected counters — so the two can be compared on results and on wall time. The examples and the authoring-core benchmark kernels each have one; the equivalence and performance guards run against them. See Performance.
- Wait graph
The scheduler’s structured snapshot of every parked process — spawn site, process ID, and the exact edge, phase, event, queue, lock, or semaphore it waits on — with a conservative deadlock classification. Captured automatically before a timeout cancels the test, printed, and stored in the result JSON. See Scheduling.
- Write model
cpptb’s documented write semantics, which are cocotb’s:
set()queues, the queue flushes at the settle point, and a write made after an awaited edge lands for the next edge.set_now()is the marked immediate escape hatch.deferred_writes = falserestores legacy immediate writes and is on a deprecation path. See Scheduling.