flowchart LR RTL[RTL Design] --> SYN[Synthesis] SYN --> NET[Netlist] NET --> GLB[Global Placement] GLB --> LEG[Legalization] LEG --> DET[Detailed Placement] DET --> ROU[Global Routing] ROU --> CON["Congestion Analysis ๐บ๏ธ"] CON --> STA[Timing Closure] style RTL fill:#fff3e0,stroke:#e65100,stroke-width:3px,color:#2e3440 style SYN fill:#fff3e0,stroke:#e65100,stroke-width:3px,color:#2e3440 style NET fill:#ffcdd2,stroke:#c62828,stroke-width:3px,color:#2e3440 style GLB fill:#e3f2fd,stroke:#1565c0,stroke-width:3px,color:#2e3440 style LEG fill:#e3f2fd,stroke:#1565c0,stroke-width:3px,color:#2e3440 style DET fill:#e3f2fd,stroke:#1565c0,stroke-width:3px,color:#2e3440 style ROU fill:#c8e6c9,stroke:#2e7d32,stroke-width:3px,color:#2e3440 style CON fill:#ffe0b2,stroke:#e65100,stroke-width:3px,color:#2e3440 style STA fill:#c8e6c9,stroke:#2e7d32,stroke-width:3px,color:#2e3440
flowchart TD D["driver pin (output) ๐ฆ"] --> SP["Steiner โญ"] SP --> S1["sink 1 ๐ฅ"] SP --> S2["sink 2 ๐ฅ"] D --> S3["sink 3 ๐ฅ"] style D fill:#b3e5fc,stroke:#0277bd,stroke-width:3px,color:#2e3440 style SP fill:#ce93d8,stroke:#6a1b9a,stroke-width:3px,color:#2e3440 style S1 fill:#ffcdd2,stroke:#c62828,stroke-width:3px,color:#2e3440 style S2 fill:#ffcdd2,stroke:#c62828,stroke-width:3px,color:#2e3440 style S3 fill:#ffcdd2,stroke:#c62828,stroke-width:3px,color:#2e3440
flowchart LR PL["Placer solution ๐"] --> RO["physdes GlobalRouter ๐ฒ"] NL["Netlist ๐งพ"] --> RO RO --> WL["total routed WL ๐"] RO --> TR["orthogonal trees ๐"] TR --> FI["routed SVG figure ๐ผ๏ธ"] TR --> CC["cut crossing counts ๐งฎ"] CC --> X["x map"] CC --> Y["y map"] CC --> CM["combined map ๐บ๏ธ"] style PL fill:#e3f2fd,stroke:#1565c0,stroke-width:3px,color:#2e3440 style NL fill:#ffcdd2,stroke:#c62828,stroke-width:3px,color:#2e3440 style RO fill:#ce93d8,stroke:#6a1b9a,stroke-width:3px,color:#2e3440 style WL fill:#c8e6c9,stroke:#2e7d32,stroke-width:3px,color:#2e3440 style TR fill:#b3e5fc,stroke:#0277bd,stroke-width:3px,color:#2e3440 style FI fill:#ffe0b2,stroke:#e65100,stroke-width:3px,color:#2e3440 style CC fill:#fff9c4,stroke:#f9a825,stroke-width:3px,color:#2e3440 style X fill:#e1bee7,stroke:#7b1fa2,stroke-width:3px,color:#2e3440 style Y fill:#e1bee7,stroke:#7b1fa2,stroke-width:3px,color:#2e3440 style CM fill:#f3e5f5,stroke:#7b1fa2,stroke-width:3px,color:#2e3440
graph TD subgraph nnsplace-cpp NN["nnsplace (placer) ๐"] GRH["global_routing.hpp/.cpp ๐"] FIG["nnsplace_figures ๐ผ๏ธ"] TST["doctest tests ๐งช"] end subgraph physdes-cpp ROU["recti::GlobalRouter ๐ฒ"] TRE["recti::GlobalRoutingTree"] end NN --> GRH GRH --> ROU GRH --> TRE FIG --> GRH TST --> GRH style NN fill:#e3f2fd,stroke:#1565c0,stroke-width:3px,color:#2e3440 style GRH fill:#ce93d8,stroke:#6a1b9a,stroke-width:3px,color:#2e3440 style FIG fill:#ffe0b2,stroke:#e65100,stroke-width:3px,color:#2e3440 style TST fill:#c8e6c9,stroke:#2e7d32,stroke-width:3px,color:#2e3440 style ROU fill:#b3e5fc,stroke:#0277bd,stroke-width:3px,color:#2e3440 style TRE fill:#b3e5fc,stroke:#0277bd,stroke-width:3px,color:#2e3440
flowchart LR Y["Yosys write_json ๐"] --> R["read_yosys_json_directed()"] R --> D["net_driver: net โ driver module ๐ฏ"] D --> C["directed_netlist.py โ p1-style JSON + driver attr"] C --> F["create_flow_graph: driver โ sink arcs only ๐"] F --> P["NnsPlacer (worst = driver โ sink) ๐"] style Y fill:#fff3e0,stroke:#e65100,stroke-width:3px,color:#2e3440 style R fill:#e3f2fd,stroke:#1565c0,stroke-width:3px,color:#2e3440 style D fill:#ffcdd2,stroke:#c62828,stroke-width:3px,color:#2e3440 style C fill:#ce93d8,stroke:#6a1b9a,stroke-width:3px,color:#2e3440 style F fill:#c8e6c9,stroke:#2e7d32,stroke-width:3px,color:#2e3440 style P fill:#e3f2fd,stroke:#1565c0,stroke-width:3px,color:#2e3440