Skip to content
RTL Design Sherpa CocoTB Framework · Verification Infrastructure for RTL Testing
GitHub · Documentation Index · MIT License

GAXI Components Index

This directory contains the GAXI (Generic AXI) protocol components for the CocoTBFramework. GAXI provides a lightweight valid/ready handshake protocol for validating individual FIFO-based interfaces on very small internal blocks. Interfaces can carry data packed into fields within a single bus, or have many discrete signals — GAXI handles both.

Directory Structure

Core Components

Data and Protocol Support

Factory and Utilities

Quick Start

Basic Usage

from CocoTBFramework.components.gaxi import create_gaxi_system

# Create complete GAXI system
system = create_gaxi_system(dut, clock)
master = system['master']
slave = system['slave']

# Send data
await master.send(master.create_packet(data=0xDEADBEEF))

Advanced Usage

from CocoTBFramework.components.gaxi import (
    GAXIMaster, GAXISlave, GAXIMonitor, GAXISequence
)

# Create individual components
master = GAXIMaster(dut, "TestMaster", "", clock, field_config)
slave = GAXISlave(dut, "TestSlave", "", clock, field_config)
monitor = GAXIMonitor(dut, "Monitor", "", clock, field_config)

# Create test sequence
sequence = GAXISequence("test_pattern", field_config)
sequence.add_burst(count=10, start_data=0x1000)
packets = sequence.generate_packets()

Component Overview

GAXIMaster

  • Drives GAXI transactions with configurable timing
  • Supports multi-signal and single-signal modes
  • Integrated pipeline debugging and statistics
  • Memory model integration for read/write operations

GAXISlave

  • Receives GAXI transactions with configurable ready delays
  • Supports different modes (skid, fifo_mux, fifo_flop)
  • Automatic memory operations and response generation
  • Pipeline debugging and error recovery

GAXIMonitor

  • Observes GAXI transactions on master or slave side
  • Protocol violation detection
  • Statistics collection and reporting
  • Integration with scoreboards

Supporting Classes

  • GAXIPacket: Protocol-specific packet with field management
  • GAXISequence: Test pattern generation with dependencies
  • GAXICommandHandler: Transaction coordination and memory operations
  • GAXIComponentBase: Common functionality for all components

Features

Signal Resolution

  • Automatic signal discovery using pattern matching
  • Manual signal mapping override capability
  • Support for different signal naming conventions
  • Multi-signal and single-signal field modes

Performance Optimization

  • Cached signal references for high-performance operation
  • Thread-safe operation for parallel testing
  • Optimized data collection and driving strategies
  • Reduced signal lookup overhead

Debugging Support

  • Pipeline state tracking and transition logging
  • Comprehensive statistics collection
  • Protocol violation detection and reporting
  • Memory operation tracking and validation

Flexibility

  • Configurable field definitions and packet structures
  • Multiple randomization modes and constraints
  • Dependency tracking in test sequences
  • Memory model integration for transaction processing

Integration

The GAXI components integrate seamlessly with: - Shared Components: Field configuration, memory models, statistics - Scoreboards: Automatic transaction recording and comparison - Randomization: FlexRandomizer for timing and data generation - CocoTB: Standard BusDriver/BusMonitor interfaces