Add Domains and Power rails views for functional groups.
Sidebar tabs show routing-first topology from placement_plan/functional_groups, with IC groups and satellite roles highlighted per domain and per supply rail. Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
+2
-18
@@ -21,6 +21,7 @@ import type {
|
||||
LcscPayload,
|
||||
NetlistPreviewDesignator,
|
||||
PauseCheckpoint,
|
||||
PlacementPlan,
|
||||
Project,
|
||||
SkippedComponent,
|
||||
ValidationReport,
|
||||
@@ -608,24 +609,7 @@ export function placementEventsUrl(projectId: string): string {
|
||||
return `${BASE}/api/pipeline/${projectId}/placement/events`;
|
||||
}
|
||||
|
||||
export async function fetchPlacementPlan(projectId: string): Promise<{
|
||||
objective?: string;
|
||||
domains: Array<{
|
||||
domain_id: string;
|
||||
power_nets: string[];
|
||||
ic_refs: string[];
|
||||
assemble_order: string[];
|
||||
}>;
|
||||
groups: Array<{
|
||||
ref: string;
|
||||
mpn?: string | null;
|
||||
component_subtype?: string | null;
|
||||
rank?: number;
|
||||
satellites: Array<{ ref: string; role_hint?: string; hop?: number }>;
|
||||
layout_rules?: unknown[];
|
||||
assemble_order?: string[];
|
||||
}>;
|
||||
}> {
|
||||
export async function fetchPlacementPlan(projectId: string): Promise<PlacementPlan> {
|
||||
const res = await authFetch(`${BASE}/api/pipeline/${projectId}/placement/plan`);
|
||||
if (!res.ok) {
|
||||
const err = await res.json().catch(() => ({ detail: "Placement plan not found" }));
|
||||
|
||||
@@ -285,6 +285,51 @@ export interface Project {
|
||||
placementState?: Record<string, unknown> | null;
|
||||
}
|
||||
|
||||
export type RoleHint =
|
||||
| "decoupling"
|
||||
| "bulk"
|
||||
| "load_cap"
|
||||
| "filter"
|
||||
| "pullup"
|
||||
| "series"
|
||||
| "divider"
|
||||
| "bridge"
|
||||
| "crystal"
|
||||
| "other";
|
||||
|
||||
export interface PlacementSatellite {
|
||||
ref: string;
|
||||
component_type?: string;
|
||||
component_subtype?: string | null;
|
||||
nets?: string[];
|
||||
hop?: number;
|
||||
role_hint?: RoleHint;
|
||||
}
|
||||
|
||||
export interface PlacementIcGroup {
|
||||
ref: string;
|
||||
mpn?: string | null;
|
||||
component_subtype?: string | null;
|
||||
rank?: number;
|
||||
nets?: string[];
|
||||
satellites: PlacementSatellite[];
|
||||
layout_rules?: unknown[];
|
||||
assemble_order?: string[];
|
||||
}
|
||||
|
||||
export interface PlacementDomain {
|
||||
domain_id: string;
|
||||
power_nets: string[];
|
||||
ic_refs: string[];
|
||||
assemble_order: string[];
|
||||
}
|
||||
|
||||
export interface PlacementPlan {
|
||||
objective?: string;
|
||||
domains: PlacementDomain[];
|
||||
groups: PlacementIcGroup[];
|
||||
}
|
||||
|
||||
// One entry per EDIF sub-design (`&NNNN` ID prefix). Returned by the upload
|
||||
// endpoint and the subdesigns inspection endpoint; consumed by the wizard's
|
||||
// sub-design picker step.
|
||||
|
||||
Reference in New Issue
Block a user