Skip to content

Latest commit

 

History

History
483 lines (332 loc) · 12.2 KB

File metadata and controls

483 lines (332 loc) · 12.2 KB

USB4/Thunderbolt 4 API Reference

The USB4/Thunderbolt 4 module provides comprehensive validation capabilities for USB4 2.0 and Thunderbolt 4 protocols, including dual-lane analysis, tunneling validation, and certification testing.

Core Classes

USB4Validator

The main class for USB4 compliance validation.

from serdes_validation_framework.protocols.usb4 import USB4Validator

validator = USB4Validator()
results = validator.validate_compliance(signal_data)

Methods

validate_compliance(signal_data: USB4SignalData) -> USB4ComplianceResult

Performs comprehensive USB4 compliance validation.

Parameters:

  • signal_data: USB4 signal data containing dual-lane measurements

Returns:

  • USB4ComplianceResult: Detailed compliance test results

Example:

# Load signal data
signal_data = USB4SignalData(
    lane0_data=lane0_voltage,
    lane1_data=lane1_voltage,
    timestamp=time_array,
    sample_rate=80e9,
    signal_mode=USB4SignalMode.GEN2X2
)

# Run compliance validation
results = validator.validate_compliance(signal_data)
print(f"Overall Status: {results.overall_status}")
analyze_signal_integrity(signal_data: USB4SignalData) -> SignalIntegrityResults

Analyzes signal integrity parameters including eye diagrams and jitter.

validate_tunneling(tunnel_data: TunnelingData) -> TunnelingResults

Validates tunneling protocols (PCIe, DisplayPort, USB 3.2).

USB4SignalAnalyzer

Advanced signal analysis for USB4 dual-lane signals.

from serdes_validation_framework.protocols.usb4 import USB4SignalAnalyzer

analyzer = USB4SignalAnalyzer()
eye_results = analyzer.analyze_eye_diagram(signal_data)
skew_results = analyzer.measure_lane_skew(signal_data)

Methods

analyze_eye_diagram(signal_data: USB4SignalData) -> EyeDiagramResults

Performs comprehensive eye diagram analysis with USB4-specific compliance masks.

measure_lane_skew(signal_data: USB4SignalData) -> LaneSkewResults

Measures and analyzes dual-lane skew with compensation algorithms.

analyze_jitter(signal_data: USB4SignalData) -> JitterResults

Performs advanced jitter decomposition (RJ, DJ, PJ) with SSC awareness.

USB4LinkTraining

USB4 link training state machine and validation.

from serdes_validation_framework.protocols.usb4 import USB4LinkTraining

link_trainer = USB4LinkTraining()
training_results = link_trainer.run_training_sequence(config)

USB4PowerManager

USB4 power state management and validation.

from serdes_validation_framework.protocols.usb4 import USB4PowerManager

power_mgr = USB4PowerManager()
power_results = power_mgr.validate_power_states(signal_data)

Thunderbolt 4 Support

ThunderboltSecurityValidator

Validates Thunderbolt 4 security features including DMA protection.

from serdes_validation_framework.protocols.usb4.thunderbolt import ThunderboltSecurityValidator

security_validator = ThunderboltSecurityValidator()
security_results = security_validator.validate_security_features(device_data)

DaisyChainValidator

Validates Thunderbolt 4 daisy-chain configurations up to 6 devices.

from serdes_validation_framework.protocols.usb4.thunderbolt import DaisyChainValidator

chain_validator = DaisyChainValidator()
chain_results = chain_validator.validate_chain(chain_config)

IntelCertificationSuite

Complete Intel Thunderbolt 4 certification test suite.

from serdes_validation_framework.protocols.usb4.thunderbolt import IntelCertificationSuite

cert_suite = IntelCertificationSuite()
cert_results = cert_suite.run_certification_tests(device_config)

Tunneling Validation

PCIeTunnelValidator

Validates PCIe tunneling over USB4.

from serdes_validation_framework.protocols.usb4 import PCIeTunnelValidator

pcie_validator = PCIeTunnelValidator()
pcie_results = pcie_validator.validate_pcie_tunnel(tunnel_data)

DisplayPortTunnelValidator

Validates DisplayPort tunneling with video signal integrity analysis.

from serdes_validation_framework.protocols.usb4 import DisplayPortTunnelValidator

dp_validator = DisplayPortTunnelValidator()
dp_results = dp_validator.validate_displayport_tunnel(video_data)

