# riscv-ui/nebula-2026-digital-timing-blinders architecture

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

- Interactive diagram: https://gitdiagram.com/riscv-ui/nebula-2026-digital-timing-blinders
- Repository: https://github.com/riscv-ui/nebula-2026-digital-timing-blinders

## Overview

This repository documents an RTL timing-optimization research flow: identify critical paths, propose RTL changes, reject unsafe candidates, and compare surviving designs using routed PPA and formal evidence. The sampled legacy loop directly shows STA, synthesis, hierarchy localization, and equivalence tooling; README capabilities fill in the broader benchmark, gate, and signoff picture. The documented `bench/` paths are absent from the supplied tree, so those components use the existing enclosing flow path or remain unwired where implementation ownership is unclear.

Main entry points: [`orfs_custom/flow/llm_loop.py`](https://github.com/riscv-ui/nebula-2026-digital-timing-blinders/blob/nebula-digital/orfs_custom/flow/llm_loop.py) (Optimization Loop), [`artifacts`](https://github.com/riscv-ui/nebula-2026-digital-timing-blinders/tree/nebula-digital/artifacts) (Run Evidence), [`orfs_custom/flow/run_sta.py`](https://github.com/riscv-ui/nebula-2026-digital-timing-blinders/blob/nebula-digital/orfs_custom/flow/run_sta.py) (Critical Paths), [`rtl`](https://github.com/riscv-ui/nebula-2026-digital-timing-blinders/tree/nebula-digital/rtl) (Candidate RTL)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_design["Design and Timing"]
  node_benchmark["Frozen RTL"]
  node_constraints["Timing Constraints"]
  node_timing["Critical Paths<br/>[run_sta.py]"]
end

subgraph group_proposal["Candidate Loop"]
  node_loop["Optimization Loop<br/>[llm_loop.py]"]
  node_candidate["Candidate RTL"]
  node_hierarchy["Target Localization<br/>[rtl_hierarchy.py]"]
  node_synthesis["Fast Synthesis<br/>[run_synth.py]"]
end

subgraph group_assurance["Safety Gates"]
  node_lint["Lint Gate<br/>[run_lint.py]"]
  node_equivalence["Formal Equivalence<br/>[run_eqy.py]"]
  node_contracts["Latency and Clock Checks"]
end

subgraph group_evidence["Signoff Evidence"]
  node_route["Routed PPA"]
  node_artifacts[("Run Evidence")]
  node_report["Submission Report"]
  node_demo["Recorded Demo<br/>[demo_v2.py]"]
end

node_engineer(("Flow User"))
node_model(("LLM Provider"))

node_engineer -->|"starts run"| node_loop
node_benchmark -->|"provides RTL"| node_loop
node_constraints -->|"sets timing"| node_loop
node_loop -->|"measures paths"| node_timing
node_timing -->|"returns paths"| node_loop
node_loop -.->|"requests edits"| node_model
node_model -.->|"proposes RTL"| node_loop
node_loop -->|"localizes target"| node_hierarchy
node_loop -->|"applies edit"| node_candidate
node_loop -->|"synthesizes candidate"| node_synthesis
node_loop -->|"checks candidate"| node_lint
node_loop -->|"proves candidate"| node_equivalence
node_loop -->|"checks contracts"| node_contracts
node_candidate -->|"routes accepted design"| node_route
node_route -->|"records PPA"| node_artifacts
node_equivalence -->|"records proof"| node_artifacts
node_artifacts -->|"supplies evidence"| node_report
node_artifacts -->|"supplies recordings"| node_demo

click node_benchmark "https://github.com/riscv-ui/nebula-2026-digital-timing-blinders/tree/nebula-digital/rtl"
click node_timing "https://github.com/riscv-ui/nebula-2026-digital-timing-blinders/blob/nebula-digital/orfs_custom/flow/run_sta.py"
click node_loop "https://github.com/riscv-ui/nebula-2026-digital-timing-blinders/blob/nebula-digital/orfs_custom/flow/llm_loop.py"
click node_candidate "https://github.com/riscv-ui/nebula-2026-digital-timing-blinders/tree/nebula-digital/rtl"
click node_hierarchy "https://github.com/riscv-ui/nebula-2026-digital-timing-blinders/blob/nebula-digital/orfs_custom/flow/rtl_hierarchy.py"
click node_synthesis "https://github.com/riscv-ui/nebula-2026-digital-timing-blinders/blob/nebula-digital/orfs_custom/flow/run_synth.py"
click node_lint "https://github.com/riscv-ui/nebula-2026-digital-timing-blinders/blob/nebula-digital/orfs_custom/flow/run_lint.py"
click node_equivalence "https://github.com/riscv-ui/nebula-2026-digital-timing-blinders/blob/nebula-digital/orfs_custom/flow/run_eqy.py"
click node_contracts "https://github.com/riscv-ui/nebula-2026-digital-timing-blinders/tree/nebula-digital/orfs_custom/flow"
click node_route "https://github.com/riscv-ui/nebula-2026-digital-timing-blinders/tree/nebula-digital/scripts"
click node_artifacts "https://github.com/riscv-ui/nebula-2026-digital-timing-blinders/tree/nebula-digital/artifacts"
click node_report "https://github.com/riscv-ui/nebula-2026-digital-timing-blinders/tree/nebula-digital/report"
click node_demo "https://github.com/riscv-ui/nebula-2026-digital-timing-blinders/blob/nebula-digital/demo_v2.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_benchmark,node_constraints,node_timing,node_engineer toneBlue
class node_loop,node_candidate,node_hierarchy,node_synthesis toneAmber
class node_lint,node_equivalence,node_contracts toneMint
class node_route,node_artifacts,node_report,node_demo toneRose
class node_model toneIndigo
```

## Components

### Design and Timing

- [Frozen RTL](https://github.com/riscv-ui/nebula-2026-digital-timing-blinders/tree/nebula-digital/rtl): `rtl`
- **Timing Constraints**
- [Critical Paths](https://github.com/riscv-ui/nebula-2026-digital-timing-blinders/blob/nebula-digital/orfs_custom/flow/run_sta.py): `orfs_custom/flow/run_sta.py`

### Candidate Loop

- [Optimization Loop](https://github.com/riscv-ui/nebula-2026-digital-timing-blinders/blob/nebula-digital/orfs_custom/flow/llm_loop.py): `orfs_custom/flow/llm_loop.py`
- [Candidate RTL](https://github.com/riscv-ui/nebula-2026-digital-timing-blinders/tree/nebula-digital/rtl): `rtl`
- [Target Localization](https://github.com/riscv-ui/nebula-2026-digital-timing-blinders/blob/nebula-digital/orfs_custom/flow/rtl_hierarchy.py): `orfs_custom/flow/rtl_hierarchy.py`
- [Fast Synthesis](https://github.com/riscv-ui/nebula-2026-digital-timing-blinders/blob/nebula-digital/orfs_custom/flow/run_synth.py): `orfs_custom/flow/run_synth.py`

### Safety Gates

- [Lint Gate](https://github.com/riscv-ui/nebula-2026-digital-timing-blinders/blob/nebula-digital/orfs_custom/flow/run_lint.py): `orfs_custom/flow/run_lint.py`
- [Formal Equivalence](https://github.com/riscv-ui/nebula-2026-digital-timing-blinders/blob/nebula-digital/orfs_custom/flow/run_eqy.py): `orfs_custom/flow/run_eqy.py`
- [Latency and Clock Checks](https://github.com/riscv-ui/nebula-2026-digital-timing-blinders/tree/nebula-digital/orfs_custom/flow): `orfs_custom/flow`

### Signoff Evidence

- [Routed PPA](https://github.com/riscv-ui/nebula-2026-digital-timing-blinders/tree/nebula-digital/scripts): `scripts`
- [Run Evidence](https://github.com/riscv-ui/nebula-2026-digital-timing-blinders/tree/nebula-digital/artifacts): `artifacts`
- [Submission Report](https://github.com/riscv-ui/nebula-2026-digital-timing-blinders/tree/nebula-digital/report): `report`
- [Recorded Demo](https://github.com/riscv-ui/nebula-2026-digital-timing-blinders/blob/nebula-digital/demo_v2.py): `demo_v2.py`

### Other components

- **Flow User**
- **LLM Provider**

## Connections

- Flow User → Optimization Loop: starts run
- Frozen RTL → Optimization Loop: provides RTL
- Timing Constraints → Optimization Loop: sets timing
- Optimization Loop → Critical Paths: measures paths
- Critical Paths → Optimization Loop: returns paths
- Optimization Loop → LLM Provider: requests edits
- LLM Provider → Optimization Loop: proposes RTL
- Optimization Loop → Target Localization: localizes target
- Optimization Loop → Candidate RTL: applies edit
- Optimization Loop → Fast Synthesis: synthesizes candidate
- Optimization Loop → Lint Gate: checks candidate
- Optimization Loop → Formal Equivalence: proves candidate
- Optimization Loop → Latency and Clock Checks: checks contracts
- Candidate RTL → Routed PPA: routes accepted design
- Routed PPA → Run Evidence: records PPA
- Formal Equivalence → Run Evidence: records proof
- Run Evidence → Submission Report: supplies evidence
- Run Evidence → Recorded Demo: supplies recordings
