Keraunos PCIe Tile Documentation
Welcome to the Keraunos PCIe Tile SystemC/TLM2.0 implementation documentation.
Architecture & Design:
- Keraunos System Architecture
- PCIe Tile Integration in Keraunos-E100 Chiplet Ecosystem
- Executive Summary
- Table of Contents
- 1. System Overview
- 2. Keraunos-E100 Chiplet Architecture
- 3. PCIe Tile Position in the System
- 4. Connectivity Architecture
- 5. Data Flow Paths
- 6. Address Space Integration
- 7. System Use Cases
- 8. Final VDK Platform: Linux-Booting PCIe Tile Integration
- 8.1 Overview
- 8.2 Dual-Chiplet VDK Topology
- 8.3 Host Memory Map
- 8.4 Device (Keraunos_PCIE_Chiplet) Memory Map
- 8.5 End-to-End Data Path
- 8.6 Linux Boot Flow
- 8.7 PCIe Enumeration
- 8.8 The pcie_xfer Application
- 8.9 Device-Side Firmware (pcie_bringup)
- 8.10 VP Configuration
- 8.11 Sideband Connections in the Final Platform
- 9. Appendices
- Keraunos PCIe Tile - High-Level Design
- 1. Introduction
- 2. Architecture Overview
- 3. Theory of Operation
- 3.1 Operational Modes
- 3.2 Initialization and Boot Sequence
- 3.3 Inbound Data Flow (PCIe to NOC)
- 3.4 Outbound Data Flow (NOC to PCIe)
- 3.5 Configuration Access Flow
- 3.6 MSI Interrupt Generation Flow
- 3.7 CII Tracking and Configuration Update
- 3.8 Isolation and Recovery
- 3.9 Error Handling
- 3.10 Operating Mode Summary
- 4. Detailed Block Diagram
- 5. Data Flow Paths
- 6. Module Descriptions
- 7. Address Map
- 8. Clock and Reset Strategy
- 9. Interface Specifications
- 10. Known Limitations and Findings
- 11. Test Coverage Summary
- 12. References
- Keraunos PCIE Tile SystemC/TLM2.0 Design Document
- Sphinx Setup Instructions
- ⭐ Key Implementation Features
- Table of Contents
- 1. Introduction
- 1.5 Refactored Architecture Overview ⭐ NEW
- 1.5.1 Why Refactoring Was Necessary
- 1.5.2 Refactored Architecture Pattern
- 1.5.3 Function Callback Communication Pattern
- 1.5.4 Smart Pointer Memory Management
- 1.5.5 SCML2 Memory Integration
- 1.5.6 Temporal Decoupling Support
- 1.5.7 Modern C++ Best Practices Applied
- 1.5.8 File Organization
- 1.5.9 Component Communication Pattern
- 1.5.10 Null Safety Pattern
- 1.5.11 Performance Characteristics
- 1.5.12 Code Example - Complete Transaction Path
- 2. System Overview
- 3. Architecture
- 4. Component Design
- 4.1 TLB Common Structures
- 4.2 Inbound TLB Design
- 4.3 Outbound TLB Design
- 4.4 MSI Relay Unit Design
- 4.5 Intra-Tile Fabric Switch Design
- 4.6 System Information Interface (SII) Block
- 4.7 Configuration Register Block
- 4.8 Clock & Reset Control Module
- 4.9 PLL/CGM (Clock Generation Module)
- 4.10 PCIE PHY Model
- 4.11 External Interface Modules
- 4.12 Top-Level Keraunos PCIE Tile Module
- 5. Interface Specifications
- 6. Implementation Details
- 7. Modeling Approach
- 8. Performance Considerations
- 9. Dependencies and Requirements
- 9. Detailed Implementation Architecture
- 9.1 Class Hierarchy and Relationships
- 9.2 Communication Architecture
- 9.3 Memory Management Architecture
- 9.4 Callback Wiring Implementation
- 9.5 SCML2 Memory Usage Pattern
- 9.6 Component Lifecycle
- 9.7 Transaction Processing Flow
- 9.8 Routing Decision Implementation
- 9.9 TLB Translation Implementation
- 9.10 Error Handling Strategy
- 9.11 Configuration Register Implementation
- 10. Implementation Guide
- 11. Test Infrastructure
- 12. Migration from Original Design
- 13. Known Limitations and Future Work
- 14. Lessons Learned and Best Practices
- Appendix A: Implemented Components Summary
- Appendix B: Address Map Summary
- Appendix C: Acronyms and Abbreviations
VDK Platform & Integration:
- VDK Platform Guide: Linux-Booting Keraunos PCIe Tile
Verification:
- Keraunos PCIE Tile SystemC/TLM2.0 Testplan
- Table of Contents
- 1. Introduction
- 1.5 Test Traceability Matrix
- 2. Test Environment
- 3. Test Strategy
- 4. Inbound TLB Test Cases
- 5. Outbound TLB Test Cases
- 6. MSI Relay Unit Test Cases
- 7. Integration Test Cases
- 8. Switch Test Cases
- 9. SII Block Test Cases
- 10. Config Register Block Test Cases
- 11. Clock & Reset Test Cases
- 12. PLL/CGM Test Cases
- 13. PCIE PHY Test Cases
- 14. External Interface Test Cases
- 15. Top-Level Integration Test Cases
- 16. End-to-End Test Cases
- 16.1 Inbound Data Paths (PCIe → NOC/SMN)
- 16.2 Outbound Data Paths (NOC/SMN → PCIe)
- 16.3 Configuration Paths (SMN → TLB/SII/MSI Config)
- 16.4 MSI Interrupt Flows
- 16.5 Status Register Access
- 16.6 Isolation and Error Handling
- 16.7 Multi-Path Concurrent Traffic
- 16.8 Reset and Initialization Sequences
- 16.9 Complete Transaction Flows
- 16.10 Error Injection and Recovery
- 16.11 MSI-X End-to-End Flow
- 16.12 Clock Domain Crossing
- 16.13 Performance and Stress Tests
- 16.14 Power Management
- 16.15 System Integration Scenarios
- 16.16 Refactored Architecture Validation
- 17. Coverage Goals
- 16. Coverage Goals
- 17. Test Infrastructure
- 18. Regression Testing
- Appendix A: Unit/Integration Test Case Summary (Sections 4-15)
- Appendix A.2: End-to-End Test Case Summary (Section 16) — Implemented in
Keranous_pcie_tileTest.cc - Appendix B: Test Execution Plan
- Enable Gating Feature - Design Documentation
Overview
This documentation describes the SystemC/TLM2.0 implementation of the Keraunos PCIe Tile, featuring:
Linux-Booting VDK Platform - Full RISC-V Linux on host with PCIe endpoint enumeration
End-to-End PCIe Data Path - Host to Target_Memory via RC, EP, PCIE_TILE, and noc_n_initiator
pcie_xfer Application - Userspace tool for interactive BAR0 read/write operations
Test Suite - 86 tests (41 E2E + 45 directed), 344 checks, including BME (Bus Master Enable) tests
Zero Memory Leaks - Smart pointer (RAII) based design
Modern C++17 - Best practices throughout
SCML2 Memory - Proper persistent storage
Temporal Decoupling - Full TLM-2.0 LT support
Key Features
The refactored architecture (v2.0) introduces:
Dual-Chiplet VDK Platform - Host_Chiplet (RC + Linux) and Keraunos_PCIE_Chiplet (EP + Tile + Memory)
Linux PCIe Stack Integration - snps,dw-pcie driver enumerates EP, assigns BARs
Function Callback-Based Communication - Eliminates internal socket bindings
Smart Pointer Memory Management - Zero memory leaks guaranteed
SCML2 Integration - Proper configuration persistence
Comprehensive Testing - 86 test cases (incl. 5 BME tests) with cross-socket data verification
Sparse Backing Memory - Custom
sparse_backing_memorywith 256TB address rangeInitiator Socket Architecture - DUT output ports use
simple_initiator_socketfor outbound traffic
Platform Architecture
The validated VDK platform demonstrates the complete data path:
Host CPU (Linux) → RC AXI_Slave → iATU → PCIe TLP
→ EP PCIMem_Slave → EP BusMaster
→ PCIE_TILE.pcie_controller_target
→ noc_n_initiator → Target_Memory (16 MB)
See VDK Platform Guide: Linux-Booting Keraunos PCIe Tile for full platform details.
Components
The tile includes:
Translation Lookaside Buffers (TLBs) - 6 inbound, 3 outbound
MSI Relay Unit - Interrupt management
Intra-Tile Fabric Switches - NOC-PCIE, NOC-IO, SMN-IO
System Information Interface (SII)
Configuration Register Block
Clock & Reset Control
PLL/CGM (Clock Generation Module)
PCIe PHY Model
Documentation Sections
System Architecture (Keraunos_System_Architecture.md):
Grendel chiplet ecosystem and Keraunos-E100 role
PCIe Tile position and interfaces
Model integration (Host-RC-EP-Tile connections)
VDK integration with Synopsys DesignWare PCIe
Final VDK platform: Linux boot, PCIe enumeration, data transfer
VDK Platform Guide (VDK_Platform_Linux_PCIe_Guide.md):
Dual-chiplet topology and wiring
Memory maps (host and device)
Linux boot flow via OpenSBI
PCIe enumeration and BAR assignment
pcie_xfer application usage
VP configuration reference
Troubleshooting guide