# xilinx/chipscopy architecture

> Architecture diagram of the GitHub repository xilinx/chipscopy, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-29). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/xilinx/chipscopy
- Repository: https://github.com/xilinx/chipscopy

## Overview

ChipScoPy is a Python control and analysis API for AMD/Xilinx FPGA debug IP, especially Versal. The principal workflow is to create a session, connect to hardware/debug services, then use feature APIs to inspect or control device instrumentation and retrieve results. The tree documents distinct ILA capture, VIO control, IBERT link/scan, and memory/NoC capabilities. The graph includes the client/service boundary evidenced by sampled code; many feature implementations are represented by their exact tree paths, but their internal wiring is not inferred from unsampled source.

Main entry points: [`chipscopy/api/session.py`](https://github.com/xilinx/chipscopy/blob/master/chipscopy/api/session.py) (Session API), [`chipscopy/tcf/services/local/default_core_service.py`](https://github.com/xilinx/chipscopy/blob/master/chipscopy/tcf/services/local/default_core_service.py) (Core Service), [`chipscopy/client/axis_ila_core_client.py`](https://github.com/xilinx/chipscopy/blob/master/chipscopy/client/axis_ila_core_client.py) (ILA Client), [`chipscopy/client/axis_vio_core_client.py`](https://github.com/xilinx/chipscopy/blob/master/chipscopy/client/axis_vio_core_client.py) (VIO Client)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_session["Session Connectivity"]
  node_session_api["Session API<br/>[session.py]"]
  node_device["Device Discovery<br/>[device_scanner.py]"]
end

subgraph group_features["Debug Features"]
  node_ila["ILA Capture<br/>[ila.py]"]
  node_vio["VIO Control<br/>[vio.py]"]
  node_ibert["IBERT Links<br/>[ibert.py]"]
  node_memory["Device Memory<br/>[memory.py]"]
  node_ddr["DDR Control<br/>[ddr.py]"]
  node_hbm["HBM Control<br/>[hbm.py]"]
  node_noc["NoC Monitoring<br/>[noc.py]"]
  node_pcie["PCIe Control<br/>[pcie.py]"]
  node_sysmon["System Monitor<br/>[sysmon.py]"]
  node_stimgen["Stimulus Generator<br/>[stimgen.py]"]
end

subgraph group_analysis["Capture And Analysis"]
  node_eye_scan["Eye Scans<br/>[manager.py]"]
  node_yk_scan["YK Scans<br/>[manager.py]"]
  node_ila_tsm["ILA Trigger Rules<br/>[ila_tsm_reader.py]"]
  node_ila_waveform["Waveform Data<br/>[ila_waveform.py]"]
  node_report["Reports<br/>[report.py]"]
end

subgraph group_transport["Client And Services"]
  node_ila_client["ILA Client"]
  node_vio_client["VIO Client"]
  node_ibert_client["IBERT Client"]
  node_core_service["Core Service"]
end

node_developer(("Python User"))
node_hw_server["Hardware Server"]
node_cs_server["ChipScope Server"]

node_developer -->|"creates session"| node_session_api
node_session_api -->|"connects hardware"| node_hw_server
node_session_api -->|"connects debug"| node_cs_server
node_session_api -->|"sets up"| node_stimgen
node_ila_client -->|"invokes service"| node_core_service
node_vio_client -->|"invokes service"| node_core_service
node_ibert_client -->|"invokes service"| node_core_service

click node_session_api "https://github.com/xilinx/chipscopy/blob/master/chipscopy/api/session.py"
click node_device "https://github.com/xilinx/chipscopy/blob/master/chipscopy/api/device/device_scanner.py"
click node_ila "https://github.com/xilinx/chipscopy/blob/master/chipscopy/api/ila/ila.py"
click node_vio "https://github.com/xilinx/chipscopy/blob/master/chipscopy/api/vio.py"
click node_ibert "https://github.com/xilinx/chipscopy/blob/master/chipscopy/api/ibert/ibert.py"
click node_eye_scan "https://github.com/xilinx/chipscopy/blob/master/chipscopy/api/ibert/eye_scan/manager.py"
click node_yk_scan "https://github.com/xilinx/chipscopy/blob/master/chipscopy/api/ibert/yk_scan/manager.py"
click node_ila_tsm "https://github.com/xilinx/chipscopy/blob/master/chipscopy/api/ila/tsm/ila_tsm_reader.py"
click node_ila_waveform "https://github.com/xilinx/chipscopy/blob/master/chipscopy/api/ila/ila_waveform.py"
click node_memory "https://github.com/xilinx/chipscopy/blob/master/chipscopy/api/memory.py"
click node_ddr "https://github.com/xilinx/chipscopy/blob/master/chipscopy/api/ddr/ddr.py"
click node_hbm "https://github.com/xilinx/chipscopy/blob/master/chipscopy/api/hbm/hbm.py"
click node_noc "https://github.com/xilinx/chipscopy/blob/master/chipscopy/api/noc/noc.py"
click node_pcie "https://github.com/xilinx/chipscopy/blob/master/chipscopy/api/pcie.py"
click node_sysmon "https://github.com/xilinx/chipscopy/blob/master/chipscopy/api/sysmon.py"
click node_report "https://github.com/xilinx/chipscopy/blob/master/chipscopy/api/report.py"
click node_ila_client "https://github.com/xilinx/chipscopy/blob/master/chipscopy/client/axis_ila_core_client.py"
click node_vio_client "https://github.com/xilinx/chipscopy/blob/master/chipscopy/client/axis_vio_core_client.py"
click node_ibert_client "https://github.com/xilinx/chipscopy/blob/master/chipscopy/client/ibert_core_client.py"
click node_core_service "https://github.com/xilinx/chipscopy/blob/master/chipscopy/tcf/services/local/default_core_service.py"
click node_stimgen "https://github.com/xilinx/chipscopy/blob/master/chipscopy/client/stimgen.py"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_session_api,node_device,node_developer toneBlue
class node_ila,node_vio,node_ibert,node_memory,node_ddr,node_hbm,node_noc,node_pcie,node_sysmon,node_stimgen toneAmber
class node_eye_scan,node_yk_scan,node_ila_tsm,node_ila_waveform,node_report,node_hw_server,node_cs_server toneMint
class node_ila_client,node_vio_client,node_ibert_client,node_core_service toneRose
```

## Components

### Session Connectivity

- [Session API](https://github.com/xilinx/chipscopy/blob/master/chipscopy/api/session.py): `chipscopy/api/session.py`
- [Device Discovery](https://github.com/xilinx/chipscopy/blob/master/chipscopy/api/device/device_scanner.py): `chipscopy/api/device/device_scanner.py`

### Debug Features

- [ILA Capture](https://github.com/xilinx/chipscopy/blob/master/chipscopy/api/ila/ila.py): `chipscopy/api/ila/ila.py`
- [VIO Control](https://github.com/xilinx/chipscopy/blob/master/chipscopy/api/vio.py): `chipscopy/api/vio.py`
- [IBERT Links](https://github.com/xilinx/chipscopy/blob/master/chipscopy/api/ibert/ibert.py): `chipscopy/api/ibert/ibert.py`
- [Device Memory](https://github.com/xilinx/chipscopy/blob/master/chipscopy/api/memory.py): `chipscopy/api/memory.py`
- [DDR Control](https://github.com/xilinx/chipscopy/blob/master/chipscopy/api/ddr/ddr.py): `chipscopy/api/ddr/ddr.py`
- [HBM Control](https://github.com/xilinx/chipscopy/blob/master/chipscopy/api/hbm/hbm.py): `chipscopy/api/hbm/hbm.py`
- [NoC Monitoring](https://github.com/xilinx/chipscopy/blob/master/chipscopy/api/noc/noc.py): `chipscopy/api/noc/noc.py`
- [PCIe Control](https://github.com/xilinx/chipscopy/blob/master/chipscopy/api/pcie.py): `chipscopy/api/pcie.py`
- [System Monitor](https://github.com/xilinx/chipscopy/blob/master/chipscopy/api/sysmon.py): `chipscopy/api/sysmon.py`
- [Stimulus Generator](https://github.com/xilinx/chipscopy/blob/master/chipscopy/client/stimgen.py): `chipscopy/client/stimgen.py`

### Capture And Analysis

- [Eye Scans](https://github.com/xilinx/chipscopy/blob/master/chipscopy/api/ibert/eye_scan/manager.py): `chipscopy/api/ibert/eye_scan/manager.py`
- [YK Scans](https://github.com/xilinx/chipscopy/blob/master/chipscopy/api/ibert/yk_scan/manager.py): `chipscopy/api/ibert/yk_scan/manager.py`
- [ILA Trigger Rules](https://github.com/xilinx/chipscopy/blob/master/chipscopy/api/ila/tsm/ila_tsm_reader.py): `chipscopy/api/ila/tsm/ila_tsm_reader.py`
- [Waveform Data](https://github.com/xilinx/chipscopy/blob/master/chipscopy/api/ila/ila_waveform.py): `chipscopy/api/ila/ila_waveform.py`
- [Reports](https://github.com/xilinx/chipscopy/blob/master/chipscopy/api/report.py): `chipscopy/api/report.py`

### Client And Services

- [ILA Client](https://github.com/xilinx/chipscopy/blob/master/chipscopy/client/axis_ila_core_client.py): `chipscopy/client/axis_ila_core_client.py`
- [VIO Client](https://github.com/xilinx/chipscopy/blob/master/chipscopy/client/axis_vio_core_client.py): `chipscopy/client/axis_vio_core_client.py`
- [IBERT Client](https://github.com/xilinx/chipscopy/blob/master/chipscopy/client/ibert_core_client.py): `chipscopy/client/ibert_core_client.py`
- [Core Service](https://github.com/xilinx/chipscopy/blob/master/chipscopy/tcf/services/local/default_core_service.py): `chipscopy/tcf/services/local/default_core_service.py`

### Other components

- **Python User**
- **Hardware Server**
- **ChipScope Server**

## Connections

- Python User → Session API: creates session
- Session API → Hardware Server: connects hardware
- Session API → ChipScope Server: connects debug
- Session API → Stimulus Generator: sets up
- ILA Client → Core Service: invokes service
- VIO Client → Core Service: invokes service
- IBERT Client → Core Service: invokes service
