graph TD A[("Net List")] --> B[Global Routing] B --> C[Routing Regions] C --> D[Detailed Routing] D --> E[Final Layout] style A fill:#fff3e0,stroke:#e65100,color:#2e3440,stroke-width:3px style B fill:#e3f2fd,stroke:#1565c0,color:#2e3440,stroke-width:3px style C fill:#e3f2fd,stroke:#1565c0,color:#2e3440,stroke-width:3px style D fill:#e3f2fd,stroke:#1565c0,color:#2e3440,stroke-width:3px style E fill:#c8e6c9,stroke:#2e7d32,color:#2e3440,stroke-width:3px
graph LR S["Source\n ๐"] --> T1[Terminal 1] S --> T2[Terminal 2] S --> T3[Terminal 3] style S fill:#fff3e0,stroke:#e65100,color:#2e3440,stroke-width:3px style T1 fill:#c8e6c9,stroke:#2e7d32,color:#2e3440,stroke-width:3px style T2 fill:#c8e6c9,stroke:#2e7d32,color:#2e3440,stroke-width:3px style T3 fill:#c8e6c9,stroke:#2e7d32,color:#2e3440,stroke-width:3px
graph TD S[Source] --> SP[Steiner Point] SP --> T1[Terminal 1] SP --> T2[Terminal 2] style S fill:#fff3e0,stroke:#e65100,color:#2e3440,stroke-width:3px style SP fill:#f3e5f5,stroke:#7b1fa2,color:#2e3440,stroke-width:3px style T1 fill:#c8e6c9,stroke:#2e7d32,color:#2e3440,stroke-width:3px style T2 fill:#c8e6c9,stroke:#2e7d32,color:#2e3440,stroke-width:3px
flowchart LR A[Routing Area] --> B{Keepout 1} A --> C{Keepout 2} A --> D[Free to Route] style A fill:#e3f2fd,stroke:#1565c0,color:#2e3440,stroke-width:3px style B fill:#ffcdd2,stroke:#c62828,color:#2e3440,stroke-width:3px style C fill:#ffcdd2,stroke:#c62828,color:#2e3440,stroke-width:3px style D fill:#c8e6c9,stroke:#2e7d32,color:#2e3440,stroke-width:3px
flowchart TD A[Start] --> B{Traverse Tree} B --> C[Calculate Path to Point] C --> D{Keepouts Block?} D -->|Yes| E[Skip This Branch] D -->|No| F{Distance < Min?} F -->|Yes| G[Update Nearest] F -->|No| H[Continue] G --> I{Allowed Wirelength?} I -->|Yes| J[Check Constraint] J -->|Pass| K[Select as Candidate] I -->|No| K H --> B K --> L[Return Parent & Nearest] style A fill:#fff3e0,stroke:#e65100,color:#2e3440,stroke-width:3px style B fill:#e3f2fd,stroke:#1565c0,color:#2e3440,stroke-width:3px style C fill:#f3e5f5,stroke:#7b1fa2,color:#2e3440,stroke-width:3px style D fill:#ffcdd2,stroke:#c62828,color:#2e3440,stroke-width:3px style E fill:#ffcdd2,stroke:#c62828,stroke-width:3px style F fill:#e3f2fd,stroke:#1565c0,color:#2e3440,stroke-width:3px style G fill:#c8e6c9,stroke:#2e7d32,color:#2e3440,stroke-width:3px style H fill:#eceff1,stroke:#455a64,stroke-width:3px style I fill:#fff3e0,stroke:#e65100,color:#2e3440,stroke-width:3px style J fill:#f3e5f5,stroke:#7b1fa2,color:#2e3440,stroke-width:3px style K fill:#c8e6c9,stroke:#2e7d32,color:#2e3440,stroke-width:3px style L fill:#c8e6c9,stroke:#2e7d32,color:#2e3440,stroke-width:3px
graph LR subgraph "2D View" A[x, y] end subgraph "3D View" B[x, y, z] end A -->|"extend"| B style A fill:#e3f2fd,stroke:#1565c0,stroke-width:3px style B fill:#e3f2fd,stroke:#1565c0,color:#2e3440,stroke-width:3px
flowchart TB subgraph Input A[Source Point] --> R[GlobalRouter] B[Terminals] --> R C[Keepouts] --> R end R --> D{route_simple} R --> E{route_with_steiners} R --> F{route_with_constraints} D --> G[Direct Connection] E --> H[Find Optimal Branch] F --> I[Check Wirelength Budget] G --> J[GlobalRoutingTree] H --> J I --> J J --> K[Calculate Wirelength] K --> L[Visualize SVG] style R fill:#fff3e0,stroke:#e65100,color:#2e3440,stroke-width:3px style J fill:#c8e6c9,stroke:#2e7d32,color:#2e3440,stroke-width:3px style L fill:#e3f2fd,stroke:#1565c0,color:#2e3440,stroke-width:3px
graph TD Source --> Steiner1 Source --> Steiner2 Steiner1 --> Terminal1 Steiner1 --> Terminal2 Steiner2 --> Terminal3 style Source fill:#fff3e0,stroke:#e65100,color:#2e3440,stroke-width:3px style Steiner1 fill:#f3e5f5,stroke:#7b1fa2,color:#2e3440,stroke-width:3px style Steiner2 fill:#f3e5f5,stroke:#7b1fa2,color:#2e3440,stroke-width:3px style Terminal1 fill:#c8e6c9,stroke:#2e7d32,color:#2e3440,stroke-width:3px style Terminal2 fill:#c8e6c9,stroke:#2e7d32,color:#2e3440,stroke-width:3px style Terminal3 fill:#c8e6c9,stroke:#2e7d32,color:#2e3440,stroke-width:3px
graph TD A[Source/Start] --> B[Process] B --> C[Output] B --> D[Alternative] style A fill:#fff3e0,stroke:#e65100,color:#2e3440,stroke-width:3px style B fill:#e3f2fd,stroke:#1565c0,color:#2e3440,stroke-width:3px style C fill:#c8e6c9,stroke:#2e7d32,color:#2e3440,stroke-width:3px style D fill:#ffcdd2,stroke:#c62828,color:#2e3440,stroke-width:3px