USB32TunnelValidator

Validates USB 3.2 backward compatibility over USB4 tunneling.

from serdes_validation_framework.protocols.usb4 import USB32TunnelValidator

usb32_validator = USB32TunnelValidator()
usb32_results = usb32_validator.validate_usb32_tunnel(usb_data)

Data Structures

USB4SignalData

Container for USB4 signal measurements.

@dataclass
class USB4SignalData:
    lane0_data: np.ndarray      # Lane 0 voltage measurements
    lane1_data: np.ndarray      # Lane 1 voltage measurements
    timestamp: np.ndarray       # Time base
    sample_rate: float          # Sampling rate (Hz)
    signal_mode: USB4SignalMode # Signal mode (Gen2x2, Gen3x2, etc.)
    metadata: Dict[str, Any]    # Additional metadata

USB4ComplianceResult

Results from USB4 compliance validation.

@dataclass
class USB4ComplianceResult:
    overall_status: TestResult
    signal_integrity: SignalIntegrityResults
    protocol_tests: ProtocolTestResults
    tunneling_tests: TunnelingTestResults
    power_tests: PowerTestResults
    recommendations: List[str]
    test_duration: float

USB4SignalMode

Enumeration of USB4 signal modes.

class USB4SignalMode(Enum):
    GEN2 = "Gen2"           # 10 Gbps single lane
    GEN3 = "Gen3"           # 20 Gbps single lane
    GEN2X2 = "Gen2x2"       # 20 Gbps dual lane
    GEN3X2 = "Gen3x2"       # 40 Gbps dual lane
    ASYMMETRIC = "Asymmetric" # Asymmetric configuration

USB4LinkState

USB4 power states.

class USB4LinkState(Enum):
    U0 = "U0"  # Active
    U1 = "U1"  # Standby
    U2 = "U2"  # Sleep
    U3 = "U3"  # Suspend

USB4TunnelingMode

Supported tunneling protocols.

class USB4TunnelingMode(Enum):
    PCIE = "PCIe"
    DISPLAYPORT = "DisplayPort"
    USB32 = "USB32"
    THUNDERBOLT = "Thunderbolt"

Configuration Classes

USB4Specs

USB4 specification constants and limits.

from serdes_validation_framework.protocols.usb4 import USB4Specs

specs = USB4Specs()
print(f"Max bandwidth: {specs.GEN3X2_BANDWIDTH / 1e9} Gbps")
print(f"Max lane skew: {specs.MAX_LANE_SKEW * 1e12} ps")

USB4SignalSpecs

Signal integrity specifications for USB4.

from serdes_validation_framework.protocols.usb4 import USB4SignalSpecs

signal_specs = USB4SignalSpecs()
print(f"Min eye height: {signal_specs.MIN_EYE_HEIGHT}")
print(f"Max jitter: {signal_specs.MAX_RJ_RMS * 1e12} ps")

ThunderboltSpecs

Thunderbolt 4 specific specifications.

from serdes_validation_framework.protocols.usb4.thunderbolt import ThunderboltSpecs

tb_specs = ThunderboltSpecs()
print(f"TB4 bandwidth: {tb_specs.TB4_BANDWIDTH / 1e9} Gbps")
print(f"Max daisy devices: {tb_specs.MAX_DAISY_DEVICES}")

Test Automation

USB4TestSequence

Automated USB4 test sequence orchestration.

from serdes_validation_framework.test_sequence import USB4TestSequence

# Configure test sequence
config = USB4TestSequenceConfig(
    test_name="USB4 Compliance Test",
    signal_mode=USB4SignalMode.GEN3X2,
    enable_tunneling_tests=True,
    enable_power_tests=True
)

# Run test sequence
sequence = USB4TestSequence(config)
results = sequence.run_complete_sequence(signal_data)

USB4PerformanceBenchmark

Performance benchmarking and regression testing.

from serdes_validation_framework.protocols.usb4 import USB4PerformanceBenchmark

benchmark = USB4PerformanceBenchmark()
perf_results = benchmark.run_performance_tests(test_config)

USB4StressTester

Long-duration stability and stress testing.

from serdes_validation_framework.protocols.usb4 import USB4StressTester

stress_tester = USB4StressTester()
stress_results = stress_tester.run_stress_tests(stress_config)

Instrument Integration

USB4ScopeController

High-speed oscilloscope control for USB4 measurements.

