graph LR NCPP["π§± netlistx-cpp\nC++ static lib"] --> N["π― Netlist Representation\nbipartite hypergraph"] NRS["π¦ netlistx-rs\nRust crate"] --> N NPY["π netlistx\nPython package"] --> N style NCPP fill:#c8e6c9,stroke:#2e7d32,color:#2e3440,stroke-width:3px style NRS fill:#e3f2fd,stroke:#1565c0,color:#2e3440,stroke-width:3px style NPY fill:#fff9c4,stroke:#f57f17,color:#2e3440,stroke-width:3px style N fill:#ffe0b2,stroke:#e65100,color:#2e3440,stroke-width:3px
graph LR CCPP["βοΈ ckpttn-cpp\nC++ partitioning"] --> P["π― Circuit Partitioning\nFM Β· NN Β· Multi-level"] CPY["βοΈ ckpttnpy\nPython partitioning"] --> P CRS["βοΈ ckpttn-rs\nRust partitioning"] --> P style CCPP fill:#c8e6c9,stroke:#2e7d32,color:#2e3440,stroke-width:3px style CPY fill:#fff9c4,stroke:#f57f17,color:#2e3440,stroke-width:3px style CRS fill:#e3f2fd,stroke:#1565c0,color:#2e3440,stroke-width:3px style P fill:#e8eaf6,stroke:#283593,color:#2e3440,stroke-width:3px
graph LR DOM["π read_yosys_json\njson.load DOM"] --> PARTS["π§© YosysParts\ncell_names Β· port_names\nall_net_ids Β· cell_edges Β· port_nets"] SAX["π read_yosys_json_sax\nijson stream"] --> PARTS PARTS --> BUILD["ποΈ build_netlist_from_parts\nshared phase 2\nnodes β edges β weights β fixed"] BUILD --> NL["π― SimpleNetlist"] style DOM fill:#fff9c4,stroke:#f57f17,color:#2e3440,stroke-width:3px style SAX fill:#e3f2fd,stroke:#1565c0,color:#2e3440,stroke-width:3px style PARTS fill:#e8eaf6,stroke:#283593,color:#2e3440,stroke-width:3px style BUILD fill:#ffe0b2,stroke:#e65100,color:#2e3440,stroke-width:3px style NL fill:#c8e6c9,stroke:#2e7d32,color:#2e3440,stroke-width:3px
graph TD subgraph CPP["π§± C++"] C1["NNPartMgr : PartMgrBase\nprotected virtual optimize_1pass"] end subgraph PY["π Python"] P1["NNPartMgr(PartMgrBase)\noverride _optimize_1pass"] end subgraph RS["π¦ Rust"] R1["trait PartMgr (defaults)\n+ inherent forwarders"] end C1 --> SAME["π― Same Template Method\nskeleton once Β· one pass hook"] P1 --> SAME R1 --> SAME style CPP fill:#c8e6c9,stroke:#2e7d32,color:#2e3440,stroke-width:3px style PY fill:#fff9c4,stroke:#f57f17,color:#2e3440,stroke-width:3px style RS fill:#e3f2fd,stroke:#1565c0,color:#2e3440,stroke-width:3px style SAME fill:#ffe0b2,stroke:#e65100,color:#2e3440,stroke-width:3px