Transactional fabric
AXI interconnect · NoC · Cache-coherent fabric
- Out-of-order matching
- Multi-agent environment
- Distributed scoreboard
- ID-based tracking
- Latency and QoS coverage
System design for verification
Rank the risk. Choose the oracle. Close the evidence.
Turn an open-ended subsystem prompt into an explicit source of truth, scalable UVM architecture, active and passive evidence paths, coverage model, performance plan, and objective sign-off argument.
Start at block level, choose the right modeling fidelity, instrument forward progress, and connect every risk to a checker, scenario, coverage point, regression tier, and exit criterion.
Primary-source accuracy pass
Factory, events, barriers, components, TLM, RAL, phasing, and other APIs must be interpreted against the active UVM standard and its documented implementation deviations.
Arm · AMBA AXI/ACESame-ID ordering depends on channel and destination; AXI does not generally order different IDs, different masters, or reads against writes. The scoreboard must model the actual ordering domain.
AMD · CDC methodologyDynamic phase stress can expose logic assumptions, but it does not simulate analog metastability. Structural review, recognized synchronizers, implementation constraints, and MTBF analysis remain essential.
Accellera · IEEE 1801-2024Isolation, supplies, and state retention belong in the power intent model. A power-aware UVM monitor complements UPF-aware verification; it cannot prove physical isolation-cell behavior.
RISC-V · RVWMOA global shadow memory is not enough by itself. The checker must encode preserved program order, dependencies, fences, atomicity, and the values a load is legally allowed to observe.
OpenTitan · production DVThe testplan, functional coverage plan, DV architecture, independent checkers, regressions, waivers, and dashboards form one evidence chain—not separate completion percentages.
Layered evidence
The design risk chooses the engine; the engine does not choose the requirement.
Choose the dominant risk
AXI interconnect · NoC · Cache-coherent fabric
DDR controller · Multi-bank SRAM controller · L2 cache
DMA · AI accelerator · PCIe or NVMe data mover
ACE or CHI · CPU LSU · Coherent accelerator
Power controller · Interrupt controller · Reset or clock manager
Reusable answer spine
| Step | Generic | Fabric / NoC | Memory / Cache | DMA / Accelerator |
|---|---|---|---|---|
| 1 · Specification | Decompose interfaces, features, and behaviors. Rank ordering, concurrency, CDC, power, precision, and forward progress by risk. | Define ordering domains, legal routing, QoS and fairness, deadlock and livelock, and credit or backpressure loops. | Define temporal correctness, bank conflicts, refresh starvation, RAW hazards, address aliasing, and cache coherency races when applicable. | Define DMA-to-compute synchronization, buffer lifecycle, unaligned accesses, quantization and precision, and circular waits among engines. |
| 2 · Golden model | Choose the source of truth at the lowest abstraction that can independently answer the required question. | Use a routing predictor plus a global in-flight tracker keyed by transaction ID. Predict legal destination, not one fixed adaptive route. | Use a sparse memory model with per-bank state. For cache, add a global directory or coherence-state model. | Use a bit-accurate DPI-C, C++, or Python numerical oracle at the architectural commit point plus a descriptor-lifecycle ownership model. |
| 3 · Testbench architecture | Use reusable agents per interface, a virtual sequencer for cross-interface scenarios, a latency-tolerant scoreboard, and an SVA layer. | Use ingress agents, egress monitors, distributed scoreboard partitions, and one global tracker for out-of-order matching. | Use AXI or CHI front-end agents, a DFI or DRAM model, a two-stage scoreboard for write buffers versus memory, and per-bank trackers. | Use command and AXI-Stream agents, a symbiotic SRAM ownership monitor, and a result collector at the write-back boundary. |
| 4 · Active path | Progress from directed bring-up to constrained random, stress, then disruption such as reset, power, or backpressure during traffic. | Create many-to-one congestion, mixed IDs, QoS starvation, adaptive routing, and in-flight reset, link retrain, or reconfiguration. | Shape row hit and miss traffic, bank thrash, refresh overlap, same-address RAW sequences, and power-down or self-refresh exit. | Maximize outstanding descriptors, use unaligned bursts, stall outputs mid-compute, and exercise NaN, maximum, minimum, and tail tiles. |
| 5 · Passive path | Use SVA for protocol, scoreboards for data, and watchdog or age tracking for liveness. | Check per-ID ordering, credit conservation, drops and duplicates, and dependency-aware forward progress. | Check command legality at issue, refresh windows, ECC or parity injection, and coherence transitions. | Compare bit-accurate results at architectural write-back, check buffer reuse, and assert saturation and rounding rules. |
| 6 · Coverage | Map feature, cross, register, temporal state, and performance coverage directly to the testplan. | Cross source, destination, ID, burst, congestion, outstanding depth, and QoS aging or fairness. | Cross bank, row hit or miss, timing corner, refresh overlap, ECC type, and cache state versus request type. | Cross tile size, stride, quantization mode, buffer occupancy, compute utilization, and descriptor-queue depth. |
| 7 · Performance | Track latency distributions, throughput, utilization, starvation, and deadlock evidence. | Measure tail latency by class, bandwidth per master, and starvation under sustained high-priority load. | Measure page-hit rate, bank parallelism, sustained bandwidth, and prove refresh or write-drain cannot block a request forever. | Compare predicted and observed tile latency, enforce utilization floors, and prove no circular wait among DMA, compute, and output. |
| 8 · Sign-off | Reach stable directed and constrained-random regressions, close meaningful coverage, and demonstrate convergence. | Drain every in-flight transaction at end of test, prove long-run fairness, and show no progress violation under stress. | Close timing corners and long-run refresh stability, then sign off ECC, scrub, and power-state recovery flows. | Meet the performance envelope under stress, preserve numerical stability, and show no buffer leak or descriptor stall. |
Worked system-design answers
Worked system design · complete answer path
Clarify descriptor fetch, channels and banks, per-channel ordering, maximum outstanding work, and the exact completion point. Ask about burst size, alignment, error handling, reset, and power-gating behavior.
Request a model that consumes descriptors and memory contents and predicts reads, writes, final memory state, and completion events. A focused Python model is sufficient when its contract is explicit.
At block level, instantiate DMA agents, memory or AXI agents, and interrupt or status agents. Reuse them at top level and scale N banks through one configuration object controlling topology, arbitration, and outstanding depth.
Bring up one channel and one descriptor with known data. Randomize size, alignment, stride, bursts, address ranges, and simultaneous banks. Add heavy backpressure, ready/valid timing variation, mid-transfer reset, power gating, invalid descriptors, and out-of-range addresses.
Bind protocol SVA for handshake stability, burst legality, and response rules. Use a memory-model scoreboard for reads, writes, and final content. Match out-of-order completion by tag or descriptor ID, or use per-channel queues when the contract is ordered. Age work per bank to detect liveness failures.
Separate interface coverage, register-field and configuration coverage, topology crosses across bank, channel, arbitration, and outstanding depth, plus reset-during-transfer, completion ordering, and error or retry temporal coverage.
Measure bytes per cycle, completion-latency distributions, bank fairness, outstanding-depth efficiency, and QoS under contention. Preserve them as regression metrics so performance regressions fail visibly.
Require testplan and functional-coverage closure, stable non-flaky regressions, low triage load, converging bugs, and a targeted regression for every high-severity bug class.
Worked system design · complete answer path
Pin down ordering by ID and address, legal reorderings, error reporting, routing and virtual channels, coherency, snoops, and atomic operations.
Use a reference that predicts legal response orderings and final memory state. If full coherency is too heavy, combine a legal-transaction checker with a focused consistency model for the critical flows.
Build reusable master and slave or memory agents. Drive port count, address maps, and route rules from topology configuration. Keep local protocol monitors at ports and a centralized model for global invariants.
Start at one master and one slave, then scale to mixed reads, writes, atomics, IDs, bursts, and backpressure. Add congestion, link flaps, resets, clock gating, and error injection.
Assert stability, credits, virtual-channel rules, and legal transitions. Match requests and responses by ID, tag, address, or transaction handle in associative structures, and age missing responses.
Cross masters, slaves, virtual channels, IDs, bursts, and backpressure. Cover routes, congestion points, arbitration outcomes, retries, timeouts, and reset recovery.
Measure latency under contention, throughput per master, fairness, and head-of-line blocking, then trend the results across regressions.
Require functional closure and long random stability. Convert long-tail escapes and clustered bugs into instrumented, scenario-based directed regressions.
Worked system design · complete answer path
Clarify sources, priorities, masks, edge versus level semantics, aggregation, and reset or low-power behavior.
Use a behavioral predictor that consumes input events and register state and produces expected IRQ lines and status bits, including priority and mask interactions.
Combine a RAL programming agent, an event-injection agent, and an IRQ observation agent. Make source and line counts configurable.
Direct single-source trigger, mask and unmask, priority updates, clear behavior, and edge or level cases. Randomize event bursts and masks under load, then collide storms with reset, clock gating, and power transitions.
Assert IRQ stability, clear semantics, and no lost level interrupt. Predict IRQ assertion, deassertion, and status. Age injected events until they are visible or serviced.
Cross priority, mask state, edge or level type, clear path, aggregation mode, and power or reset sequence.
Measure event-to-IRQ latency and prove that interrupt storms do not starve eligible lower-priority work beyond the architectural bound.
Close coverage, sustain long interrupt storms with power transitions, and require stable bug convergence.
Native UVM block diagrams
01 · UVM reference architecture
Verify routing, ordering, data integrity, flow control, global visibility, fairness, and forward progress when packets can enter and leave through many ports.
Coordinates ingress, egress, congestion, reset, reconfiguration, and recovery.
AXI or CHI ingress acceptance creates the global in-flight entry; agents also model backpressure and credit return.
NoC mesh or crossbar; perform block-level testing per mesh and recovery checks during reset or reconfiguration.
AXI, CHI, or memory models provide requests, responses, packets, and snoops on every egress.
Detects deadline, livelock, starvation, or dependency-local loss of progress.
Hash map for lifecycle, destination, routed information, and drop or duplicate detection.
One partition per destination, keyed by destination, ID, and flow rather than one FIFO.
Predicts legal destinations and reference memory behavior.
Destination, ID, flow, route, congestion, ordering, disruption, and recovery crosses.
02 · UVM reference architecture
Prove data correctness only when command ordering, bank state, global timing windows, refresh, ECC, aliasing, and liveness all remain legal.
Coordinates row locality, refresh overlap, errors, power modes, and frequency changes.
AXI, CHI, or DFI driver, sequencer, monitor, and TLM path; applies command, data, and backpressure.
Reactive slave, sparse memory, backdoor interface, and ECC logic across DFI or DRAM command/data.
DRAM controller under block-level testing per bank.
Bank FSM with timing SVA for idle, activating, active, precharging, and refreshing.
Sliding-window buffer and constraint checks for tFAW, tRRD, and other cross-bank rules.
Error generator, injection tracking, detection, correction, and reporting.
Latency histogram, bandwidth, page-hit calculation, watchdog, age queue, and starvation detection.
Sparse associative model or TLM FIFO plus an address-map and alias-conflict checker with backdoor comparison.
Bank, row locality, timing corner, refresh overlap, ECC type, and sampling crosses.
03 · UVM reference architecture
Coordinate DMA, local buffers, compute, and write-back while remaining bit-accurate across tiling, strides, unaligned data, quantization, and millions of operations.
Coordinates command, data/weight streams, result collection, and buffer ownership.
Programs configuration and dispatches tasks and command addresses.
Drives data and weights with tiling, stride, unaligned bursts, Data/Last, and backpressure.
Reactive sink that controls Ready and collects committed result data.
DMA plus systolic array, tested block by block at each pipeline stage.
Tracks bank lock and release, ping-pong races, double allocation, and premature reuse.
P99 latency, bubble detection, tile lifetime, and compute-idle threshold under sufficient bandwidth.
Checks INT8/FP16 saturation, RNE/RTZ rounding, Inf/NaN, and accumulation rules.
Bit-accurate C++ or Python/NumPy matrix calculation at architectural write-back.
Tile and stride configurations, quantization modes, buffer states, and handoff corners.
04 · UVM reference architecture
Prove one shared-memory truth across concurrent out-of-order caches and ensure no latency or race produces divergent values or silent data corruption.
Virtual sequence coordinates conflicting requests with precise cycle offsets.
CPU or GPU drivers, monitors, and local cache models issue requests, snoops, data, and backpressure.
Home node arbitrates ownership, snoops, memory requests, and data.
Consumes memory requests and returns memory data behind the home node.
Uses the directory model to predict the correct snoop response and compare it with RTL.
Checks the implementation's legal stable and transient state transitions plus atomic or exclusive operations.
Tracks write/write and read/write races plus snoop-broadcast behavior.
Central architectural truth for payload, stable ownership, sharers, and allowed serialization outcomes without over-constraining legal transient encodings.
Periodic or end-of-test dumps compare local caches and main memory with the directory to detect SDC.
MESI transitions, race scenarios, false sharing, and cache thrashing.
05 · UVM reference architecture
Prove legal state transitions, asynchronous event handling, reset and power-state correctness, deterministic recovery, and forward progress for software-visible control state.
Power-aware bring-up, clock switch, power collapse, and reset-during-traffic coordination.
APB or AHB programming, illegal-sequence injection, and software-visible state access.
Injects asynchronous interrupts, power requests, and reset collisions.
Permanent stalls, late acknowledgements, timeout testing, and acknowledgements during reset or power transition.
Power, interrupt, reset, or clock controller.
Legality, dead-end detection, and State × Event arc coverage.
Crossings, glitches, warm/cold reset, retention, and domain-release sequencing.
State age, progress timeout, starvation, and dependency-loop detection.
Isolation, retention restore, and X-propagation into active domains.
Next-state and output prediction for legal scenarios and recovery.
Sticky versus non-sticky state and allowed changes for each power or reset condition.
FSM arcs, power/reset scenarios, and error-recovery paths.
Recognize the prompt
Components, data and control flow, interfaces, layering, and reuse.
Testplan, coverage model, corner cases, and the balance between directed and constrained-random testing.
APIs, data models, scale, observability, and extensibility.
Top-level use cases, stimulus at multiple abstractions, firmware, and golden models.
Where to observe causality and how to layer SVA, monitors, models, and debug evidence.
Model design choices
Feature-rich golden model versus Lean focused model
Aims to implement the complete specification.
Implements only the features required by the test scope.
Object or dictionary model versus Flat byte array
Uses associative arrays or objects per entry.
Stores a compact contiguous value array.
Cycle-accurate model versus Transaction-level model
Models queues, latency, resources, and per-cycle state.
Treats operations as atomic events.
Tightly coupled DPI-C versus Loosely coupled service
Uses direct synchronous calls from UVM.
Uses sockets, standardized messages, or logs.
Production-scale extensions
Keep the scenario graph above pin-level implementation so the same use case can target simulation, emulation, FPGA prototypes, and post-silicon—with engine-specific drivers and checkers.
Give a transaction one identity from source request through routing, buffering, retry, completion, interrupt, and firmware acknowledgement. Preserve bounded trace history around failure.
Cross fault type and injection point with detection mechanism, detection latency, containment boundary, software-visible status, recovery action, and post-recovery data integrity.
Record seed, binary, RTL build, topology, register programming, traffic constraints, clock and power schedules, injected faults, and reference-model version as one immutable run manifest.
Portable execution referenceAccellera's Portable Test and Stimulus Standard 3.0 defines a single scenario representation that can produce implementations for simulation, emulation, FPGA prototyping, and post-silicon execution.
Operating model
Turn the specification into ranked risks, explicit ownership, a traceable testplan, and a scalable checking architecture before writing random stimulus.
02ExecuteBuild a self-checking environment, calibrate trust during directed bring-up, then expand into controlled random stress and coverage-driven regression.
03Sign-OffDemonstrate completeness, quality convergence, stress stability, and understood residual risk with objective, repeatable evidence.
Turn the specification into ranked risks, explicit ownership, a traceable testplan, and a scalable checking architecture before writing random stimulus.
Use the model answer below as the structure, then ground it in the design named by the question.
Use the model answer below as the structure, then ground it in the design named by the question.
Use the model answer below as the structure, then ground it in the design named by the question.
Use the model answer below as the structure, then ground it in the design named by the question.
Use the model answer below as the structure, then ground it in the design named by the question.
Use the model answer below as the structure, then ground it in the design named by the question.
Use the model answer below as the structure, then ground it in the design named by the question.
Use the model answer below as the structure, then ground it in the design named by the question.
Use the model answer below as the structure, then ground it in the design named by the question.
Use the model answer below as the structure, then ground it in the design named by the question.
Use the model answer below as the structure, then ground it in the design named by the question.
Use the model answer below as the structure, then ground it in the design named by the question.
Build a self-checking environment, calibrate trust during directed bring-up, then expand into controlled random stress and coverage-driven regression.
Use the model answer below as the structure, then ground it in the design named by the question.
Use the model answer below as the structure, then ground it in the design named by the question.
Use the model answer below as the structure, then ground it in the design named by the question.
Use the model answer below as the structure, then ground it in the design named by the question.
Use the model answer below as the structure, then ground it in the design named by the question.
Use the model answer below as the structure, then ground it in the design named by the question.
Use the model answer below as the structure, then ground it in the design named by the question.
Use the model answer below as the structure, then ground it in the design named by the question.
Use the model answer below as the structure, then ground it in the design named by the question.
Use the model answer below as the structure, then ground it in the design named by the question.
Use the model answer below as the structure, then ground it in the design named by the question.
Use the model answer below as the structure, then ground it in the design named by the question.
Demonstrate completeness, quality convergence, stress stability, and understood residual risk with objective, repeatable evidence.
Use the model answer below as the structure, then ground it in the design named by the question.
Use the model answer below as the structure, then ground it in the design named by the question.
Use the model answer below as the structure, then ground it in the design named by the question.
Use the model answer below as the structure, then ground it in the design named by the question.
Use the model answer below as the structure, then ground it in the design named by the question.
Use the model answer below as the structure, then ground it in the design named by the question.
Use the model answer below as the structure, then ground it in the design named by the question.
Use the model answer below as the structure, then ground it in the design named by the question.
Use the model answer below as the structure, then ground it in the design named by the question.
Use the model answer below as the structure, then ground it in the design named by the question.
Use the model answer below as the structure, then ground it in the design named by the question.
Use the model answer below as the structure, then ground it in the design named by the question.
Apply the framework