from serdes_validation_framework.instrument_control import USB4ScopeController

scope = USB4ScopeController()
scope.configure_for_usb4(signal_mode=USB4SignalMode.GEN3X2)
signal_data = scope.capture_dual_lane_signal()

USB4PatternGenerator

Test pattern generation for USB4 validation.

from serdes_validation_framework.instrument_control import USB4PatternGenerator

pattern_gen = USB4PatternGenerator()
pattern_gen.generate_compliance_patterns(USB4SignalMode.GEN3X2)

USB4PowerMeter

Power measurement and validation.

from serdes_validation_framework.instrument_control import USB4PowerMeter

power_meter = USB4PowerMeter()
power_data = power_meter.measure_power_consumption(test_duration=60)

Mock Testing Support

For testing without hardware, the framework provides comprehensive mock implementations:

import os
os.environ['SVF_MOCK_MODE'] = '1'

from serdes_validation_framework.protocols.usb4 import USB4Validator

# This will use mock implementations
validator = USB4Validator()
mock_results = validator.validate_compliance(mock_signal_data)

Examples

Basic USB4 Validation

from serdes_validation_framework.protocols.usb4 import USB4Validator, USB4SignalData, USB4SignalMode
import numpy as np

# Create sample signal data
duration = 5e-6  # 5 microseconds
sample_rate = 80e9  # 80 GSa/s
num_samples = int(duration * sample_rate)

time = np.linspace(0, duration, num_samples)
lane0_data = np.random.choice([-0.4, 0.4], size=num_samples)
lane1_data = np.random.choice([-0.4, 0.4], size=num_samples)

signal_data = USB4SignalData(
    lane0_data=lane0_data,
    lane1_data=lane1_data,
    timestamp=time,
    sample_rate=sample_rate,
    signal_mode=USB4SignalMode.GEN2X2
)

# Run validation
validator = USB4Validator()
results = validator.validate_compliance(signal_data)

print(f"Overall Status: {results.overall_status}")
print(f"Test Duration: {results.test_duration:.2f} seconds")

Thunderbolt 4 Certification

from serdes_validation_framework.protocols.usb4.thunderbolt import IntelCertificationSuite

# Configure device for certification
device_config = {
    'device_id': 'TB4_Device_001',
    'vendor': 'Example Corp',
    'model': 'TB4 Hub Pro',
    'firmware_version': '1.2.3'
}

# Run certification tests
cert_suite = IntelCertificationSuite()
cert_results = cert_suite.run_certification_tests(device_config)

if cert_results.certification_status == 'CERTIFIED':
    print("Device passed Thunderbolt 4 certification!")
else:
    print("Certification failed. Check detailed results.")

Multi-Protocol Tunneling

from serdes_validation_framework.protocols.usb4 import (
    PCIeTunnelValidator, 
    DisplayPortTunnelValidator,
    USB32TunnelValidator
)

# Validate multiple tunneling protocols
pcie_validator = PCIeTunnelValidator()
dp_validator = DisplayPortTunnelValidator()
usb32_validator = USB32TunnelValidator()

# Run tunneling tests
pcie_results = pcie_validator.validate_pcie_tunnel(pcie_tunnel_data)
dp_results = dp_validator.validate_displayport_tunnel(dp_tunnel_data)
usb32_results = usb32_validator.validate_usb32_tunnel(usb32_tunnel_data)

print(f"PCIe Tunneling: {pcie_results.status}")
print(f"DisplayPort Tunneling: {dp_results.status}")
print(f"USB 3.2 Tunneling: {usb32_results.status}")

Best Practices

  1. Signal Quality: Always validate signal integrity before protocol testing
  2. Dual-Lane Analysis: Use both lanes for comprehensive USB4 validation
  3. Mock Testing: Leverage mock mode for CI/CD and development
  4. Reporting: Generate detailed reports for compliance documentation
  5. Performance Monitoring: Use trend analysis for regression detection

Troubleshooting

Common Issues

  1. Import Errors: Ensure mock mode is enabled for testing without hardware
  2. Signal Quality: Check sample rate and signal conditioning
  3. Lane Skew: Verify differential pair routing and termination
  4. Tunneling Issues: Validate bandwidth allocation and flow control

Debug Mode

Enable debug logging for detailed analysis:

import logging
logging.basicConfig(level=logging.DEBUG)

# Your USB4 validation code here

For more troubleshooting tips, see the Troubleshooting Guide.