Learning Tracks
Design
Verification
Build testbenches, check bus protocols, and use assertions and coverage to find what you missed.
How do I describe it?
SystemVerilog
Types, collections, processes, classes, randomization and connecting to the design: the language of the testbench.
49 lessons-
01
Storing Data
7 lessonsChoose data types that keep unknown values visible, lay bits out the way the wire does, and report failures clearly.
-
02
Collections
7 lessonsHold bursts, queues of expected responses and outstanding IDs in the collection that fits, and keep every lookup honest.
-
03
Routines and Processes
7 lessonsWrite tasks and functions that behave when called concurrently, start and stop processes on purpose, and pass work between them without lost wakeups or deadlocks.
-
04
Classes
7 lessonsModel transactions as objects: create one per transaction, copy them deliberately, extend them for error injection, and let each object answer for itself.
-
05
Randomization
7 lessonsGenerate legal bus bursts with constraints, control and measure how often each kind appears, and make a failing random test reproducible.
-
06
Connecting to the DUT
7 lessonsBundle the pins into interfaces, drive and sample them at well-defined points in each time step, and check the handshake on every edge.
-
07
FIFO Capstone
7 lessonsSpecify a FIFO, build it, and verify it with a complete layered testbench that reuses everything from Modules 1 to 6.
How do blocks talk to each other?
Protocols
The rules every bus shares: handshakes, bursts, pipelining, flow control, ordering, byte lanes and arbitration, taught on a generic link and checked on a bench you drive.
51 lessons-
P1
Protocol Fundamentals
11 lessonsWhat every bus shares, taught on a generic link: why a bus needs rules, clocks and sampling, the valid/ready handshake, beats and transactions, pipelining and throughput, flow control, ordering and tags, byte lanes, arbitration, turning a spec sentence into a check, and a capstone bug hunt.
- P1.1Why a bus needs rules
- P1.2Clocks, edges and sampling
- P1.3Handshakes: request and acknowledge, valid and ready
- P1.4Transactions: beats, bursts, split and posted
- P1.5Pipelining, outstanding transactions, latency and throughput
- P1.6Flow control: backpressure, FIFO depth and credits
- P1.7Ordering, tags and out-of-order completion
- P1.8Addresses, widths, byte lanes and alignment
- P1.9Arbitration, fairness and atomic access
- P1.10From the spec to a check
- P1.11Capstone: the generic link bug hunt
-
P2
AXI
18 lessonsAXI as a reference: the five channels, the handshake and reset, the write and the read, outstanding transactions, bursts and the address of every beat, narrow and unaligned transfers onto memory, strobes, IDs and same-ID order, out-of-order and interleaving, the ordering model, responses and exclusive access, the request attributes, AXI4-Lite and the family, the protocol checker, a UVM agent, and a capstone bug hunt.
- P2.1AXI in one picture
- P2.2The handshake, the clock and reset, AXI style
- P2.3The write transaction: AW, W and B
- P2.4The read transaction: AR and R
- P2.5Outstanding transactions and throughput
- P2.6Bursts and the address of every beat
- P2.7Narrow transfers, byte lanes and width conversion
- P2.8Unaligned transfers: mapping any transfer onto memory
- P2.9Write strobes, byte invariance and read-modify-write
- P2.10IDs and same-ID order: why responses come back in order
- P2.11Different IDs: out of order and interleaving
- P2.12The ordering model: reads versus writes
- P2.13Responses and exclusive access
- P2.14Memory attributes, protection and QoS: the signals you get asked about
- P2.15AXI4-Lite, AXI3 and AXI5: the family
- P2.16The AXI protocol checker
- P2.17An AXI agent, monitor and scoreboard
- P2.18Capstone: AXI bug hunts
-
P3
APB
10 lessonsAPB as a reference: where it sits and why every transfer takes two cycles, setup, access and the state machine, wait states, errors, strobes and protection with APB5, decoders and the read multiplexor, the AXI-to-APB bridge, the protocol checker, a UVM agent with the register adapter, and a capstone bug hunt.
- P3.1APB in one picture
- P3.2The transfer: setup, access and the state machine
- P3.3Wait states and PREADY
- P3.4Errors: PSLVERR
- P3.5Strobes, protection and APB5
- P3.6Many completers: decoder and read mux
- P3.7The AXI-to-APB bridge
- P3.8The APB checker
- P3.9An APB agent and the register adapter
- P3.10Capstone: APB bug hunts
-
P4
AHB
12 lessonsAHB as a reference: the pipelined bus in one picture, address and data phases, HTRANS, wait states and what may change, the two-cycle ERROR, bursts and the address of every beat, sizes, lanes and strobes, the decoder, multiplexor and default subordinate with an APB bridge, locked and exclusive access, the protocol checker, a pipelined UVM agent, and a capstone bug hunt.
- P4.1AHB in one picture
- P4.2Address phase, data phase
- P4.3HTRANS: IDLE, BUSY, NONSEQ, SEQ
- P4.4Wait states and what may change
- P4.5The two-cycle ERROR
- P4.6Bursts: the address of every beat
- P4.7Transfer size, byte lanes, strobes and width
- P4.8Decoder, multiplexor and the default subordinate
- P4.9Locked transfers, protection and exclusive access
- P4.10The AHB checker
- P4.11An AHB agent: the pipelined driver and monitor
- P4.12Capstone: AHB bug hunts
How does the whole bench fit?
UVM
Build reusable, layered testbenches with the Universal Verification Methodology.
61 lessons-
U1
UVM Architecture and Phases
4 lessonsMap a layered testbench onto UVM components, follow the order in which phases visit the component tree, and keep the run phase open exactly as long as work is in flight.
-
U2
Objects, Factory and Configuration
4 lessonsCopy and compare transactions safely, let a test swap classes through the factory, and deliver configuration and virtual interfaces to the components that need them.
-
U3
Communication Between Components
6 lessonsHow UVM code reaches other code: virtual and pure virtual methods and interface classes, TLM-1 ports, exports and imps with the direction of every call and every data move, blocking and non-blocking calls through FIFOs and channels, analysis broadcast, and the sequencer-driver link and callbacks as the same pattern.
-
U4
Sequences, Drivers and Responses
3 lessonsSend items from a sequence through the sequencer to a driver, read the handshake in a log, route responses back to the right sequence, and drive a clocked bus that pushes back.
-
U5
Sequencer and Sequence Control
5 lessonsMeasure the six arbitration modes and the priority rules on one bench, give a sequence the driver with lock and grab, keep one out with is_relevant, learn the sequence lifecycle, read the macros, libraries and default sequences that start stimulus, and synchronise with events, barriers and a heartbeat.
-
U6
Drivers for Real Buses
3 lessonsFill a pipelined bus with a multi-threaded get/put driver, answer a bus master from a reactive agent whose responder sequence decides every reply, and stack a packet layer over a byte link with a translator sequence and a reconstruction monitor.
-
U7
Monitors, Analysis and In-Order Scoreboards
4 lessonsTurn pin activity into transactions at the edge where the design takes them, decide who copies a transaction and when, and check results in order with a scoreboard that accounts for every input and ends only after a quiet window, and route the assertions of a bound interface checker into the same UVM verdict.
-
U8
Scoreboard Architectures
4 lessonsSplit checking into prediction and evaluation, key predictions by tag when a design answers out of order, decide what makes a transaction correct, and measure latency and bookkeeping so that zero errors cannot hide zero checks.
-
U9
Reference Models
5 lessonsWhere the prediction comes from: choosing a checking strategy, an untimed model and its sync point, a C model behind DPI, TLM-2.0 sockets, and an instruction-set model compared at each retire as in a virtual-platform flow.
-
U10
Coordinated Stimulus and Reset
3 lessonsDrive several interfaces from one virtual sequence, reset the design in the middle of traffic without leaving the sequencer, driver or scoreboard behind, and put deadlines on every wait so a stuck test fails fast with a useful message.
-
U11
Reusable Agents and Selective Overrides
3 lessonsReuse one agent at block and chip level: make it passive where another block drives the pins, give each copy its own configuration object, and replace the driver inside one agent only.
-
U12
Extension and Reuse
3 lessonsExtend a component without editing it, with callbacks and the choice between callback, override and knob; reuse a block environment inside a subsystem with its checks intact; and connect a bench to a legacy BFM that has no interface.
-
U13
Register Models and Prediction
3 lessonsDescribe the incrementer's registers in a UVM register model, tell its desired value from its mirror, drive real APB transfers through an adapter, and keep the mirror right when other code writes the bus.
-
U14
Register Layer II
4 lessonsReach the register slice through its frontdoor and a hand-written backdoor, run the built-in register tests, model quirky registers, program a configuration from the model, and assemble generated models into a chip with two ports.
-
U15
Coverage, Debugging and Scale
3 lessonsPlace coverage where it proves what the design did and trace it to the plan; find a bench bug from its symptom with the library's debug tools; and measure and remove the costs that make a large bench slow or make its memory grow.
-
U16
Diagnostics, Regression and Capstone
4 lessonsMake reports support a verdict, record how random stimulus was seeded, close coverage holes on purpose, and assemble a complete UVM bench for a four-entry FIFO, then verify an APB peripheral with the whole track's machinery and localise a planted bug from the report.
Did it happen at the right time?
Assertions
Describe correct behaviour once with SystemVerilog Assertions and let the simulator check it every cycle.
14 lessons-
A1
Foundations
3 lessonsWhat an assertion checks and when: immediate, deferred and concurrent assertions, the values a clock edge samples, and the attempt every edge starts, which can pass, fail or pass vacuously.
-
A2
Sequences
2 lessonsDescribe timing with fixed delays, ranges and repetition, see the threads one attempt forks, put two obligations on one trigger, and count protocol events with auxiliary code.
-
A3
Properties
3 lessonsWhat the end of a test means for weak and strong properties, how to say that a condition holds until an event, and how reset and abort conditions end attempts.
-
A4
Transactions
2 lessonsCarry a value from a request to its response with local variables, and pair responses with the requests they answer.
-
A5
Assertions and Procedural Code
1 lessonConcurrent assertions placed inside always blocks, with the clock and enable they take from the procedure, and sequences used as events that wake procedural code.
-
A7
Packaging and Reuse
1 lessonWrite rules once as named sequences and properties, keep them in a module of rules, and bind them into designs you cannot edit.
-
A8
Capstones
2 lessonsPlan and write complete assertion suites, for a FIFO and for a tagged request/response channel, that fire on every faulty design and stay silent on the correct one.
What have I missed?
Functional Coverage
Measure what your tests have actually exercised, and find the cases they missed.
8 lessons-
0C
Functional Coverage
8 lessonsProve what your tests exercised: build coverage models with covergroups, find the holes, and close them with constraints.
How do I bring in C or Python?
DPI and Foreign Models
Call C from SystemVerilog and SystemVerilog from C, carry vectors, packets and strings across safely, and put a C or Python reference model behind your checker.
10 lessons-
D1
The C Side of the Testbench
7 lessonsCall C from SystemVerilog: the generated header and C linkage, status codes and output arguments, packed vectors and four-state bits, whole packets through open arrays, borrowed strings, models with state behind a handle, and a call back into the testbench.
-
D2
Python Reference Models
3 lessonsEmbed Python behind the C bridge: one interpreter on the simulator thread, owned and borrowed references, packets copied into Python objects, exceptions turned into status codes, and a clocked checker that compares the design with the Python prediction before the UVM hand-off.
No lessons match that search. Try a shorter topic or clear the search.