Verification Methodology

Typical UVM Test bench Architecture

Every project should have a defined Verification Methodology. This can range from highly formal to more agile approaches. The key even if using a less formal methodology is to define clearly how you plan to verify your System on Chip design.

 

Universal Verification Methodology (UVM) is a standard to create a modular reusable generic verification environment. It aims to reduce the effort of reusing IP by making it easier to reuse verification components associated with the IP.

UVM provides an architectural framework and class libraries for establishing verification environments for a Design Under Test (DUT). A Testbench is a flexible way to create a structured approach to verify IP. It instantiates the IP as a DUT and Test which contains a set of configured verification components and applies sequences of transactions to the DUT. The verification environment for a SoC will contain a hierarchy of Environment components with typically one per IP component. An Agent within the Environment manages a stimulus flow of transaction that are applied to the DUT. Within the Agent transactions from a Sequencer are past to a Driver that converts the transaction-level stimuli into pin-level stimuli and probe the DUT interface with drive signals. A Monitor captures the output of the DUT and converts the pin-level activity to transactions which are passed into the verification environment for analysis. A Scoreboard uses a reference model to check the behavior of DUT comparing the actual and expected transactions flowing through the various Agents.

UVM provides a level of abstraction to the verification process using Transaction Level Modeling (TLM) and also allows for mixed-language verification environments. While the UVM provides an interoperable standard for creating components within a verification environment there are still different implementation choices which need to be considered at this stage of the SoC project.

 The the IEEE 1800.2-2020 standard illustrates how UVM can be implemented in SystemVerilog but as with any architectural design pattern and object model it can be implemented in other description languages. One such option in Python. pyuvm implements a significant portion of the IEEE 1800.2 standard. It fully implements the UVM Transaction Level Modeling (TLM) system. It also uses another Python based framework, cocotb, to interact with simulators and schedule simulation events. It supports both open source tools such as Verilator as well as industry provided EDA tools.

Explore This Design Flow

Projects Using This Design Flow

Experts and Interested People

Members

 
Placeholder
Research Area
VLSI , Computer Architecture
Role
Student
 
Research Area
Precision Data Converters
Role
Analog/Mixed-Signal (AMS) Design Verification Engineer at Analog Devices, Inc.
 
Placeholder
Research Area
Computer architecture, Machine Learning, Accelerator Design, Architecture Verification
Role
Independent Researcher

Related Project Milestones

Project Name Target Date Completed Date Description
Aspen: A 630 FPS Real-Time Posit-Based Unified Accelerator for Extended Reality Perception Workloads Universal Verification Methodology (119)
An Efficient Hardware-based Spike Train Repetition for Energy-constrained Spiking Neural Networks Verification Methodology (119)

Overview

The verification strategy for the SNN IP is divided into two primary phases:

  1. Block-Level Interface Verification: Using Cocotb for agile and detailed functional verification of the AHB interface.
  2. System-Level Integration Verification: Using the SoCLab socsim tool to validate the IP’s operation within a complete System-on-Chip (SoC) environment involving a DMA PL230 controller and software drivers.

Interface Verification with Cocotb

To ensure the SNN IP’s AHB interface strictly adheres to bus protocols, we employ a Cocotb-based co-simulation stack as illustrated in the architecture diagram:

  • Python Testbench: High-level test cases are written in Python, allowing us to leverage powerful data manipulation libraries (e.g., NumPy) to generate test vectors and golden models for the SNN.
  • Cocotb & VPI: The Cocotb framework manages the synchronization between the Python environment and the RTL simulator (QuestaSim) via the Verilog Procedural Interface (VPI).
  • Verification Flow: We developed an AHB Master agent using cocotb in Python to drive transactions (reads/writes) to the SNN IP’s configuration registers. This phase ensures that the control logic and internal registers are correctly accessible.

     

Figure 1. Cocotb testbench architecture 

System-Level Simulation with socsim and DMA PL230

To verify the SNN IP’s performance and its interaction with other SoC components, we perform full-system simulation using the socsim tool provided by SoCLab.

  • Hardware Configuration:  The simulation environment includes the SNN IP, the PL230 DMA Controller, and a processing subsystem. The DMA PL230 is responsible for high-speed data movement, offloading the CPU from manual data transfers.
  • Software-Driven Verification:  We developed an embedded software program to handle the spike train preprocessing. This software converts raw neural data into a format compatible with the SNN IP's input buffer.
    • The software further configures the DMA PL230 descriptors to establish a communication link, enabling the automated transfer of the preprocessed spike trains from memory to the SNN IP.
  • Objectives: This phase validates the data-path integrity, interrupt handling, and the timing synchronization between the software, the DMA, and the SNN IP.
DRAM Controller integration in megaSoC Verification Methodology (119)

Actions

Interested in this topic? Log-in to Add to Your Profile

Add new comment

To post a comment on this article, please log in to your account. New users can create an account.