DV Master Plan
(for ET Erbium)
Architecture Freeze - DV Plan
Mission
Verify functional correctness\, robustness\, and compliance before tape-out
Verification Strategy
- Methodology:
- Directed testing
- Constrained randoms to uncover corner cases\, unexpected interactions and boost confidence in the design
- Testbench Architecture:
- Re-use and improve
- Erbium and ET-SoC-1 testbenches
- Copper SOC testbench
- MRAM testbench
- Develop
- ET-Link to AXI4 bridge testbench
- Periph testbench ( QSPI\, xSPI\, I2C\, UART)
- Regression and automation:
- B4C (Github CI) to validate new changes (subset of tests)
- Weekly regression to measure overall progress and readiness (full test suite)
DV Testbenches
- Esperanto Verification Library (EVL):
- Based on SystemVerilog and Universal Verification Methodology (UVM)
- Covers only Neigh and Minion verification
- Source code: nekkoai/et-soc
- ET-Link to AXI4 (ETL2AXI):
- Based on PyUVM\, written in Python
- Covers only the ET-Link to AXI4 Bridge
- Source code: nekkoai/etl2axi-tb
- CocoTB:
- Based on Python
- Covers Full Chip verification
- Source code: Erbium/HDL
- MRAM:
- Based on SystemVerilog and Universal Verification Methodology (UVM)
- Covers AXI Bridge\, BIST\, and target MRAM functionality.
- Source code: Erbium/Netlist Testbenches
DV Testbenches - EVL
- EVL includes many checking mechanisms:
- L1 Data Cache scoreboard
- Neighborhood scoreboard
- Bus (ET-Link) verification components
- SystemVerilog Assertions
- Co-simulation:
- Covers the gap that EVL checkers leave (e.g. memory consistency checking\, ISA checking)
- Stimulus:
- Current number of C and Asm tests: 1529
- Will require porting shire build tests to the neigh build
- Re-use ET-SoC-1 coverage to measure how thoroughly the design has been tested against its specifications.
DV Testbenches - ETL2AXI
- Why a new testbench?
- New development: Bridge will be implemented largely from scratch → initial verification confidence is low
- Critical component: Any malfunction could stall cores\, block transactions\, corrupt data\, and isolate the Minions from the outside the Neigh world
- Verification approach: Build a lightweight yet comprehensive testbench to ensure robustness and reliability while enabling faster turnaround
- Checking mechanisms:
- Bus protocol (ET-Link and AXI4) scoreboards
- ET-Link to AXI4 translation scoreboards
- Assertion based protocol checks
- Stimulus:
- Random bus requests injected directly into the RTL bridge bus interface
- Error injection and back pressure knobs
DV Testbenches - CocoTB
- Full Chip verification scope:
- Verify data flow and connectivity between Minions\, MRAM\, interconnects and peripherals
- Verify system-level interactions like interrupts and IO devices
- Test the real bootrom in the RTL
- Verify top level pad connections
- Co-simulation:
- Integrate sysemu co-simulation in CocoTB (very nice to have)
- Stimulus:
- TODO - Tests? Verification_Plan_Veevx.xlsx
- TODO - Coverage?
DV Testbenches - MRAM
- Focused Functional Verification:
- __Multi-level testbench: __ Reduces test time by running different hierarchies of the MRAM with directed testing of different features
- AXI protocol checking: checks the AXI2MRAM bridge for adherence to the underlying protocol.
- Debug interface checking: ensures that all test registers are accessible and have their desired functionality
- Checking Mechanism:
- ???
- Stimulus:
- Directed Testing
- Directed Random
DV Testbenches - xSPI
- Requirements
- Synopsys VIP: For functional verification using UVM.
- Synaptics-Lab Controller: For verification on FPGA.
- Various Opensource SPI/QSPI/xSPI(?) Controllers: For compatibility testing
- cocotbext-spi: For SPI Mode verification
- cocotbext-xspi: Inhouse developed for all mode verification.
- Environments
- Multiple Testbenches:
- Cocotb xspi Env: Developed inhouse. for testing all features.
- UVM Env with Synopsys VIP: For mitigating the risks of same person developing RTL and cocotb VIP.
- Env with QSPI RTL: For testing compatibility with available controller.
- FPGA with QSPI controller\, for testing compatibility.
- Checking Mechanism:
- Assertion/Scoreboard.
- Waveform Analysis (WAL?)
- Stimulus:
- Directed Testing(TOML file Based)
- Directed Random(Cross of Rates\, Bursts\,Transaction types\,XIP\,Error cases)
- Coverage:
- 100% line\, close to 100% for branch\,toggle\, fsm.
- 100% Functional with waivers
DV Testbenches - I2C, QSPI, UART
- Opensource IP’s either FPGA or Silicon Proven. with their own testbenches.
- Tasks:
- Check testbenches for completeness\, code +functional coverages.
- Assume testbench suffers from “same developer error” Reimplement in cocotb and reverify.
- Environments
- Unit level testbenches for each IP:
- Cocotb xspi Env: Developed inhouse. for testing all features.
- UVM Env with Synopsys VIP: For mitigating the risks of same person developing RTL and cocotb VIP.
- cocotbext-spi\,cocotbext-i2c\,cocotbext-uart based unit testing.
- Checking Mechanism:
- Assertion/Scoreboard.
- Stimulus:
- Directed Testing(TOML file Based)
- Directed Random(Cross of Rates\, Bursts\,Transaction types\,XIP\,Error cases)
- Coverage:
- 100% line\, close to 100% for branch\,toggle\, fsm.
- 100% Functional with waivers
DV Testbenches - SOC
- Plan
- Existing Cocotb based TB with mix of SV/UVM code.
- Add new tests for QSPI\, UART\, I2C
- Use cocotbext-[SPI\,UART\,I2C] VIP’s
- Test QSPI using Synopsys xSPI VIP in SPI and QSPI Mode.
- Modify C code from ARM to RISC-V
- Add New tests for Changes in Registers.
- Add CPU-Subsystem integration tests.
- Goal:
- Assume all features are unit tested. Focus on integration and functionality tests.
- Check every unit is able to communicate with every other unit in every mode of operation.
- Verify Memory Map.
- Check robustness of communication with outside world.
- Run at least one realworld usecase and measure performance.
- Coverage methodology.
- Coverage will not be considered for IP’s which are unit tested.
- Pin toggle covered will be considered for integration verification completeness
- RAL Tests will not contribute to coverage for any environment (unit\, system\,soc)
DV Testbenches - Validation
Validation on Alveo U250
DV Co-Simulation
- Use sysemu to handle the co-simulation in RTL
- Source code: aifoundry-org/et-platform
- How co-simulation works?
- Every time a Minion commits an instruction\, its architectural state is captured
- During test execution\, the captured architectural state is continuously compared against the golden model (sysemu)
- Example of co-simulation checks :
- Ensure that RTL does not violate software program order
- Check memory consistency order
- Verify memory data correctness
Constrained Randoms
- Corner-case bugs are often difficult to anticipate and even more challenging to reproduce reliably.
- Some ET-SoC-1 show-stopper bugs that would have been missed by directed tests:
- RTLMIN-5813 : Thread 1 starves Thread 0 to complete a Tensor Store
- RTLMIN-5929 : DCACHE replay_queue and buffer_array entry counters may not discount allocated entries (credit/counter leaking) when gsc and regular operations overlap
- RTLMIN-6181 : TensorReduce stalls both threads 0 and 1 from executing VPU instructions ends up in deadlock
- For ET-SoC-1 we used STING (commercial\, Synopsys)\, but for post-silicon we developed an in-house random test generator named MTG.
- Proposal: revive MTG to fill the gap and boost confidence in the design
- MTG is written in Python\, does not require a license and is highly configurable
- Source code: nekkoai/dv
Verification Flows
__RTL Simulation: __ Validates functionality at a high level with zero-delay models.
Gate-Level Simulation: Runs on the synthesized netlist\, supporting either zero-delay (for faster simulation) or real timing delays (closer to silicon behavior)
X-Propagation: Model unknown values (X) realistically\, ensuring simulation reflects real silicon behavior
Power-Aware verification (UPF): validates power intent across domains
Emulation (FPGA): Run the design on hardware to accelerate verification and enable early software testing
DV tools
- Primary toolset: Synopsys tools (commercial)
- Verilator is currently not supported but it is something we should explore in the future
- Key functions:
- Simulation (VCS) for block-level and full-chip tests
- Coverage analysis and closure tracking
- Debug environment for waveform and log analysis
- Licenses requirement:
- For CI (B4C): TBD
- # of ET Tests: 134
- Total time assuming one license
- For Regressions: TBD
- # of Erbium tests: (?)
- # of ET tests: 1529
- Total time assuming one license
Verification Goals
Achieve 100% of planned functional coverage
Reach >=95% code coverage on reachable logic
All directed test passing in regression
All random tests passing and stable in regression
Enable co-simulation with sysemu
Run successfully the bootrom in simulation
Run MRAM wellness algorithm in simulation
…
DV Master Plan
(for ET Erbium)