+ No placement plan yet. Build one (free, no LLM) or open Domains + if analysis already wrote functional groups. +
+ +No satellite parts classified
+ )} +
+ No topology plan yet. Run analysis (graph build writes{" "}
+ functional_groups.json) or build a
+ placement plan.
+
No power domains detected.
+ ); + } + + return ( +
+ Power nets:{" "}
+ {dom.power_nets.length
+ ? dom.power_nets.map((n) => (
+
+ {n}
+
+ ))
+ : "—"}
+
+ Assemble: {dom.assemble_order.join(" → ")} +
+ )} ++ Functional groups +
+ {groups.map((g) => ( +No power rails in the topology plan.
+ ); + } + + return ( ++ Domain{rail.domainIds.length === 1 ? "" : "s"}:{" "} + {rail.domainIds.join(", ")} +
+ )} ++ Functional groups on this rail +
+ {rail.groups.map((g) => { + const onRailSats = g.satellites.filter( + (s) => (s.nets || []).includes(rail.net), + ); + const highlight: PlacementIcGroup = { + ...g, + satellites: + onRailSats.length > 0 + ? onRailSats + : g.satellites.filter((s) => + ["decoupling", "bulk"].includes(s.role_hint || ""), + ), + }; + return+ {mode === "domains" + ? "Power-net islands with IC functional groups and satellite roles (routing-first, no mm)." + : "Each supply rail with the functional groups that hang off it."} +
+