graph LR P["โก Performance\n(speed, fmax)"] PWR["๐ Power\n(dynamic, leakage)"] A["๐ Area\n(transistors, wires)"] P --> OPT["๐ฏ Optimization\nEngine"] PWR --> OPT A --> OPT OPT --> D["๐ฆ Chip\n(layout, netlist)"] style P fill:#e3f2fd,stroke:#1565c0,color:#2e3440,stroke-width:3px style PWR fill:#fff9c4,stroke:#f57f17,color:#2e3440,stroke-width:3px style A fill:#c8e6c9,stroke:#2e7d32,color:#2e3440,stroke-width:3px style OPT fill:#f3e5f5,stroke:#7b1fa2,color:#2e3440,stroke-width:3px style D fill:#ffe0b2,stroke:#e65100,color:#2e3440,stroke-width:3px
graph TD PPA["๐ฆ PPA\nPerformance ยท Power ยท Area"] PPA --> Y["๐ Yield"] PPA --> R["๐ก๏ธ Robustness"] PPA --> D["๐งช Design-for-Test (DFT)"] PPA --> C["๐ง Design-for-CAD"] PPA --> M["๐ญ Design-for-Manufacturability"] style PPA fill:#f3e5f5,stroke:#7b1fa2,color:#2e3440,stroke-width:3px style Y fill:#c8e6c9,stroke:#2e7d32,color:#2e3440,stroke-width:3px style R fill:#e3f2fd,stroke:#1565c0,color:#2e3440,stroke-width:3px style D fill:#fff9c4,stroke:#f57f17,color:#2e3440,stroke-width:3px style C fill:#ffe0b2,stroke:#e65100,color:#2e3440,stroke-width:3px style M fill:#f3e5f5,stroke:#7b1fa2,color:#2e3440,stroke-width:3px
graph LR RT["โฑ๏ธ Runtime"] --> ALG["๐งฎ Algorithm\nDesign"] MEM["๐พ Memory"] --> ALG EN["๐ Energy\nEfficiency"] --> ALG SIM["๐งฉ Simplicity"] --> ALG ALG --> DEP["๐ Deployable\non-chip"] style RT fill:#e3f2fd,stroke:#1565c0,color:#2e3440,stroke-width:3px style MEM fill:#c8e6c9,stroke:#2e7d32,color:#2e3440,stroke-width:3px style EN fill:#fff9c4,stroke:#f57f17,color:#2e3440,stroke-width:3px style SIM fill:#ffe0b2,stroke:#e65100,color:#2e3440,stroke-width:3px style ALG fill:#f3e5f5,stroke:#7b1fa2,color:#2e3440,stroke-width:3px style DEP fill:#ffcdd2,stroke:#c62828,color:#2e3440,stroke-width:3px
graph TD NP["๐ Netlist\n(cells + nets)"] --> GP["๐บ๏ธ Global Placement"] GP --> WL["๐ Total Wirelength"] GP --> CG["๐ฆ Congestion"] GP --> TM["โฑ๏ธ Timing"] WL --> OPT["๐ฏ Single Solution"] CG --> OPT TM --> OPT style NP fill:#e8eaf6,stroke:#283593,color:#2e3440,stroke-width:3px style GP fill:#f3e5f5,stroke:#7b1fa2,color:#2e3440,stroke-width:3px style WL fill:#e3f2fd,stroke:#1565c0,color:#2e3440,stroke-width:3px style CG fill:#fff9c4,stroke:#f57f17,color:#2e3440,stroke-width:3px style TM fill:#c8e6c9,stroke:#2e7d32,color:#2e3440,stroke-width:3px style OPT fill:#ffcdd2,stroke:#c62828,color:#2e3440,stroke-width:3px
graph LR A["๐งฉ Multi-objective\nproblem"] -->|"naive merge"| B["๐ Single objective\n(one weighted number)"] B --> C{"โ Which solution?"} C -->|"Option A"| D1["โ great timing\nโ terrible congestion"] C -->|"Option B"| D2["โ great congestion\nโ terrible timing"] style A fill:#f3e5f5,stroke:#7b1fa2,color:#2e3440,stroke-width:3px style B fill:#ffe0b2,stroke:#e65100,color:#2e3440,stroke-width:3px style D1 fill:#fff9c4,stroke:#f57f17,color:#2e3440,stroke-width:3px style D2 fill:#ffcdd2,stroke:#c62828,color:#2e3440,stroke-width:3px
graph LR F1["fโ(x)"] -->|"ฮฑโ"| S["ฮฃ ฮฑแตข fแตข(x)"] F2["fโ(x)"] -->|"ฮฑโ"| S F3["fโ(x)"] -->|"ฮฑโ"| S S --> MIN["minimize"] MIN --> X["x*"] style F1 fill:#e3f2fd,stroke:#1565c0,color:#2e3440,stroke-width:3px style F2 fill:#c8e6c9,stroke:#2e7d32,color:#2e3440,stroke-width:3px style F3 fill:#fff9c4,stroke:#f57f17,color:#2e3440,stroke-width:3px style S fill:#f3e5f5,stroke:#7b1fa2,color:#2e3440,stroke-width:3px style MIN fill:#ffe0b2,stroke:#e65100,color:#2e3440,stroke-width:3px style X fill:#ffcdd2,stroke:#c62828,color:#2e3440,stroke-width:3px
graph TD R["min fโ/fโ"] --> Q["Quasi-convex?"] Q -->|"yes"| B["Bisection on t"] B --> C{"fโ - tยทfโ โค 0\nfeasible?"} C -->|"yes โ lower t"| B C -->|"no โ raise t"| B B --> S["t* = optimal ratio"] style R fill:#f3e5f5,stroke:#7b1fa2,color:#2e3440,stroke-width:3px style Q fill:#e3f2fd,stroke:#1565c0,color:#2e3440,stroke-width:3px style B fill:#c8e6c9,stroke:#2e7d32,color:#2e3440,stroke-width:3px style S fill:#ffe0b2,stroke:#e65100,color:#2e3440,stroke-width:3px
graph TD subgraph "Objective Space (fโ vs fโ)" D1["โฌค Dominated\n(fโ worse, fโ worse)"] D2["โฌค Dominated\n(fโ worse)"] D3["โฌค Dominated\n(fโ worse)"] P1["๐ข Pareto-optimal\n(no one better)"] P2["๐ข Pareto-optimal"] P3["๐ข Pareto-optimal"] FR["๐ฅ Infeasible"] end D1 --> PF["๐ Pareto Front\n(trade-off curve)"] D2 --> PF D3 --> PF P1 --> PF P2 --> PF P3 --> PF FR -.-> PF style D1 fill:#ffcdd2,stroke:#c62828,color:#2e3440,stroke-width:3px style D2 fill:#ffe0b2,stroke:#e65100,color:#2e3440,stroke-width:3px style D3 fill:#fff9c4,stroke:#f57f17,color:#2e3440,stroke-width:3px style P1 fill:#c8e6c9,stroke:#2e7d32,color:#2e3440,stroke-width:3px style P2 fill:#c8e6c9,stroke:#2e7d32,color:#2e3440,stroke-width:3px style P3 fill:#c8e6c9,stroke:#2e7d32,color:#2e3440,stroke-width:3px style FR fill:#e8eaf6,stroke:#283593,color:#2e3440,stroke-width:3px style PF fill:#f3e5f5,stroke:#7b1fa2,color:#2e3440,stroke-width:3px
graph LR S["๐ฏ Generate\nPareto front"] --> T["โ๏ธ Trade-off analysis\n(normalize objectives)"] T --> U["๐ Utilities / preferences\n(designer or user)"] U --> D["โ Pick solution\n(human-in-the-loop)"] D --> E["๐ฆ Sign-off\n(PPA + yield + test)"] style S fill:#e3f2fd,stroke:#1565c0,color:#2e3440,stroke-width:3px style T fill:#c8e6c9,stroke:#2e7d32,color:#2e3440,stroke-width:3px style U fill:#fff9c4,stroke:#f57f17,color:#2e3440,stroke-width:3px style D fill:#ffe0b2,stroke:#e65100,color:#2e3440,stroke-width:3px style E fill:#f3e5f5,stroke:#7b1fa2,color:#2e3440,stroke-width:3px
graph LR M["๐งฉ Many objectives"] --> P["๐ Pareto front"] P --> W["โ๏ธ Weighted sum / ratio\n(scalarization)"] W --> D["โ One decision"] style M fill:#f3e5f5,stroke:#7b1fa2,color:#2e3440,stroke-width:3px style P fill:#c8e6c9,stroke:#2e7d32,color:#2e3440,stroke-width:3px style W fill:#e3f2fd,stroke:#1565c0,color:#2e3440,stroke-width:3px style D fill:#ffe0b2,stroke:#e65100,color:#2e3440,stroke-width:3px