Agentic AI for UVM Code Assistance Using Graph-Based Analysis

Inspiration

The semiconductor industry faces increasing pressure to accelerate time-to-market for complex System-on-Chip (SoC) designs. Companies like NVIDIA, AMD, and Intel spend significant time in design verification, which often becomes a bottleneck in product development. Traditional Universal Verification Methodology (UVM)-based verification processes are:

  1. Time-consuming, requiring extensive coding and debugging of testbenches.
  2. Highly complex, with multiple interconnected components.
  3. Challenging to optimize, as verification engineers manually inspect relationships and dependencies. This project was inspired by the need to automate and optimize UVM verification workflows using graph-based intelligence and AI-driven debugging. By leveraging NuGraph, AurangoDB, NetworkX, cuGraph, and LLMs, the goal was to help semiconductor giants reduce verification cycles and bring products to market faster.

What I Learned

Throughout the development process, I gained insights into:

  1. Graph Databases for Verification: How SoC testbenches can be efficiently represented as nodes and edges using ArangoDB (AuRonGDB).
  2. NetworkX & cuGraph for Structural Analysis: Understanding graph traversal, degree centrality, and cycle detection to identify critical UVM components.
  3. GPU-Accelerated Graph Processing: Using cuGraph for high-performance centrality analysis on large-scale UVM environments.

How I Built the Project

  1. Graph-Based Representation of UVM Components Defined UVM components (env, agent, monitor, scoreboard) as graph nodes in ArangoDB. Established hierarchical relationships (edges) between SoC, subsystems, and protocol components. Database Setup in AuRonGDB

  2. Created a graph schema storing SoC verification components. Implemented edge definitions for UVM hierarchy relationships. Inserted testbench data dynamically, ensuring correctness, I would like to automate inserting data using csv file for future steps. Graph Analysis for Critical Components & Cycles

  3. Used NetworkX to compute degree centrality, identifying key nodes in the verification structure. Implemented cycle detection algorithms to find potential circular dependencies in the SoC testbench. Optimized performance with cuGraph, leveraging GPU acceleration for faster computations. LLM-Driven Debugging for UVM Code

  4. Constructed a prompt-based system where GPT analyzes UVM code based on detected graph issues.

  5. Compared graph analysis results (critical nodes, cycles) with LLM feedback to generate meaningful debugging recommendations.

Challenges Faced

  1. Mapping testbench components accurately in the database was crucial. Solution: Designed a well-structured schema in AurongoGDB and validated it using graph queries. Integrating LLM with Graph Analysis

  2. The LLM needed context-aware prompts based on graph structures. Solution: Formulated detailed prompts that included detected issues, critical nodes, and cycles. Balancing AI Assistance with Manual Control

  3. Fully automating UVM debugging risks false positives. Solution: Provided graph insights separately from LLM suggestions, allowing engineers to verify results manually.

  4. Learning Aurongodb, netoworkx and Cugraph in less time was challenging . Thanks to Anthony Mahanna and Theresa Lee from Aurongodb for helping during the prcoess.

Outcome & Future Improvements

  1. Successfully built a graph-based UVM code assistant.
  2. Implemented cycle detection and critical node identification using NetworkX & cuGraph.
  3. Integrated LLM debugging assistance based on real-time graph analysis.
  4. Provides a faster, AI-assisted code assistant , helping semiconductor companies optimize time-to-market.

🔹 Next Steps: Automate graph generation using already existing UVM environment. Optimize on graph analysis Extend support for SystemC and VHDL verification environments. Develop a UI for interactive visualization of UVM graphs and debugging reports.

A heartfelt thank you to Anthony Mahanna and Theresa Lee from the Aurongdb team for their invaluable support in debugging.

Built With

  • aurangodb
  • cugraph
  • graphrag
  • langchain
  • langgraph
  • llm
  • networkx
Share this project:

Updates