# srivikasganugu/routing-design-automation- architecture

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

- Interactive diagram: https://gitdiagram.com/srivikasganugu/routing-design-automation-
- Repository: https://github.com/srivikasganugu/routing-design-automation-

## Overview

This repository is a PCB autorouter and board-editing application, rather than an AI service as its project name might suggest. The main workflow is loading a design, editing or routing its board, then saving the updated design or routing session. The source tree also exposes REST API controllers and a KiCad plugin. The README only identifies the capstone project; workflow details here are inferred from the tree and sampled source. API job-controller behavior and most plugin wiring were not sampled, so those connections are omitted.

Main entry points: [`Autobimrouter-AI/src/main/java/app/freerouting/interactive/BoardHandling.java`](https://github.com/srivikasganugu/routing-design-automation-/blob/main/Autobimrouter-AI/src/main/java/app/freerouting/interactive/BoardHandling.java) (Board interaction), [`Autobimrouter-AI/src/main/java/app/freerouting/api/ApiServlet.java`](https://github.com/srivikasganugu/routing-design-automation-/blob/main/Autobimrouter-AI/src/main/java/app/freerouting/api/ApiServlet.java) (REST API), [`Autobimrouter-AI/src/main/java/app/freerouting/filehandling/FileController.java`](https://github.com/srivikasganugu/routing-design-automation-/blob/main/Autobimrouter-AI/src/main/java/app/freerouting/filehandling/FileController.java) (File handling), [`Autobimrouter-AI/src/main/java/app/freerouting/board/RoutingBoard.java`](https://github.com/srivikasganugu/routing-design-automation-/blob/main/Autobimrouter-AI/src/main/java/app/freerouting/board/RoutingBoard.java) (Routing board)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_interfaces["User interfaces"]
  node_desktop["Desktop UI"]
  node_api["REST API<br/>[ApiServlet.java]"]
  node_job_controller["Job endpoints"]
  node_session_controller["Session endpoints"]
  node_system_controller["System endpoints"]
end

subgraph group_board["Board workflow"]
  node_board_ui["Board interaction<br/>[BoardHandling.java]"]
  node_manual_route["Interactive routing<br/>[RouteState.java]"]
  node_board_model[("Routing board<br/>[RoutingBoard.java]")]
  node_spatial_index["Board search trees"]
end

subgraph group_routing["Routing engine"]
  node_auto_control["Autoroute control"]
  node_auto_engine["Autoroute engine"]
  node_batch_router["Batch autorouting"]
end

subgraph group_exchange["Design exchange"]
  node_dsn_reader["DSN import"]
  node_file_controller["File handling"]
  node_ses_writer["SES export"]
  node_kicad_plugin["KiCad plugin<br/>[plugin.py]"]
end

node_designer(("PCB designer"))
node_api_client(("API client"))

node_designer -->|"uses"| node_desktop
node_desktop -->|"handles edits"| node_board_ui
node_board_ui -->|"updates board"| node_board_model
node_manual_route -->|"routes traces"| node_board_model
node_board_ui -->|"starts routing"| node_manual_route
node_board_model -->|"indexes items"| node_spatial_index
node_board_ui -->|"configures routing"| node_auto_control
node_auto_control -->|"controls search"| node_auto_engine
node_auto_engine -->|"updates routes"| node_board_model
node_board_ui -->|"runs batch routing"| node_batch_router
node_api_client -->|"sends requests"| node_api
node_api -->|"dispatches"| node_job_controller
node_api -->|"dispatches"| node_session_controller
node_api -->|"dispatches"| node_system_controller
node_desktop -->|"loads and saves"| node_file_controller
node_file_controller -->|"imports design"| node_dsn_reader
node_file_controller -->|"loads board"| node_board_ui
node_file_controller -->|"exports session"| node_ses_writer

click node_desktop "https://github.com/srivikasganugu/routing-design-automation-/blob/main/Autobimrouter-AI/src/main/java/app/freerouting/gui/MainApplication.java"
click node_api "https://github.com/srivikasganugu/routing-design-automation-/blob/main/Autobimrouter-AI/src/main/java/app/freerouting/api/ApiServlet.java"
click node_job_controller "https://github.com/srivikasganugu/routing-design-automation-/blob/main/Autobimrouter-AI/src/main/java/app/freerouting/api/v1/JobControllerV1.java"
click node_session_controller "https://github.com/srivikasganugu/routing-design-automation-/blob/main/Autobimrouter-AI/src/main/java/app/freerouting/api/v1/SessionControllerV1.java"
click node_system_controller "https://github.com/srivikasganugu/routing-design-automation-/blob/main/Autobimrouter-AI/src/main/java/app/freerouting/api/v1/SystemControllerV1.java"
click node_board_ui "https://github.com/srivikasganugu/routing-design-automation-/blob/main/Autobimrouter-AI/src/main/java/app/freerouting/interactive/BoardHandling.java"
click node_manual_route "https://github.com/srivikasganugu/routing-design-automation-/blob/main/Autobimrouter-AI/src/main/java/app/freerouting/interactive/RouteState.java"
click node_board_model "https://github.com/srivikasganugu/routing-design-automation-/blob/main/Autobimrouter-AI/src/main/java/app/freerouting/board/RoutingBoard.java"
click node_spatial_index "https://github.com/srivikasganugu/routing-design-automation-/blob/main/Autobimrouter-AI/src/main/java/app/freerouting/board/SearchTreeManager.java"
click node_auto_control "https://github.com/srivikasganugu/routing-design-automation-/blob/main/Autobimrouter-AI/src/main/java/app/freerouting/autoroute/AutorouteControl.java"
click node_auto_engine "https://github.com/srivikasganugu/routing-design-automation-/blob/main/Autobimrouter-AI/src/main/java/app/freerouting/autoroute/AutorouteEngine.java"
click node_batch_router "https://github.com/srivikasganugu/routing-design-automation-/blob/main/Autobimrouter-AI/src/main/java/app/freerouting/autoroute/BatchAutorouter.java"
click node_dsn_reader "https://github.com/srivikasganugu/routing-design-automation-/blob/main/Autobimrouter-AI/src/main/java/app/freerouting/designforms/specctra/SpecctraDsnFileReader.java"
click node_file_controller "https://github.com/srivikasganugu/routing-design-automation-/blob/main/Autobimrouter-AI/src/main/java/app/freerouting/filehandling/FileController.java"
click node_ses_writer "https://github.com/srivikasganugu/routing-design-automation-/blob/main/Autobimrouter-AI/src/main/java/app/freerouting/designforms/specctra/SpecctraSesFileWriter.java"
click node_kicad_plugin "https://github.com/srivikasganugu/routing-design-automation-/blob/main/Autobimrouter-AI/integrations/KiCad/kicad-freerouting/plugins/plugin.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_desktop,node_api,node_job_controller,node_session_controller,node_system_controller,node_api_client toneBlue
class node_board_ui,node_manual_route,node_board_model,node_spatial_index toneAmber
class node_auto_control,node_auto_engine,node_batch_router toneMint
class node_dsn_reader,node_file_controller,node_ses_writer,node_kicad_plugin toneRose
class node_designer toneIndigo
```

## Components

### User interfaces

- [Desktop UI](https://github.com/srivikasganugu/routing-design-automation-/blob/main/Autobimrouter-AI/src/main/java/app/freerouting/gui/MainApplication.java): `Autobimrouter-AI/src/main/java/app/freerouting/gui/MainApplication.java`
- [REST API](https://github.com/srivikasganugu/routing-design-automation-/blob/main/Autobimrouter-AI/src/main/java/app/freerouting/api/ApiServlet.java): `Autobimrouter-AI/src/main/java/app/freerouting/api/ApiServlet.java`
- [Job endpoints](https://github.com/srivikasganugu/routing-design-automation-/blob/main/Autobimrouter-AI/src/main/java/app/freerouting/api/v1/JobControllerV1.java): `Autobimrouter-AI/src/main/java/app/freerouting/api/v1/JobControllerV1.java`
- [Session endpoints](https://github.com/srivikasganugu/routing-design-automation-/blob/main/Autobimrouter-AI/src/main/java/app/freerouting/api/v1/SessionControllerV1.java): `Autobimrouter-AI/src/main/java/app/freerouting/api/v1/SessionControllerV1.java`
- [System endpoints](https://github.com/srivikasganugu/routing-design-automation-/blob/main/Autobimrouter-AI/src/main/java/app/freerouting/api/v1/SystemControllerV1.java): `Autobimrouter-AI/src/main/java/app/freerouting/api/v1/SystemControllerV1.java`

### Board workflow

- [Board interaction](https://github.com/srivikasganugu/routing-design-automation-/blob/main/Autobimrouter-AI/src/main/java/app/freerouting/interactive/BoardHandling.java): `Autobimrouter-AI/src/main/java/app/freerouting/interactive/BoardHandling.java`
- [Interactive routing](https://github.com/srivikasganugu/routing-design-automation-/blob/main/Autobimrouter-AI/src/main/java/app/freerouting/interactive/RouteState.java): `Autobimrouter-AI/src/main/java/app/freerouting/interactive/RouteState.java`
- [Routing board](https://github.com/srivikasganugu/routing-design-automation-/blob/main/Autobimrouter-AI/src/main/java/app/freerouting/board/RoutingBoard.java): `Autobimrouter-AI/src/main/java/app/freerouting/board/RoutingBoard.java`
- [Board search trees](https://github.com/srivikasganugu/routing-design-automation-/blob/main/Autobimrouter-AI/src/main/java/app/freerouting/board/SearchTreeManager.java): `Autobimrouter-AI/src/main/java/app/freerouting/board/SearchTreeManager.java`

### Routing engine

- [Autoroute control](https://github.com/srivikasganugu/routing-design-automation-/blob/main/Autobimrouter-AI/src/main/java/app/freerouting/autoroute/AutorouteControl.java): `Autobimrouter-AI/src/main/java/app/freerouting/autoroute/AutorouteControl.java`
- [Autoroute engine](https://github.com/srivikasganugu/routing-design-automation-/blob/main/Autobimrouter-AI/src/main/java/app/freerouting/autoroute/AutorouteEngine.java): `Autobimrouter-AI/src/main/java/app/freerouting/autoroute/AutorouteEngine.java`
- [Batch autorouting](https://github.com/srivikasganugu/routing-design-automation-/blob/main/Autobimrouter-AI/src/main/java/app/freerouting/autoroute/BatchAutorouter.java): `Autobimrouter-AI/src/main/java/app/freerouting/autoroute/BatchAutorouter.java`

### Design exchange

- [DSN import](https://github.com/srivikasganugu/routing-design-automation-/blob/main/Autobimrouter-AI/src/main/java/app/freerouting/designforms/specctra/SpecctraDsnFileReader.java): `Autobimrouter-AI/src/main/java/app/freerouting/designforms/specctra/SpecctraDsnFileReader.java`
- [File handling](https://github.com/srivikasganugu/routing-design-automation-/blob/main/Autobimrouter-AI/src/main/java/app/freerouting/filehandling/FileController.java): `Autobimrouter-AI/src/main/java/app/freerouting/filehandling/FileController.java`
- [SES export](https://github.com/srivikasganugu/routing-design-automation-/blob/main/Autobimrouter-AI/src/main/java/app/freerouting/designforms/specctra/SpecctraSesFileWriter.java): `Autobimrouter-AI/src/main/java/app/freerouting/designforms/specctra/SpecctraSesFileWriter.java`
- [KiCad plugin](https://github.com/srivikasganugu/routing-design-automation-/blob/main/Autobimrouter-AI/integrations/KiCad/kicad-freerouting/plugins/plugin.py): `Autobimrouter-AI/integrations/KiCad/kicad-freerouting/plugins/plugin.py`

### Other components

- **PCB designer**
- **API client**

## Connections

- PCB designer → Desktop UI: uses
- Desktop UI → Board interaction: handles edits
- Board interaction → Routing board: updates board
- Interactive routing → Routing board: routes traces
- Board interaction → Interactive routing: starts routing
- Routing board → Board search trees: indexes items
- Board interaction → Autoroute control: configures routing
- Autoroute control → Autoroute engine: controls search
- Autoroute engine → Routing board: updates routes
- Board interaction → Batch autorouting: runs batch routing
- API client → REST API: sends requests
- REST API → Job endpoints: dispatches
- REST API → Session endpoints: dispatches
- REST API → System endpoints: dispatches
- Desktop UI → File handling: loads and saves
- File handling → DSN import: imports design
- File handling → Board interaction: loads board
- File handling → SES export: exports session
