@tscircuit/capacity-autorouter 0.0.227 → 0.0.229
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.d.ts +303 -72
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
package/dist/index.d.ts
CHANGED
|
@@ -32,7 +32,7 @@ interface SimpleRouteJson {
|
|
|
32
32
|
nominalTraceWidth?: number;
|
|
33
33
|
minViaDiameter?: number;
|
|
34
34
|
defaultObstacleMargin?: number;
|
|
35
|
-
obstacles: Obstacle[];
|
|
35
|
+
obstacles: Obstacle$1[];
|
|
36
36
|
connections: Array<SimpleRouteConnection>;
|
|
37
37
|
bounds: {
|
|
38
38
|
minX: number;
|
|
@@ -45,8 +45,9 @@ interface SimpleRouteJson {
|
|
|
45
45
|
y: number;
|
|
46
46
|
}>;
|
|
47
47
|
traces?: SimplifiedPcbTraces;
|
|
48
|
+
allowJumpers?: boolean;
|
|
48
49
|
}
|
|
49
|
-
interface Obstacle {
|
|
50
|
+
interface Obstacle$1 {
|
|
50
51
|
obstacleId?: string;
|
|
51
52
|
type: "rect";
|
|
52
53
|
layers: string[];
|
|
@@ -247,6 +248,7 @@ type HighDensityIntraNodeRoute$1 = {
|
|
|
247
248
|
x: number;
|
|
248
249
|
y: number;
|
|
249
250
|
}>;
|
|
251
|
+
jumpers?: Jumper[];
|
|
250
252
|
};
|
|
251
253
|
type HighDensityRoute$1 = HighDensityIntraNodeRoute$1;
|
|
252
254
|
/**
|
|
@@ -896,10 +898,10 @@ declare class HighDensitySolver extends BaseSolver {
|
|
|
896
898
|
declare class CapacityNodeTargetMerger extends BaseSolver {
|
|
897
899
|
nodes: CapacityMeshNode[];
|
|
898
900
|
connMap: ConnectivityMap;
|
|
899
|
-
unprocessedObstacles: Obstacle[];
|
|
901
|
+
unprocessedObstacles: Obstacle$1[];
|
|
900
902
|
newNodes: CapacityMeshNode[];
|
|
901
903
|
removedNodeIds: Set<string>;
|
|
902
|
-
constructor(nodes: CapacityMeshNode[], obstacles: Obstacle[], connMap: ConnectivityMap);
|
|
904
|
+
constructor(nodes: CapacityMeshNode[], obstacles: Obstacle$1[], connMap: ConnectivityMap);
|
|
903
905
|
_step(): void;
|
|
904
906
|
visualize(): GraphicsObject;
|
|
905
907
|
}
|
|
@@ -1176,7 +1178,7 @@ declare class TraceSimplificationSolver extends BaseSolver {
|
|
|
1176
1178
|
*/
|
|
1177
1179
|
constructor(simplificationConfig: {
|
|
1178
1180
|
hdRoutes: HighDensityRoute$1[];
|
|
1179
|
-
obstacles: Obstacle[];
|
|
1181
|
+
obstacles: Obstacle$1[];
|
|
1180
1182
|
connMap: ConnectivityMap;
|
|
1181
1183
|
colorMap: Record<string, string>;
|
|
1182
1184
|
outline?: Array<{
|
|
@@ -1327,6 +1329,9 @@ interface PortPointPathingHyperParameters {
|
|
|
1327
1329
|
RIPPING_ENABLED?: boolean;
|
|
1328
1330
|
RIPPING_PF_THRESHOLD?: number;
|
|
1329
1331
|
MAX_RIPS?: number;
|
|
1332
|
+
RANDOM_RIP_FRACTION?: number;
|
|
1333
|
+
/** When enabled, use jumper-based pf calculation for same-layer crossings on single layer nodes */
|
|
1334
|
+
JUMPER_PF_FN_ENABLED?: boolean;
|
|
1330
1335
|
}
|
|
1331
1336
|
/**
|
|
1332
1337
|
* An input port point without connectionName assigned yet.
|
|
@@ -1418,6 +1423,17 @@ interface ConnectionPathResult {
|
|
|
1418
1423
|
* - prevents node cycles in a candidate chain (keeps Pf math correct without needing per-node multi-visit tracking)
|
|
1419
1424
|
*/
|
|
1420
1425
|
declare class PortPointPathingSolver extends BaseSolver {
|
|
1426
|
+
input: {
|
|
1427
|
+
simpleRouteJson: SimpleRouteJson;
|
|
1428
|
+
capacityMeshNodes: CapacityMeshNode[];
|
|
1429
|
+
inputNodes: InputNodeWithPortPoints[];
|
|
1430
|
+
colorMap?: Record<string, string>;
|
|
1431
|
+
nodeMemoryPfMap?: Map<CapacityMeshNodeId, number>;
|
|
1432
|
+
hyperParameters?: Partial<PortPointPathingHyperParameters>;
|
|
1433
|
+
precomputedInitialParams?: PrecomputedInitialParams;
|
|
1434
|
+
/** Pre-routed connections that should not be re-routed but should appear in results */
|
|
1435
|
+
fixedRoutes?: ConnectionPathResult[];
|
|
1436
|
+
};
|
|
1421
1437
|
hyperParameters: Partial<PortPointPathingHyperParameters>;
|
|
1422
1438
|
simpleRouteJson: SimpleRouteJson;
|
|
1423
1439
|
inputNodes: InputNodeWithPortPoints[];
|
|
@@ -1468,6 +1484,10 @@ declare class PortPointPathingSolver extends BaseSolver {
|
|
|
1468
1484
|
get RIPPING_ENABLED(): boolean;
|
|
1469
1485
|
get RIPPING_PF_THRESHOLD(): number;
|
|
1470
1486
|
get MAX_RIPS(): number;
|
|
1487
|
+
get RANDOM_RIP_FRACTION(): number;
|
|
1488
|
+
get JUMPER_PF_FN_ENABLED(): boolean;
|
|
1489
|
+
/** Number of jumpers that can fit per mm² of node area */
|
|
1490
|
+
jumpersPerMmSquared: number;
|
|
1471
1491
|
/** Tracks which connections have been test-ripped for each node to avoid retesting */
|
|
1472
1492
|
testedRipConnections: Map<CapacityMeshNodeId, Set<string>>;
|
|
1473
1493
|
/** Tracks total number of connections that have been ripped/requeued */
|
|
@@ -1497,7 +1517,7 @@ declare class PortPointPathingSolver extends BaseSolver {
|
|
|
1497
1517
|
offBoardNodes: InputNodeWithPortPoints[];
|
|
1498
1518
|
/** Cache of base node cost (cost of node in current committed state) */
|
|
1499
1519
|
private baseNodeCostCache;
|
|
1500
|
-
constructor(
|
|
1520
|
+
constructor(input: {
|
|
1501
1521
|
simpleRouteJson: SimpleRouteJson;
|
|
1502
1522
|
capacityMeshNodes: CapacityMeshNode[];
|
|
1503
1523
|
inputNodes: InputNodeWithPortPoints[];
|
|
@@ -1508,6 +1528,17 @@ declare class PortPointPathingSolver extends BaseSolver {
|
|
|
1508
1528
|
/** Pre-routed connections that should not be re-routed but should appear in results */
|
|
1509
1529
|
fixedRoutes?: ConnectionPathResult[];
|
|
1510
1530
|
});
|
|
1531
|
+
getConstructorParams(): {
|
|
1532
|
+
simpleRouteJson: SimpleRouteJson;
|
|
1533
|
+
capacityMeshNodes: CapacityMeshNode[];
|
|
1534
|
+
inputNodes: InputNodeWithPortPoints[];
|
|
1535
|
+
colorMap?: Record<string, string>;
|
|
1536
|
+
nodeMemoryPfMap?: Map<CapacityMeshNodeId, number>;
|
|
1537
|
+
hyperParameters?: Partial<PortPointPathingHyperParameters>;
|
|
1538
|
+
precomputedInitialParams?: PrecomputedInitialParams;
|
|
1539
|
+
/** Pre-routed connections that should not be re-routed but should appear in results */
|
|
1540
|
+
fixedRoutes?: ConnectionPathResult[];
|
|
1541
|
+
};
|
|
1511
1542
|
private clearCostCaches;
|
|
1512
1543
|
private clampPf;
|
|
1513
1544
|
/** Convert Pf into an additive "failure cost" */
|
|
@@ -1649,6 +1680,11 @@ declare class PortPointPathingSolver extends BaseSolver {
|
|
|
1649
1680
|
* test-rip connections until pf is below threshold.
|
|
1650
1681
|
*/
|
|
1651
1682
|
processRippingForPath(path: PortPointCandidate[], justRoutedConnectionName: string): void;
|
|
1683
|
+
/**
|
|
1684
|
+
* Randomly rip a fraction of already-routed connections to help escape local minima.
|
|
1685
|
+
* Rips (RANDOM_RIP_FRACTION * 100)% of processed connections, with a minimum of 1.
|
|
1686
|
+
*/
|
|
1687
|
+
private processRandomRipping;
|
|
1652
1688
|
visualize(): GraphicsObject;
|
|
1653
1689
|
}
|
|
1654
1690
|
|
|
@@ -1960,7 +1996,7 @@ interface CapacityMeshSolverOptions$3 {
|
|
|
1960
1996
|
cacheProvider?: CacheProvider | null;
|
|
1961
1997
|
effort?: number;
|
|
1962
1998
|
}
|
|
1963
|
-
type PipelineStep$
|
|
1999
|
+
type PipelineStep$4<T extends new (...args: any[]) => BaseSolver> = {
|
|
1964
2000
|
solverName: string;
|
|
1965
2001
|
solverClass: T;
|
|
1966
2002
|
getConstructorParams: (instance: AutoroutingPipelineSolver2_PortPointPathing) => ConstructorParameters<T>;
|
|
@@ -1995,7 +2031,7 @@ declare class AutoroutingPipelineSolver2_PortPointPathing extends BaseSolver {
|
|
|
1995
2031
|
capacityNodes: CapacityMeshNode[] | null;
|
|
1996
2032
|
capacityEdges: CapacityMeshEdge[] | null;
|
|
1997
2033
|
cacheProvider: CacheProvider | null;
|
|
1998
|
-
pipelineDef: (PipelineStep$
|
|
2034
|
+
pipelineDef: (PipelineStep$4<typeof NetToPointPairsSolver2_OffBoardConnection> | PipelineStep$4<typeof RectDiffPipeline> | PipelineStep$4<typeof CapacityMeshEdgeSolver2_NodeTreeOptimization> | PipelineStep$4<typeof AvailableSegmentPointSolver> | PipelineStep$4<typeof HyperPortPointPathingSolver> | PipelineStep$4<typeof MultiSectionPortPointOptimizer> | PipelineStep$4<typeof HighDensitySolver> | PipelineStep$4<typeof MultipleHighDensityRouteStitchSolver> | PipelineStep$4<typeof TraceSimplificationSolver>)[];
|
|
1999
2035
|
constructor(srj: SimpleRouteJson, opts?: CapacityMeshSolverOptions$3);
|
|
2000
2036
|
getConstructorParams(): readonly [SimpleRouteJson, CapacityMeshSolverOptions$3];
|
|
2001
2037
|
currentPipelineStepIndex: number;
|
|
@@ -2818,7 +2854,7 @@ interface CapacityMeshSolverOptions$2 {
|
|
|
2818
2854
|
targetMinCapacity?: number;
|
|
2819
2855
|
cacheProvider?: CacheProvider | null;
|
|
2820
2856
|
}
|
|
2821
|
-
type PipelineStep$
|
|
2857
|
+
type PipelineStep$3<T extends new (...args: any[]) => BaseSolver> = {
|
|
2822
2858
|
solverName: string;
|
|
2823
2859
|
solverClass: T;
|
|
2824
2860
|
getConstructorParams: (instance: AutoroutingPipeline1_OriginalUnravel) => ConstructorParameters<T>;
|
|
@@ -2855,7 +2891,7 @@ declare class AutoroutingPipeline1_OriginalUnravel extends BaseSolver {
|
|
|
2855
2891
|
capacityNodes: CapacityMeshNode[] | null;
|
|
2856
2892
|
capacityEdges: CapacityMeshEdge[] | null;
|
|
2857
2893
|
cacheProvider: CacheProvider | null;
|
|
2858
|
-
pipelineDef: (PipelineStep$
|
|
2894
|
+
pipelineDef: (PipelineStep$3<typeof NetToPointPairsSolver2_OffBoardConnection> | PipelineStep$3<typeof RectDiffPipeline> | PipelineStep$3<typeof StrawSolver> | PipelineStep$3<typeof CapacityMeshEdgeSolver2_NodeTreeOptimization> | PipelineStep$3<typeof DeadEndSolver> | PipelineStep$3<typeof CapacityPathingGreedySolver> | PipelineStep$3<typeof CapacityPathingMultiSectionSolver> | PipelineStep$3<typeof CapacityEdgeToPortSegmentSolver> | PipelineStep$3<typeof CapacitySegmentToPointSolver> | PipelineStep$3<typeof UnravelMultiSectionSolver> | PipelineStep$3<typeof HighDensitySolver> | PipelineStep$3<typeof MultipleHighDensityRouteStitchSolver> | PipelineStep$3<typeof TraceSimplificationSolver>)[];
|
|
2859
2895
|
constructor(srj: SimpleRouteJson, opts?: CapacityMeshSolverOptions$2);
|
|
2860
2896
|
getConstructorParams(): readonly [SimpleRouteJson, CapacityMeshSolverOptions$2];
|
|
2861
2897
|
currentPipelineStepIndex: number;
|
|
@@ -3371,11 +3407,243 @@ declare class IntraNodeSolverWithJumpers extends BaseSolver {
|
|
|
3371
3407
|
visualize(): GraphicsObject;
|
|
3372
3408
|
}
|
|
3373
3409
|
|
|
3410
|
+
type BucketCoordinate$1 = `${number}x${number}`;
|
|
3411
|
+
declare class CapacityNodeTree {
|
|
3412
|
+
nodes: CapacityMeshNode[];
|
|
3413
|
+
buckets: Map<BucketCoordinate$1, CapacityMeshNode[]>;
|
|
3414
|
+
CELL_SIZE: number;
|
|
3415
|
+
constructor(nodes: CapacityMeshNode[]);
|
|
3416
|
+
getBucketKey(x: number, y: number): BucketCoordinate$1;
|
|
3417
|
+
getNodesInArea(centerX: number, centerY: number, width: number, height: number): CapacityMeshNode[];
|
|
3418
|
+
}
|
|
3419
|
+
|
|
3420
|
+
/**
|
|
3421
|
+
* This solver looks at every obstacle with off board connections (one per step),
|
|
3422
|
+
* then sets _offBoardConnectedCapacityMeshNodeIds on each capacity node that is
|
|
3423
|
+
* mutually connected via off board connections
|
|
3424
|
+
*/
|
|
3425
|
+
declare class RelateNodesToOffBoardConnectionsSolver extends BaseSolver {
|
|
3426
|
+
input: {
|
|
3427
|
+
capacityMeshNodes: CapacityMeshNode[];
|
|
3428
|
+
srj: SimpleRouteJson;
|
|
3429
|
+
};
|
|
3430
|
+
unprocessedObstacles: Obstacle$1[];
|
|
3431
|
+
nodeTree: CapacityNodeTree;
|
|
3432
|
+
offBoardConnMap: ConnectivityMap$1;
|
|
3433
|
+
nodesInNet: Map<OffBoardConnectionId, CapacityMeshNode[]>;
|
|
3434
|
+
lastProcessedObstacle?: Obstacle$1;
|
|
3435
|
+
constructor(input: {
|
|
3436
|
+
capacityMeshNodes: CapacityMeshNode[];
|
|
3437
|
+
srj: SimpleRouteJson;
|
|
3438
|
+
});
|
|
3439
|
+
_step(): void;
|
|
3440
|
+
getOutput(): {
|
|
3441
|
+
capacityNodes: CapacityMeshNode[];
|
|
3442
|
+
};
|
|
3443
|
+
visualize(): GraphicsObject;
|
|
3444
|
+
}
|
|
3445
|
+
|
|
3446
|
+
type JumperFootprint = "0603" | "1206";
|
|
3447
|
+
|
|
3448
|
+
interface Obstacle {
|
|
3449
|
+
type: "rect";
|
|
3450
|
+
obstacleId: string;
|
|
3451
|
+
layers: string[];
|
|
3452
|
+
center: {
|
|
3453
|
+
x: number;
|
|
3454
|
+
y: number;
|
|
3455
|
+
};
|
|
3456
|
+
width: number;
|
|
3457
|
+
height: number;
|
|
3458
|
+
connectedTo: string[];
|
|
3459
|
+
offBoardConnectsTo?: string[];
|
|
3460
|
+
}
|
|
3461
|
+
interface PrepatternJumper {
|
|
3462
|
+
jumperId: string;
|
|
3463
|
+
start: {
|
|
3464
|
+
x: number;
|
|
3465
|
+
y: number;
|
|
3466
|
+
};
|
|
3467
|
+
end: {
|
|
3468
|
+
x: number;
|
|
3469
|
+
y: number;
|
|
3470
|
+
};
|
|
3471
|
+
footprint: JumperFootprint;
|
|
3472
|
+
offBoardConnectionId: string;
|
|
3473
|
+
}
|
|
3474
|
+
interface PatternResult {
|
|
3475
|
+
jumperPadObstacles: Obstacle[];
|
|
3476
|
+
prepatternJumpers: PrepatternJumper[];
|
|
3477
|
+
}
|
|
3478
|
+
|
|
3479
|
+
interface RemoveUnnecessaryJumpersSolverParams {
|
|
3480
|
+
/**
|
|
3481
|
+
* Input nodes from the PortPointPathingSolver
|
|
3482
|
+
*/
|
|
3483
|
+
inputNodes: InputNodeWithPortPoints[];
|
|
3484
|
+
/**
|
|
3485
|
+
* Set of jumper off-board connection IDs that were actually used by routes
|
|
3486
|
+
*/
|
|
3487
|
+
usedJumperOffBoardObstacleIds: Set<string>;
|
|
3488
|
+
/**
|
|
3489
|
+
* Connectivity map for off-board obstacles (used to check if a jumper net was used)
|
|
3490
|
+
*/
|
|
3491
|
+
offBoardConnMap?: ConnectivityMap | null;
|
|
3492
|
+
}
|
|
3493
|
+
/**
|
|
3494
|
+
* RemoveUnnecessaryJumpersSolver removes jumpers that aren't needed because
|
|
3495
|
+
* there are no traces between the pads. It converts unused jumper nodes back
|
|
3496
|
+
* to regular nodes so the high density solver can route through them normally.
|
|
3497
|
+
*
|
|
3498
|
+
* This solver runs after PortPointPathingSolver and before HighDensitySolver.
|
|
3499
|
+
*/
|
|
3500
|
+
declare class RemoveUnnecessaryJumpersSolver extends BaseSolver {
|
|
3501
|
+
inputNodes: InputNodeWithPortPoints[];
|
|
3502
|
+
usedJumperOffBoardObstacleIds: Set<string>;
|
|
3503
|
+
offBoardConnMap: ConnectivityMap | null;
|
|
3504
|
+
/**
|
|
3505
|
+
* Output nodes with unused jumper nodes converted to regular nodes
|
|
3506
|
+
*/
|
|
3507
|
+
outputNodes: InputNodeWithPortPoints[];
|
|
3508
|
+
/**
|
|
3509
|
+
* Set of off-board connection IDs that were removed
|
|
3510
|
+
*/
|
|
3511
|
+
removedOffBoardConnectionIds: Set<string>;
|
|
3512
|
+
constructor(params: RemoveUnnecessaryJumpersSolverParams);
|
|
3513
|
+
/**
|
|
3514
|
+
* Check if a jumper off-board connection ID was used
|
|
3515
|
+
*/
|
|
3516
|
+
private isJumperUsed;
|
|
3517
|
+
_step(): void;
|
|
3518
|
+
getOutput(): InputNodeWithPortPoints[];
|
|
3519
|
+
visualize(): GraphicsObject;
|
|
3520
|
+
}
|
|
3521
|
+
|
|
3522
|
+
type PatternType = "alternating_grid" | "staggered_grid";
|
|
3523
|
+
interface JumperPrepatternSolverHyperParameters {
|
|
3524
|
+
/** Orientation of jumpers - "horizontal" or "vertical" */
|
|
3525
|
+
FIRST_ORIENTATION?: "horizontal" | "vertical";
|
|
3526
|
+
/** Jumper footprint size - defaults to "0603" */
|
|
3527
|
+
JUMPER_FOOTPRINT?: JumperFootprint;
|
|
3528
|
+
/** Pattern type for jumper placement - defaults to "alternating_grid" */
|
|
3529
|
+
PATTERN_TYPE?: PatternType;
|
|
3530
|
+
}
|
|
3531
|
+
interface JumperPrepatternSolverParams {
|
|
3532
|
+
nodeWithPortPoints: NodeWithPortPoints;
|
|
3533
|
+
colorMap?: Record<string, string>;
|
|
3534
|
+
traceWidth?: number;
|
|
3535
|
+
jumperFootprint?: JumperFootprint;
|
|
3536
|
+
hyperParameters?: JumperPrepatternSolverHyperParameters;
|
|
3537
|
+
connMap?: ConnectivityMap;
|
|
3538
|
+
}
|
|
3539
|
+
type PipelineStep$2<T extends new (...args: any[]) => BaseSolver> = {
|
|
3540
|
+
solverName: string;
|
|
3541
|
+
solverClass: T;
|
|
3542
|
+
getConstructorParams: (instance: JumperPrepatternSolver) => ConstructorParameters<T>;
|
|
3543
|
+
onSolved?: (instance: JumperPrepatternSolver) => void;
|
|
3544
|
+
};
|
|
3545
|
+
declare class JumperPrepatternSolver extends BaseSolver {
|
|
3546
|
+
nodeWithPortPoints: NodeWithPortPoints;
|
|
3547
|
+
colorMap: Record<string, string>;
|
|
3548
|
+
traceWidth: number;
|
|
3549
|
+
jumperFootprint: JumperFootprint;
|
|
3550
|
+
hyperParameters: JumperPrepatternSolverHyperParameters;
|
|
3551
|
+
connMap: ConnectivityMap;
|
|
3552
|
+
prepatternJumpers: PrepatternJumper[];
|
|
3553
|
+
patternResult: PatternResult | null;
|
|
3554
|
+
capacityNodes: CapacityMeshNode[];
|
|
3555
|
+
capacityEdges: CapacityMeshEdge[];
|
|
3556
|
+
inputNodes: InputNodeWithPortPoints[];
|
|
3557
|
+
connections: SimpleRouteConnection[];
|
|
3558
|
+
srjWithPointPairs: SimpleRouteJson;
|
|
3559
|
+
nodeSolver?: RectDiffPipeline;
|
|
3560
|
+
relateNodesToOffBoardConnections?: RelateNodesToOffBoardConnectionsSolver;
|
|
3561
|
+
edgeSolver?: CapacityMeshEdgeSolver2_NodeTreeOptimization;
|
|
3562
|
+
availableSegmentPointSolver?: AvailableSegmentPointSolver;
|
|
3563
|
+
portPointPathingSolver?: HyperPortPointPathingSolver;
|
|
3564
|
+
multiSectionPortPointOptimizer?: MultiSectionPortPointOptimizer;
|
|
3565
|
+
removeUnnecessaryJumpersSolver?: RemoveUnnecessaryJumpersSolver;
|
|
3566
|
+
highDensitySolver?: SimpleHighDensitySolver;
|
|
3567
|
+
highDensityStitchSolver?: MultipleHighDensityRouteStitchSolver;
|
|
3568
|
+
activeSubSolver?: BaseSolver | null;
|
|
3569
|
+
currentPipelineStepIndex: number;
|
|
3570
|
+
startTimeOfPhase: Record<string, number>;
|
|
3571
|
+
endTimeOfPhase: Record<string, number>;
|
|
3572
|
+
timeSpentOnPhase: Record<string, number>;
|
|
3573
|
+
solvedRoutes: HighDensityIntraNodeRouteWithJumpers[];
|
|
3574
|
+
usedJumperOffBoardObstacleIds: Set<string>;
|
|
3575
|
+
allUsedJumperOffBoardIds: Set<string>;
|
|
3576
|
+
offBoardConnMap: ConnectivityMap | null;
|
|
3577
|
+
pipelineDef: (PipelineStep$2<typeof RectDiffPipeline> | PipelineStep$2<typeof RelateNodesToOffBoardConnectionsSolver> | PipelineStep$2<typeof CapacityMeshEdgeSolver2_NodeTreeOptimization> | PipelineStep$2<typeof AvailableSegmentPointSolver> | PipelineStep$2<typeof HyperPortPointPathingSolver> | PipelineStep$2<typeof RemoveUnnecessaryJumpersSolver> | PipelineStep$2<typeof SimpleHighDensitySolver> | PipelineStep$2<typeof MultipleHighDensityRouteStitchSolver>)[];
|
|
3578
|
+
constructor(params: JumperPrepatternSolverParams);
|
|
3579
|
+
getCurrentStageName(): string;
|
|
3580
|
+
_step(): void;
|
|
3581
|
+
getCurrentPhase(): string;
|
|
3582
|
+
_createSimpleRouteJson(): SimpleRouteJson;
|
|
3583
|
+
_createJumperPadObstacles(): SimpleRouteJson["obstacles"];
|
|
3584
|
+
_addPortPointObstacles(obstacles: SimpleRouteJson["obstacles"]): void;
|
|
3585
|
+
_combineResults(): void;
|
|
3586
|
+
/**
|
|
3587
|
+
* Get all used jumpers converted to the Jumper type format
|
|
3588
|
+
*/
|
|
3589
|
+
_getUsedJumpers(): Jumper[];
|
|
3590
|
+
getOutput(): HighDensityIntraNodeRouteWithJumpers[];
|
|
3591
|
+
/**
|
|
3592
|
+
* Draw the two pads of a jumper
|
|
3593
|
+
*/
|
|
3594
|
+
private _drawJumperPads;
|
|
3595
|
+
visualize(): GraphicsObject;
|
|
3596
|
+
}
|
|
3597
|
+
|
|
3598
|
+
type JumperSolver = IntraNodeSolverWithJumpers | JumperPrepatternSolver;
|
|
3599
|
+
declare class HyperIntraNodeSolverWithJumpers extends HyperParameterSupervisorSolver<JumperSolver> {
|
|
3600
|
+
constructorParams: ConstructorParameters<typeof IntraNodeSolverWithJumpers>[0];
|
|
3601
|
+
solvedRoutes: HighDensityIntraNodeRouteWithJumpers[];
|
|
3602
|
+
nodeWithPortPoints: NodeWithPortPoints;
|
|
3603
|
+
connMap?: ConnectivityMap;
|
|
3604
|
+
constructor(opts: ConstructorParameters<typeof IntraNodeSolverWithJumpers>[0]);
|
|
3605
|
+
getConstructorParams(): {
|
|
3606
|
+
nodeWithPortPoints: NodeWithPortPoints;
|
|
3607
|
+
colorMap?: Record<string, string>;
|
|
3608
|
+
hyperParameters?: Partial<HighDensityHyperParameters>;
|
|
3609
|
+
connMap?: ConnectivityMap;
|
|
3610
|
+
traceWidth?: number;
|
|
3611
|
+
};
|
|
3612
|
+
getHyperParameterDefs(): ({
|
|
3613
|
+
name: string;
|
|
3614
|
+
possibleValues: {
|
|
3615
|
+
SHUFFLE_SEED: number;
|
|
3616
|
+
}[];
|
|
3617
|
+
} | {
|
|
3618
|
+
name: string;
|
|
3619
|
+
possibleValues: Array<{
|
|
3620
|
+
USE_JUMPER_PREPATTERN: true;
|
|
3621
|
+
} & JumperPrepatternSolverHyperParameters>;
|
|
3622
|
+
} | {
|
|
3623
|
+
name: string;
|
|
3624
|
+
possibleValues: {
|
|
3625
|
+
USE_JUMPER_PREPATTERN: boolean;
|
|
3626
|
+
FIRST_ORIENTATION: string;
|
|
3627
|
+
PATTERN_TYPE: string;
|
|
3628
|
+
}[];
|
|
3629
|
+
})[];
|
|
3630
|
+
getCombinationDefs(): string[][];
|
|
3631
|
+
_step(): void;
|
|
3632
|
+
computeG(solver: JumperSolver): number;
|
|
3633
|
+
computeH(solver: JumperSolver): number;
|
|
3634
|
+
generateSolver(hyperParameters: Partial<HighDensityHyperParameters> & {
|
|
3635
|
+
USE_JUMPER_PREPATTERN?: boolean;
|
|
3636
|
+
FIRST_ORIENTATION?: "horizontal" | "vertical";
|
|
3637
|
+
PATTERN_TYPE?: "alternating_grid" | "staggered_grid";
|
|
3638
|
+
}): JumperSolver;
|
|
3639
|
+
onSolve(solver: SupervisedSolver<JumperSolver>): void;
|
|
3640
|
+
visualize(): GraphicsObject;
|
|
3641
|
+
}
|
|
3642
|
+
|
|
3374
3643
|
interface NodeAnalysis {
|
|
3375
3644
|
node: NodeWithPortPoints;
|
|
3376
3645
|
hasCrossings: boolean;
|
|
3377
3646
|
numSameLayerCrossings: number;
|
|
3378
|
-
isSingleLayer: boolean;
|
|
3379
3647
|
}
|
|
3380
3648
|
/**
|
|
3381
3649
|
* HighDensitySolver intelligently selects the appropriate solver for each node:
|
|
@@ -3387,9 +3655,7 @@ interface NodeAnalysis {
|
|
|
3387
3655
|
declare class JumperHighDensitySolver extends BaseSolver {
|
|
3388
3656
|
allNodes: NodeWithPortPoints[];
|
|
3389
3657
|
nodeAnalyses: NodeAnalysis[];
|
|
3390
|
-
routes:
|
|
3391
|
-
jumpers?: HighDensityIntraNodeRouteWithJumpers["jumpers"];
|
|
3392
|
-
})[];
|
|
3658
|
+
routes: HighDensityIntraNodeRoute$1[];
|
|
3393
3659
|
colorMap: Record<string, string>;
|
|
3394
3660
|
traceWidth: number;
|
|
3395
3661
|
viaDiameter: number;
|
|
@@ -3398,7 +3664,7 @@ declare class JumperHighDensitySolver extends BaseSolver {
|
|
|
3398
3664
|
nodesWithoutCrossings: NodeWithPortPoints[];
|
|
3399
3665
|
nodesWithCrossings: NodeWithPortPoints[];
|
|
3400
3666
|
simpleHighDensitySolver?: SimpleHighDensitySolver;
|
|
3401
|
-
jumperSolvers:
|
|
3667
|
+
jumperSolvers: HyperIntraNodeSolverWithJumpers[];
|
|
3402
3668
|
currentJumperSolverIndex: number;
|
|
3403
3669
|
phase: "analyzing" | "simple" | "jumpers" | "done";
|
|
3404
3670
|
constructor({ nodePortPoints, colorMap, traceWidth, viaDiameter, connMap, hyperParameters, }: {
|
|
@@ -3438,15 +3704,15 @@ declare class JumperHighDensitySolver extends BaseSolver {
|
|
|
3438
3704
|
declare class ObstacleSpatialHashIndex {
|
|
3439
3705
|
private idx;
|
|
3440
3706
|
private storage;
|
|
3441
|
-
constructor(implementation?: "native" | "rbush" | "flatbush", obstacles?: Obstacle[]);
|
|
3442
|
-
insert(o: Obstacle): void;
|
|
3707
|
+
constructor(implementation?: "native" | "rbush" | "flatbush", obstacles?: Obstacle$1[]);
|
|
3708
|
+
insert(o: Obstacle$1): void;
|
|
3443
3709
|
search(bbox: {
|
|
3444
3710
|
minX: number;
|
|
3445
3711
|
minY: number;
|
|
3446
3712
|
maxX: number;
|
|
3447
3713
|
maxY: number;
|
|
3448
|
-
}): Obstacle[];
|
|
3449
|
-
searchArea(centerX: number, centerY: number, width: number, height: number): Obstacle[];
|
|
3714
|
+
}): Obstacle$1[];
|
|
3715
|
+
searchArea(centerX: number, centerY: number, width: number, height: number): Obstacle$1[];
|
|
3450
3716
|
}
|
|
3451
3717
|
|
|
3452
3718
|
interface Point$1 {
|
|
@@ -3472,6 +3738,7 @@ type HighDensityIntraNodeRoute = {
|
|
|
3472
3738
|
x: number;
|
|
3473
3739
|
y: number;
|
|
3474
3740
|
}>;
|
|
3741
|
+
jumpers?: Jumper[];
|
|
3475
3742
|
};
|
|
3476
3743
|
type HighDensityRoute = HighDensityIntraNodeRoute;
|
|
3477
3744
|
declare class HighDensityRouteSpatialIndex {
|
|
@@ -3523,7 +3790,7 @@ interface Point3D$1 extends Point2D$1 {
|
|
|
3523
3790
|
}
|
|
3524
3791
|
interface TraceKeepoutSolverInput {
|
|
3525
3792
|
hdRoutes: HighDensityRoute$1[];
|
|
3526
|
-
obstacles: Obstacle[];
|
|
3793
|
+
obstacles: Obstacle$1[];
|
|
3527
3794
|
connMap: ConnectivityMap;
|
|
3528
3795
|
colorMap: Record<string, string>;
|
|
3529
3796
|
keepoutRadiusSchedule?: number[];
|
|
@@ -3605,7 +3872,7 @@ interface Point3D extends Point2D {
|
|
|
3605
3872
|
}
|
|
3606
3873
|
interface TraceWidthSolverInput {
|
|
3607
3874
|
hdRoutes: HighDensityRoute$1[];
|
|
3608
|
-
obstacles?: Obstacle[];
|
|
3875
|
+
obstacles?: Obstacle$1[];
|
|
3609
3876
|
connMap?: ConnectivityMap;
|
|
3610
3877
|
colorMap?: Record<string, string>;
|
|
3611
3878
|
nominalTraceWidth?: number;
|
|
@@ -3642,10 +3909,10 @@ declare class TraceWidthSolver extends BaseSolver {
|
|
|
3642
3909
|
currentWalkMinClearance: number;
|
|
3643
3910
|
bestMinClearance: number;
|
|
3644
3911
|
bestWidth: number;
|
|
3645
|
-
lastCollidingObstacles: Obstacle[];
|
|
3912
|
+
lastCollidingObstacles: Obstacle$1[];
|
|
3646
3913
|
lastCollidingRoutes: HighDensityRoute$1[];
|
|
3647
3914
|
lastClearance: number;
|
|
3648
|
-
obstacles: Obstacle[];
|
|
3915
|
+
obstacles: Obstacle$1[];
|
|
3649
3916
|
obstacleSHI?: ObstacleSpatialHashIndex;
|
|
3650
3917
|
hdRouteSHI: HighDensityRouteSpatialIndex;
|
|
3651
3918
|
connMap?: ConnectivityMap;
|
|
@@ -3731,7 +3998,7 @@ declare class PortPointOffboardPathFragmentSolver extends BaseSolver {
|
|
|
3731
3998
|
currentObstacleIndex: number;
|
|
3732
3999
|
/** Obstacles that have offBoardConnectsTo defined */
|
|
3733
4000
|
offboardObstacles: Array<{
|
|
3734
|
-
obstacle: Obstacle;
|
|
4001
|
+
obstacle: Obstacle$1;
|
|
3735
4002
|
index: number;
|
|
3736
4003
|
}>;
|
|
3737
4004
|
/** Port points created at obstacle centers */
|
|
@@ -3748,7 +4015,7 @@ declare class PortPointOffboardPathFragmentSolver extends BaseSolver {
|
|
|
3748
4015
|
currentFragmentIndex: number;
|
|
3749
4016
|
/** Last processed obstacle (for visualization) */
|
|
3750
4017
|
lastProcessedObstacle: {
|
|
3751
|
-
obstacle: Obstacle;
|
|
4018
|
+
obstacle: Obstacle$1;
|
|
3752
4019
|
index: number;
|
|
3753
4020
|
} | null;
|
|
3754
4021
|
/** Last created port point (for visualization) */
|
|
@@ -3770,42 +4037,6 @@ declare class PortPointOffboardPathFragmentSolver extends BaseSolver {
|
|
|
3770
4037
|
visualize(): GraphicsObject;
|
|
3771
4038
|
}
|
|
3772
4039
|
|
|
3773
|
-
type BucketCoordinate$1 = `${number}x${number}`;
|
|
3774
|
-
declare class CapacityNodeTree {
|
|
3775
|
-
nodes: CapacityMeshNode[];
|
|
3776
|
-
buckets: Map<BucketCoordinate$1, CapacityMeshNode[]>;
|
|
3777
|
-
CELL_SIZE: number;
|
|
3778
|
-
constructor(nodes: CapacityMeshNode[]);
|
|
3779
|
-
getBucketKey(x: number, y: number): BucketCoordinate$1;
|
|
3780
|
-
getNodesInArea(centerX: number, centerY: number, width: number, height: number): CapacityMeshNode[];
|
|
3781
|
-
}
|
|
3782
|
-
|
|
3783
|
-
/**
|
|
3784
|
-
* This solver looks at every obstacle with off board connections (one per step),
|
|
3785
|
-
* then sets _offBoardConnectedCapacityMeshNodeIds on each capacity node that is
|
|
3786
|
-
* mutually connected via off board connections
|
|
3787
|
-
*/
|
|
3788
|
-
declare class RelateNodesToOffBoardConnectionsSolver extends BaseSolver {
|
|
3789
|
-
input: {
|
|
3790
|
-
capacityMeshNodes: CapacityMeshNode[];
|
|
3791
|
-
srj: SimpleRouteJson;
|
|
3792
|
-
};
|
|
3793
|
-
unprocessedObstacles: Obstacle[];
|
|
3794
|
-
nodeTree: CapacityNodeTree;
|
|
3795
|
-
offBoardConnMap: ConnectivityMap$1;
|
|
3796
|
-
nodesInNet: Map<OffBoardConnectionId, CapacityMeshNode[]>;
|
|
3797
|
-
lastProcessedObstacle?: Obstacle;
|
|
3798
|
-
constructor(input: {
|
|
3799
|
-
capacityMeshNodes: CapacityMeshNode[];
|
|
3800
|
-
srj: SimpleRouteJson;
|
|
3801
|
-
});
|
|
3802
|
-
_step(): void;
|
|
3803
|
-
getOutput(): {
|
|
3804
|
-
capacityNodes: CapacityMeshNode[];
|
|
3805
|
-
};
|
|
3806
|
-
visualize(): GraphicsObject;
|
|
3807
|
-
}
|
|
3808
|
-
|
|
3809
4040
|
interface CapacityMeshSolverOptions$1 {
|
|
3810
4041
|
capacityDepth?: number;
|
|
3811
4042
|
targetMinCapacity?: number;
|
|
@@ -4050,7 +4281,7 @@ declare class CapacityMeshNodeSolver extends BaseSolver {
|
|
|
4050
4281
|
opts: CapacityMeshNodeSolverOptions$2;
|
|
4051
4282
|
unfinishedNodes: CapacityMeshNode[];
|
|
4052
4283
|
finishedNodes: CapacityMeshNode[];
|
|
4053
|
-
nodeToXYOverlappingObstaclesMap: Map<CapacityMeshNodeId, Obstacle[]>;
|
|
4284
|
+
nodeToXYOverlappingObstaclesMap: Map<CapacityMeshNodeId, Obstacle$1[]>;
|
|
4054
4285
|
layerCount: number;
|
|
4055
4286
|
protected outlinePolygon?: Polygon;
|
|
4056
4287
|
MAX_DEPTH: number;
|
|
@@ -4077,8 +4308,8 @@ declare class CapacityMeshNodeSolver extends BaseSolver {
|
|
|
4077
4308
|
getNextNodeId(): string;
|
|
4078
4309
|
getCapacityFromDepth(depth: number): number;
|
|
4079
4310
|
getTargetIfNodeContainsTarget(node: CapacityMeshNode): Target | null;
|
|
4080
|
-
getXYOverlappingObstacles(node: CapacityMeshNode): Obstacle[];
|
|
4081
|
-
getXYZOverlappingObstacles(node: CapacityMeshNode): Obstacle[];
|
|
4311
|
+
getXYOverlappingObstacles(node: CapacityMeshNode): Obstacle$1[];
|
|
4312
|
+
getXYZOverlappingObstacles(node: CapacityMeshNode): Obstacle$1[];
|
|
4082
4313
|
/**
|
|
4083
4314
|
* Checks if the given mesh node overlaps with any obstacle.
|
|
4084
4315
|
* We treat both obstacles and nodes as axis‐aligned rectangles.
|
|
@@ -4218,8 +4449,8 @@ declare class SingleLayerNodeMergerSolver_OnlyMergeTargets extends BaseSolver {
|
|
|
4218
4449
|
*/
|
|
4219
4450
|
declare class AssignableViaNodeMergerSolver extends BaseSolver {
|
|
4220
4451
|
newNodes: CapacityMeshNode[];
|
|
4221
|
-
obstacleToNodesMap: Map<Obstacle, CapacityMeshNode[]>;
|
|
4222
|
-
obstaclesToProcess: Obstacle[];
|
|
4452
|
+
obstacleToNodesMap: Map<Obstacle$1, CapacityMeshNode[]>;
|
|
4453
|
+
obstaclesToProcess: Obstacle$1[];
|
|
4223
4454
|
mergedNodeIds: Set<CapacityMeshNodeId>;
|
|
4224
4455
|
constructor(nodes: CapacityMeshNode[]);
|
|
4225
4456
|
_step(): void;
|
|
@@ -4238,7 +4469,7 @@ declare class SingleSimplifiedPathSolver extends BaseSolver {
|
|
|
4238
4469
|
tailIndex: number;
|
|
4239
4470
|
inputRoute: HighDensityIntraNodeRoute$1;
|
|
4240
4471
|
otherHdRoutes: HighDensityIntraNodeRoute$1[];
|
|
4241
|
-
obstacles: Obstacle[];
|
|
4472
|
+
obstacles: Obstacle$1[];
|
|
4242
4473
|
connMap: ConnectivityMap;
|
|
4243
4474
|
colorMap: Record<string, string>;
|
|
4244
4475
|
outline?: Array<{
|
|
@@ -4248,7 +4479,7 @@ declare class SingleSimplifiedPathSolver extends BaseSolver {
|
|
|
4248
4479
|
constructor(params: {
|
|
4249
4480
|
inputRoute: HighDensityIntraNodeRoute$1;
|
|
4250
4481
|
otherHdRoutes: HighDensityIntraNodeRoute$1[];
|
|
4251
|
-
obstacles: Obstacle[];
|
|
4482
|
+
obstacles: Obstacle$1[];
|
|
4252
4483
|
connMap: ConnectivityMap;
|
|
4253
4484
|
colorMap: Record<string, string>;
|
|
4254
4485
|
outline?: Array<{
|
|
@@ -4259,7 +4490,7 @@ declare class SingleSimplifiedPathSolver extends BaseSolver {
|
|
|
4259
4490
|
getConstructorParams(): {
|
|
4260
4491
|
inputRoute: HighDensityIntraNodeRoute$1;
|
|
4261
4492
|
otherHdRoutes: HighDensityIntraNodeRoute$1[];
|
|
4262
|
-
obstacles: Obstacle[];
|
|
4493
|
+
obstacles: Obstacle$1[];
|
|
4263
4494
|
connMap: Record<string, string[]>;
|
|
4264
4495
|
colorMap: Record<string, string>;
|
|
4265
4496
|
outline: {
|
|
@@ -4278,7 +4509,7 @@ declare class MultiSimplifiedPathSolver extends BaseSolver {
|
|
|
4278
4509
|
currentUnsimplifiedHdRouteIndex: number;
|
|
4279
4510
|
activeSubSolver: SingleSimplifiedPathSolver | null;
|
|
4280
4511
|
unsimplifiedHdRoutes: HighDensityIntraNodeRoute$1[];
|
|
4281
|
-
obstacles: Obstacle[];
|
|
4512
|
+
obstacles: Obstacle$1[];
|
|
4282
4513
|
connMap: ConnectivityMap;
|
|
4283
4514
|
colorMap: Record<string, string>;
|
|
4284
4515
|
outline?: Array<{
|
|
@@ -4288,7 +4519,7 @@ declare class MultiSimplifiedPathSolver extends BaseSolver {
|
|
|
4288
4519
|
defaultViaDiameter: number;
|
|
4289
4520
|
constructor(params: {
|
|
4290
4521
|
unsimplifiedHdRoutes: HighDensityIntraNodeRoute$1[];
|
|
4291
|
-
obstacles: Obstacle[];
|
|
4522
|
+
obstacles: Obstacle$1[];
|
|
4292
4523
|
connMap?: ConnectivityMap;
|
|
4293
4524
|
colorMap?: Record<string, string>;
|
|
4294
4525
|
outline?: Array<{
|
|
@@ -4343,7 +4574,7 @@ declare class SingleRouteUselessViaRemovalSolver extends BaseSolver {
|
|
|
4343
4574
|
|
|
4344
4575
|
interface UselessViaRemovalSolverInput {
|
|
4345
4576
|
unsimplifiedHdRoutes: HighDensityRoute$1[];
|
|
4346
|
-
obstacles: Obstacle[];
|
|
4577
|
+
obstacles: Obstacle$1[];
|
|
4347
4578
|
colorMap: Record<string, string>;
|
|
4348
4579
|
layerCount: number;
|
|
4349
4580
|
}
|