# yosyshq/oss-cad-suite-build architecture

> Architecture diagram of the GitHub repository yosyshq/oss-cad-suite-build, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-10-01). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/yosyshq/oss-cad-suite-build
- Repository: https://github.com/yosyshq/oss-cad-suite-build

## Overview

OSS CAD Suite is a packaged collection of open-source digital-design tools; this repository also contains the builder that assembles it. The principal workflow is a maintainer selecting a target and architecture, loading build rules, resolving sources and dependencies, building targets, and producing packages. The README documents the suite’s synthesis, formal, place-and-route, programming, simulation, and support-library capabilities; rule files cover only selected details of those tool families. The graph focuses on the documented product and the sampled build path. Unsampled implementation links are omitted rather than inferred.

Main entry points: [`src/base.py`](https://github.com/yosyshq/oss-cad-suite-build/blob/main/src/base.py) (Suite package), [`libvcs/shortcuts.py`](https://github.com/yosyshq/oss-cad-suite-build/blob/main/libvcs/shortcuts.py) (VCS selection), [`libvcs/base.py`](https://github.com/yosyshq/oss-cad-suite-build/blob/main/libvcs/base.py) (Repository commands), [`builder.py`](https://github.com/yosyshq/oss-cad-suite-build/blob/main/builder.py) (Builder CLI)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_build["Build orchestration"]
  node_cli["Builder CLI<br/>[builder.py]"]
  node_engine["Build engine<br/>[base.py]"]
  node_rules["Target rules"]
end

subgraph group_sources["Source management"]
  node_source_update["Source updates<br/>[base.py]"]
  node_vcs_factory["VCS selection<br/>[shortcuts.py]"]
  node_git["Git repositories<br/>[git.py]"]
  node_hg["Mercurial repositories<br/>[hg.py]"]
  node_svn["Subversion repositories<br/>[svn.py]"]
  node_repo_base["Repository commands<br/>[base.py]"]
  node_process["Command execution<br/>[util.py]"]
end

subgraph group_tools["CAD tool suite"]
  node_synthesis["RTL synthesis<br/>[yosys.py]"]
  node_formal["Formal verification<br/>[solvers.py]"]
  node_pnr["Place and route<br/>[nextpnr.py]"]
  node_simulation["Simulation and testing"]
  node_programming["FPGA programming<br/>[programmers.py]"]
end

subgraph group_support["Runtime support"]
  node_resources["Support resources<br/>[resources.py]"]
  node_package["Suite package<br/>[base.py]"]
end

node_maintainer(("Maintainer"))

node_maintainer -->|"runs commands"| node_cli
node_cli -->|"dispatches build"| node_engine
node_cli -->|"loads rules"| node_rules
node_rules -->|"declares targets"| node_engine
node_engine -->|"resolves sources"| node_source_update
node_source_update -.->|"selects VCS"| node_vcs_factory
node_vcs_factory -->|"creates Git repo"| node_git
node_vcs_factory -->|"creates Hg repo"| node_hg
node_vcs_factory -->|"creates SVN repo"| node_svn
node_git -->|"inherits commands"| node_repo_base
node_hg -->|"inherits commands"| node_repo_base
node_svn -->|"inherits commands"| node_repo_base
node_repo_base -->|"runs commands"| node_process
node_engine -->|"builds package"| node_package
node_package -.->|"bundles tools"| node_synthesis
node_package -.->|"bundles tools"| node_formal
node_package -.->|"bundles tools"| node_pnr
node_package -.->|"bundles tools"| node_simulation
node_package -.->|"bundles tools"| node_programming
node_package -.->|"bundles resources"| node_resources

click node_cli "https://github.com/yosyshq/oss-cad-suite-build/blob/main/builder.py"
click node_engine "https://github.com/yosyshq/oss-cad-suite-build/blob/main/src/base.py"
click node_rules "https://github.com/yosyshq/oss-cad-suite-build/tree/main/default/rules"
click node_source_update "https://github.com/yosyshq/oss-cad-suite-build/blob/main/src/base.py"
click node_vcs_factory "https://github.com/yosyshq/oss-cad-suite-build/blob/main/libvcs/shortcuts.py"
click node_git "https://github.com/yosyshq/oss-cad-suite-build/blob/main/libvcs/git.py"
click node_hg "https://github.com/yosyshq/oss-cad-suite-build/blob/main/libvcs/hg.py"
click node_svn "https://github.com/yosyshq/oss-cad-suite-build/blob/main/libvcs/svn.py"
click node_repo_base "https://github.com/yosyshq/oss-cad-suite-build/blob/main/libvcs/base.py"
click node_process "https://github.com/yosyshq/oss-cad-suite-build/blob/main/libvcs/util.py"
click node_synthesis "https://github.com/yosyshq/oss-cad-suite-build/blob/main/default/rules/yosys.py"
click node_formal "https://github.com/yosyshq/oss-cad-suite-build/blob/main/default/rules/solvers.py"
click node_pnr "https://github.com/yosyshq/oss-cad-suite-build/blob/main/default/rules/nextpnr.py"
click node_simulation "https://github.com/yosyshq/oss-cad-suite-build/tree/main/default/rules"
click node_programming "https://github.com/yosyshq/oss-cad-suite-build/blob/main/default/rules/programmers.py"
click node_resources "https://github.com/yosyshq/oss-cad-suite-build/blob/main/default/rules/resources.py"
click node_package "https://github.com/yosyshq/oss-cad-suite-build/blob/main/src/base.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_cli,node_engine,node_rules toneBlue
class node_source_update,node_vcs_factory,node_git,node_hg,node_svn,node_repo_base,node_process toneAmber
class node_synthesis,node_formal,node_pnr,node_simulation,node_programming toneMint
class node_resources,node_package toneRose
class node_maintainer toneIndigo
```

## Components

### Build orchestration

- [Builder CLI](https://github.com/yosyshq/oss-cad-suite-build/blob/main/builder.py): `builder.py`
- [Build engine](https://github.com/yosyshq/oss-cad-suite-build/blob/main/src/base.py): `src/base.py`
- [Target rules](https://github.com/yosyshq/oss-cad-suite-build/tree/main/default/rules): `default/rules`

### Source management

- [Source updates](https://github.com/yosyshq/oss-cad-suite-build/blob/main/src/base.py): `src/base.py`
- [VCS selection](https://github.com/yosyshq/oss-cad-suite-build/blob/main/libvcs/shortcuts.py): `libvcs/shortcuts.py`
- [Git repositories](https://github.com/yosyshq/oss-cad-suite-build/blob/main/libvcs/git.py): `libvcs/git.py`
- [Mercurial repositories](https://github.com/yosyshq/oss-cad-suite-build/blob/main/libvcs/hg.py): `libvcs/hg.py`
- [Subversion repositories](https://github.com/yosyshq/oss-cad-suite-build/blob/main/libvcs/svn.py): `libvcs/svn.py`
- [Repository commands](https://github.com/yosyshq/oss-cad-suite-build/blob/main/libvcs/base.py): `libvcs/base.py`
- [Command execution](https://github.com/yosyshq/oss-cad-suite-build/blob/main/libvcs/util.py): `libvcs/util.py`

### CAD tool suite

- [RTL synthesis](https://github.com/yosyshq/oss-cad-suite-build/blob/main/default/rules/yosys.py): `default/rules/yosys.py`
- [Formal verification](https://github.com/yosyshq/oss-cad-suite-build/blob/main/default/rules/solvers.py): `default/rules/solvers.py`
- [Place and route](https://github.com/yosyshq/oss-cad-suite-build/blob/main/default/rules/nextpnr.py): `default/rules/nextpnr.py`
- [Simulation and testing](https://github.com/yosyshq/oss-cad-suite-build/tree/main/default/rules): `default/rules`
- [FPGA programming](https://github.com/yosyshq/oss-cad-suite-build/blob/main/default/rules/programmers.py): `default/rules/programmers.py`

### Runtime support

- [Support resources](https://github.com/yosyshq/oss-cad-suite-build/blob/main/default/rules/resources.py): `default/rules/resources.py`
- [Suite package](https://github.com/yosyshq/oss-cad-suite-build/blob/main/src/base.py): `src/base.py`

### Other components

- **Maintainer**

## Connections

- Maintainer → Builder CLI: runs commands (evidence: `builder.py`)
- Builder CLI → Build engine: dispatches build (evidence: `builder.py`)
- Builder CLI → Target rules: loads rules (evidence: `builder.py`)
- Target rules → Build engine: declares targets (evidence: `default/rules/nextpnr.py`)
- Build engine → Source updates: resolves sources (evidence: `src/base.py`)
- Source updates → VCS selection: selects VCS (evidence: `src/base.py`)
- VCS selection → Git repositories: creates Git repo (evidence: `libvcs/shortcuts.py`)
- VCS selection → Mercurial repositories: creates Hg repo (evidence: `libvcs/shortcuts.py`)
- VCS selection → Subversion repositories: creates SVN repo (evidence: `libvcs/shortcuts.py`)
- Git repositories → Repository commands: inherits commands (evidence: `libvcs/git.py`)
- Mercurial repositories → Repository commands: inherits commands (evidence: `libvcs/hg.py`)
- Subversion repositories → Repository commands: inherits commands (evidence: `libvcs/svn.py`)
- Repository commands → Command execution: runs commands (evidence: `libvcs/base.py`)
- Build engine → Suite package: builds package (evidence: `builder.py`)
- Suite package → RTL synthesis: bundles tools (evidence: `README.md`)
- Suite package → Formal verification: bundles tools (evidence: `README.md`)
- Suite package → Place and route: bundles tools (evidence: `README.md`)
- Suite package → Simulation and testing: bundles tools (evidence: `README.md`)
- Suite package → FPGA programming: bundles tools (evidence: `README.md`)
- Suite package → Support resources: bundles resources (evidence: `README.md`)
