@tscircuit/capacity-autorouter 0.0.228 → 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 +296 -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<{
|
|
@@ -1328,6 +1330,8 @@ interface PortPointPathingHyperParameters {
|
|
|
1328
1330
|
RIPPING_PF_THRESHOLD?: number;
|
|
1329
1331
|
MAX_RIPS?: number;
|
|
1330
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;
|
|
1331
1335
|
}
|
|
1332
1336
|
/**
|
|
1333
1337
|
* An input port point without connectionName assigned yet.
|
|
@@ -1419,6 +1423,17 @@ interface ConnectionPathResult {
|
|
|
1419
1423
|
* - prevents node cycles in a candidate chain (keeps Pf math correct without needing per-node multi-visit tracking)
|
|
1420
1424
|
*/
|
|
1421
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
|
+
};
|
|
1422
1437
|
hyperParameters: Partial<PortPointPathingHyperParameters>;
|
|
1423
1438
|
simpleRouteJson: SimpleRouteJson;
|
|
1424
1439
|
inputNodes: InputNodeWithPortPoints[];
|
|
@@ -1470,6 +1485,9 @@ declare class PortPointPathingSolver extends BaseSolver {
|
|
|
1470
1485
|
get RIPPING_PF_THRESHOLD(): number;
|
|
1471
1486
|
get MAX_RIPS(): number;
|
|
1472
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;
|
|
1473
1491
|
/** Tracks which connections have been test-ripped for each node to avoid retesting */
|
|
1474
1492
|
testedRipConnections: Map<CapacityMeshNodeId, Set<string>>;
|
|
1475
1493
|
/** Tracks total number of connections that have been ripped/requeued */
|
|
@@ -1499,7 +1517,7 @@ declare class PortPointPathingSolver extends BaseSolver {
|
|
|
1499
1517
|
offBoardNodes: InputNodeWithPortPoints[];
|
|
1500
1518
|
/** Cache of base node cost (cost of node in current committed state) */
|
|
1501
1519
|
private baseNodeCostCache;
|
|
1502
|
-
constructor(
|
|
1520
|
+
constructor(input: {
|
|
1503
1521
|
simpleRouteJson: SimpleRouteJson;
|
|
1504
1522
|
capacityMeshNodes: CapacityMeshNode[];
|
|
1505
1523
|
inputNodes: InputNodeWithPortPoints[];
|
|
@@ -1510,6 +1528,17 @@ declare class PortPointPathingSolver extends BaseSolver {
|
|
|
1510
1528
|
/** Pre-routed connections that should not be re-routed but should appear in results */
|
|
1511
1529
|
fixedRoutes?: ConnectionPathResult[];
|
|
1512
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
|
+
};
|
|
1513
1542
|
private clearCostCaches;
|
|
1514
1543
|
private clampPf;
|
|
1515
1544
|
/** Convert Pf into an additive "failure cost" */
|
|
@@ -1967,7 +1996,7 @@ interface CapacityMeshSolverOptions$3 {
|
|
|
1967
1996
|
cacheProvider?: CacheProvider | null;
|
|
1968
1997
|
effort?: number;
|
|
1969
1998
|
}
|
|
1970
|
-
type PipelineStep$
|
|
1999
|
+
type PipelineStep$4<T extends new (...args: any[]) => BaseSolver> = {
|
|
1971
2000
|
solverName: string;
|
|
1972
2001
|
solverClass: T;
|
|
1973
2002
|
getConstructorParams: (instance: AutoroutingPipelineSolver2_PortPointPathing) => ConstructorParameters<T>;
|
|
@@ -2002,7 +2031,7 @@ declare class AutoroutingPipelineSolver2_PortPointPathing extends BaseSolver {
|
|
|
2002
2031
|
capacityNodes: CapacityMeshNode[] | null;
|
|
2003
2032
|
capacityEdges: CapacityMeshEdge[] | null;
|
|
2004
2033
|
cacheProvider: CacheProvider | null;
|
|
2005
|
-
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>)[];
|
|
2006
2035
|
constructor(srj: SimpleRouteJson, opts?: CapacityMeshSolverOptions$3);
|
|
2007
2036
|
getConstructorParams(): readonly [SimpleRouteJson, CapacityMeshSolverOptions$3];
|
|
2008
2037
|
currentPipelineStepIndex: number;
|
|
@@ -2825,7 +2854,7 @@ interface CapacityMeshSolverOptions$2 {
|
|
|
2825
2854
|
targetMinCapacity?: number;
|
|
2826
2855
|
cacheProvider?: CacheProvider | null;
|
|
2827
2856
|
}
|
|
2828
|
-
type PipelineStep$
|
|
2857
|
+
type PipelineStep$3<T extends new (...args: any[]) => BaseSolver> = {
|
|
2829
2858
|
solverName: string;
|
|
2830
2859
|
solverClass: T;
|
|
2831
2860
|
getConstructorParams: (instance: AutoroutingPipeline1_OriginalUnravel) => ConstructorParameters<T>;
|
|
@@ -2862,7 +2891,7 @@ declare class AutoroutingPipeline1_OriginalUnravel extends BaseSolver {
|
|
|
2862
2891
|
capacityNodes: CapacityMeshNode[] | null;
|
|
2863
2892
|
capacityEdges: CapacityMeshEdge[] | null;
|
|
2864
2893
|
cacheProvider: CacheProvider | null;
|
|
2865
|
-
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>)[];
|
|
2866
2895
|
constructor(srj: SimpleRouteJson, opts?: CapacityMeshSolverOptions$2);
|
|
2867
2896
|
getConstructorParams(): readonly [SimpleRouteJson, CapacityMeshSolverOptions$2];
|
|
2868
2897
|
currentPipelineStepIndex: number;
|
|
@@ -3378,11 +3407,243 @@ declare class IntraNodeSolverWithJumpers extends BaseSolver {
|
|
|
3378
3407
|
visualize(): GraphicsObject;
|
|
3379
3408
|
}
|
|
3380
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
|
+
|
|
3381
3643
|
interface NodeAnalysis {
|
|
3382
3644
|
node: NodeWithPortPoints;
|
|
3383
3645
|
hasCrossings: boolean;
|
|
3384
3646
|
numSameLayerCrossings: number;
|
|
3385
|
-
isSingleLayer: boolean;
|
|
3386
3647
|
}
|
|
3387
3648
|
/**
|
|
3388
3649
|
* HighDensitySolver intelligently selects the appropriate solver for each node:
|
|
@@ -3394,9 +3655,7 @@ interface NodeAnalysis {
|
|
|
3394
3655
|
declare class JumperHighDensitySolver extends BaseSolver {
|
|
3395
3656
|
allNodes: NodeWithPortPoints[];
|
|
3396
3657
|
nodeAnalyses: NodeAnalysis[];
|
|
3397
|
-
routes:
|
|
3398
|
-
jumpers?: HighDensityIntraNodeRouteWithJumpers["jumpers"];
|
|
3399
|
-
})[];
|
|
3658
|
+
routes: HighDensityIntraNodeRoute$1[];
|
|
3400
3659
|
colorMap: Record<string, string>;
|
|
3401
3660
|
traceWidth: number;
|
|
3402
3661
|
viaDiameter: number;
|
|
@@ -3405,7 +3664,7 @@ declare class JumperHighDensitySolver extends BaseSolver {
|
|
|
3405
3664
|
nodesWithoutCrossings: NodeWithPortPoints[];
|
|
3406
3665
|
nodesWithCrossings: NodeWithPortPoints[];
|
|
3407
3666
|
simpleHighDensitySolver?: SimpleHighDensitySolver;
|
|
3408
|
-
jumperSolvers:
|
|
3667
|
+
jumperSolvers: HyperIntraNodeSolverWithJumpers[];
|
|
3409
3668
|
currentJumperSolverIndex: number;
|
|
3410
3669
|
phase: "analyzing" | "simple" | "jumpers" | "done";
|
|
3411
3670
|
constructor({ nodePortPoints, colorMap, traceWidth, viaDiameter, connMap, hyperParameters, }: {
|
|
@@ -3445,15 +3704,15 @@ declare class JumperHighDensitySolver extends BaseSolver {
|
|
|
3445
3704
|
declare class ObstacleSpatialHashIndex {
|
|
3446
3705
|
private idx;
|
|
3447
3706
|
private storage;
|
|
3448
|
-
constructor(implementation?: "native" | "rbush" | "flatbush", obstacles?: Obstacle[]);
|
|
3449
|
-
insert(o: Obstacle): void;
|
|
3707
|
+
constructor(implementation?: "native" | "rbush" | "flatbush", obstacles?: Obstacle$1[]);
|
|
3708
|
+
insert(o: Obstacle$1): void;
|
|
3450
3709
|
search(bbox: {
|
|
3451
3710
|
minX: number;
|
|
3452
3711
|
minY: number;
|
|
3453
3712
|
maxX: number;
|
|
3454
3713
|
maxY: number;
|
|
3455
|
-
}): Obstacle[];
|
|
3456
|
-
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[];
|
|
3457
3716
|
}
|
|
3458
3717
|
|
|
3459
3718
|
interface Point$1 {
|
|
@@ -3479,6 +3738,7 @@ type HighDensityIntraNodeRoute = {
|
|
|
3479
3738
|
x: number;
|
|
3480
3739
|
y: number;
|
|
3481
3740
|
}>;
|
|
3741
|
+
jumpers?: Jumper[];
|
|
3482
3742
|
};
|
|
3483
3743
|
type HighDensityRoute = HighDensityIntraNodeRoute;
|
|
3484
3744
|
declare class HighDensityRouteSpatialIndex {
|
|
@@ -3530,7 +3790,7 @@ interface Point3D$1 extends Point2D$1 {
|
|
|
3530
3790
|
}
|
|
3531
3791
|
interface TraceKeepoutSolverInput {
|
|
3532
3792
|
hdRoutes: HighDensityRoute$1[];
|
|
3533
|
-
obstacles: Obstacle[];
|
|
3793
|
+
obstacles: Obstacle$1[];
|
|
3534
3794
|
connMap: ConnectivityMap;
|
|
3535
3795
|
colorMap: Record<string, string>;
|
|
3536
3796
|
keepoutRadiusSchedule?: number[];
|
|
@@ -3612,7 +3872,7 @@ interface Point3D extends Point2D {
|
|
|
3612
3872
|
}
|
|
3613
3873
|
interface TraceWidthSolverInput {
|
|
3614
3874
|
hdRoutes: HighDensityRoute$1[];
|
|
3615
|
-
obstacles?: Obstacle[];
|
|
3875
|
+
obstacles?: Obstacle$1[];
|
|
3616
3876
|
connMap?: ConnectivityMap;
|
|
3617
3877
|
colorMap?: Record<string, string>;
|
|
3618
3878
|
nominalTraceWidth?: number;
|
|
@@ -3649,10 +3909,10 @@ declare class TraceWidthSolver extends BaseSolver {
|
|
|
3649
3909
|
currentWalkMinClearance: number;
|
|
3650
3910
|
bestMinClearance: number;
|
|
3651
3911
|
bestWidth: number;
|
|
3652
|
-
lastCollidingObstacles: Obstacle[];
|
|
3912
|
+
lastCollidingObstacles: Obstacle$1[];
|
|
3653
3913
|
lastCollidingRoutes: HighDensityRoute$1[];
|
|
3654
3914
|
lastClearance: number;
|
|
3655
|
-
obstacles: Obstacle[];
|
|
3915
|
+
obstacles: Obstacle$1[];
|
|
3656
3916
|
obstacleSHI?: ObstacleSpatialHashIndex;
|
|
3657
3917
|
hdRouteSHI: HighDensityRouteSpatialIndex;
|
|
3658
3918
|
connMap?: ConnectivityMap;
|
|
@@ -3738,7 +3998,7 @@ declare class PortPointOffboardPathFragmentSolver extends BaseSolver {
|
|
|
3738
3998
|
currentObstacleIndex: number;
|
|
3739
3999
|
/** Obstacles that have offBoardConnectsTo defined */
|
|
3740
4000
|
offboardObstacles: Array<{
|
|
3741
|
-
obstacle: Obstacle;
|
|
4001
|
+
obstacle: Obstacle$1;
|
|
3742
4002
|
index: number;
|
|
3743
4003
|
}>;
|
|
3744
4004
|
/** Port points created at obstacle centers */
|
|
@@ -3755,7 +4015,7 @@ declare class PortPointOffboardPathFragmentSolver extends BaseSolver {
|
|
|
3755
4015
|
currentFragmentIndex: number;
|
|
3756
4016
|
/** Last processed obstacle (for visualization) */
|
|
3757
4017
|
lastProcessedObstacle: {
|
|
3758
|
-
obstacle: Obstacle;
|
|
4018
|
+
obstacle: Obstacle$1;
|
|
3759
4019
|
index: number;
|
|
3760
4020
|
} | null;
|
|
3761
4021
|
/** Last created port point (for visualization) */
|
|
@@ -3777,42 +4037,6 @@ declare class PortPointOffboardPathFragmentSolver extends BaseSolver {
|
|
|
3777
4037
|
visualize(): GraphicsObject;
|
|
3778
4038
|
}
|
|
3779
4039
|
|
|
3780
|
-
type BucketCoordinate$1 = `${number}x${number}`;
|
|
3781
|
-
declare class CapacityNodeTree {
|
|
3782
|
-
nodes: CapacityMeshNode[];
|
|
3783
|
-
buckets: Map<BucketCoordinate$1, CapacityMeshNode[]>;
|
|
3784
|
-
CELL_SIZE: number;
|
|
3785
|
-
constructor(nodes: CapacityMeshNode[]);
|
|
3786
|
-
getBucketKey(x: number, y: number): BucketCoordinate$1;
|
|
3787
|
-
getNodesInArea(centerX: number, centerY: number, width: number, height: number): CapacityMeshNode[];
|
|
3788
|
-
}
|
|
3789
|
-
|
|
3790
|
-
/**
|
|
3791
|
-
* This solver looks at every obstacle with off board connections (one per step),
|
|
3792
|
-
* then sets _offBoardConnectedCapacityMeshNodeIds on each capacity node that is
|
|
3793
|
-
* mutually connected via off board connections
|
|
3794
|
-
*/
|
|
3795
|
-
declare class RelateNodesToOffBoardConnectionsSolver extends BaseSolver {
|
|
3796
|
-
input: {
|
|
3797
|
-
capacityMeshNodes: CapacityMeshNode[];
|
|
3798
|
-
srj: SimpleRouteJson;
|
|
3799
|
-
};
|
|
3800
|
-
unprocessedObstacles: Obstacle[];
|
|
3801
|
-
nodeTree: CapacityNodeTree;
|
|
3802
|
-
offBoardConnMap: ConnectivityMap$1;
|
|
3803
|
-
nodesInNet: Map<OffBoardConnectionId, CapacityMeshNode[]>;
|
|
3804
|
-
lastProcessedObstacle?: Obstacle;
|
|
3805
|
-
constructor(input: {
|
|
3806
|
-
capacityMeshNodes: CapacityMeshNode[];
|
|
3807
|
-
srj: SimpleRouteJson;
|
|
3808
|
-
});
|
|
3809
|
-
_step(): void;
|
|
3810
|
-
getOutput(): {
|
|
3811
|
-
capacityNodes: CapacityMeshNode[];
|
|
3812
|
-
};
|
|
3813
|
-
visualize(): GraphicsObject;
|
|
3814
|
-
}
|
|
3815
|
-
|
|
3816
4040
|
interface CapacityMeshSolverOptions$1 {
|
|
3817
4041
|
capacityDepth?: number;
|
|
3818
4042
|
targetMinCapacity?: number;
|
|
@@ -4057,7 +4281,7 @@ declare class CapacityMeshNodeSolver extends BaseSolver {
|
|
|
4057
4281
|
opts: CapacityMeshNodeSolverOptions$2;
|
|
4058
4282
|
unfinishedNodes: CapacityMeshNode[];
|
|
4059
4283
|
finishedNodes: CapacityMeshNode[];
|
|
4060
|
-
nodeToXYOverlappingObstaclesMap: Map<CapacityMeshNodeId, Obstacle[]>;
|
|
4284
|
+
nodeToXYOverlappingObstaclesMap: Map<CapacityMeshNodeId, Obstacle$1[]>;
|
|
4061
4285
|
layerCount: number;
|
|
4062
4286
|
protected outlinePolygon?: Polygon;
|
|
4063
4287
|
MAX_DEPTH: number;
|
|
@@ -4084,8 +4308,8 @@ declare class CapacityMeshNodeSolver extends BaseSolver {
|
|
|
4084
4308
|
getNextNodeId(): string;
|
|
4085
4309
|
getCapacityFromDepth(depth: number): number;
|
|
4086
4310
|
getTargetIfNodeContainsTarget(node: CapacityMeshNode): Target | null;
|
|
4087
|
-
getXYOverlappingObstacles(node: CapacityMeshNode): Obstacle[];
|
|
4088
|
-
getXYZOverlappingObstacles(node: CapacityMeshNode): Obstacle[];
|
|
4311
|
+
getXYOverlappingObstacles(node: CapacityMeshNode): Obstacle$1[];
|
|
4312
|
+
getXYZOverlappingObstacles(node: CapacityMeshNode): Obstacle$1[];
|
|
4089
4313
|
/**
|
|
4090
4314
|
* Checks if the given mesh node overlaps with any obstacle.
|
|
4091
4315
|
* We treat both obstacles and nodes as axis‐aligned rectangles.
|
|
@@ -4225,8 +4449,8 @@ declare class SingleLayerNodeMergerSolver_OnlyMergeTargets extends BaseSolver {
|
|
|
4225
4449
|
*/
|
|
4226
4450
|
declare class AssignableViaNodeMergerSolver extends BaseSolver {
|
|
4227
4451
|
newNodes: CapacityMeshNode[];
|
|
4228
|
-
obstacleToNodesMap: Map<Obstacle, CapacityMeshNode[]>;
|
|
4229
|
-
obstaclesToProcess: Obstacle[];
|
|
4452
|
+
obstacleToNodesMap: Map<Obstacle$1, CapacityMeshNode[]>;
|
|
4453
|
+
obstaclesToProcess: Obstacle$1[];
|
|
4230
4454
|
mergedNodeIds: Set<CapacityMeshNodeId>;
|
|
4231
4455
|
constructor(nodes: CapacityMeshNode[]);
|
|
4232
4456
|
_step(): void;
|
|
@@ -4245,7 +4469,7 @@ declare class SingleSimplifiedPathSolver extends BaseSolver {
|
|
|
4245
4469
|
tailIndex: number;
|
|
4246
4470
|
inputRoute: HighDensityIntraNodeRoute$1;
|
|
4247
4471
|
otherHdRoutes: HighDensityIntraNodeRoute$1[];
|
|
4248
|
-
obstacles: Obstacle[];
|
|
4472
|
+
obstacles: Obstacle$1[];
|
|
4249
4473
|
connMap: ConnectivityMap;
|
|
4250
4474
|
colorMap: Record<string, string>;
|
|
4251
4475
|
outline?: Array<{
|
|
@@ -4255,7 +4479,7 @@ declare class SingleSimplifiedPathSolver extends BaseSolver {
|
|
|
4255
4479
|
constructor(params: {
|
|
4256
4480
|
inputRoute: HighDensityIntraNodeRoute$1;
|
|
4257
4481
|
otherHdRoutes: HighDensityIntraNodeRoute$1[];
|
|
4258
|
-
obstacles: Obstacle[];
|
|
4482
|
+
obstacles: Obstacle$1[];
|
|
4259
4483
|
connMap: ConnectivityMap;
|
|
4260
4484
|
colorMap: Record<string, string>;
|
|
4261
4485
|
outline?: Array<{
|
|
@@ -4266,7 +4490,7 @@ declare class SingleSimplifiedPathSolver extends BaseSolver {
|
|
|
4266
4490
|
getConstructorParams(): {
|
|
4267
4491
|
inputRoute: HighDensityIntraNodeRoute$1;
|
|
4268
4492
|
otherHdRoutes: HighDensityIntraNodeRoute$1[];
|
|
4269
|
-
obstacles: Obstacle[];
|
|
4493
|
+
obstacles: Obstacle$1[];
|
|
4270
4494
|
connMap: Record<string, string[]>;
|
|
4271
4495
|
colorMap: Record<string, string>;
|
|
4272
4496
|
outline: {
|
|
@@ -4285,7 +4509,7 @@ declare class MultiSimplifiedPathSolver extends BaseSolver {
|
|
|
4285
4509
|
currentUnsimplifiedHdRouteIndex: number;
|
|
4286
4510
|
activeSubSolver: SingleSimplifiedPathSolver | null;
|
|
4287
4511
|
unsimplifiedHdRoutes: HighDensityIntraNodeRoute$1[];
|
|
4288
|
-
obstacles: Obstacle[];
|
|
4512
|
+
obstacles: Obstacle$1[];
|
|
4289
4513
|
connMap: ConnectivityMap;
|
|
4290
4514
|
colorMap: Record<string, string>;
|
|
4291
4515
|
outline?: Array<{
|
|
@@ -4295,7 +4519,7 @@ declare class MultiSimplifiedPathSolver extends BaseSolver {
|
|
|
4295
4519
|
defaultViaDiameter: number;
|
|
4296
4520
|
constructor(params: {
|
|
4297
4521
|
unsimplifiedHdRoutes: HighDensityIntraNodeRoute$1[];
|
|
4298
|
-
obstacles: Obstacle[];
|
|
4522
|
+
obstacles: Obstacle$1[];
|
|
4299
4523
|
connMap?: ConnectivityMap;
|
|
4300
4524
|
colorMap?: Record<string, string>;
|
|
4301
4525
|
outline?: Array<{
|
|
@@ -4350,7 +4574,7 @@ declare class SingleRouteUselessViaRemovalSolver extends BaseSolver {
|
|
|
4350
4574
|
|
|
4351
4575
|
interface UselessViaRemovalSolverInput {
|
|
4352
4576
|
unsimplifiedHdRoutes: HighDensityRoute$1[];
|
|
4353
|
-
obstacles: Obstacle[];
|
|
4577
|
+
obstacles: Obstacle$1[];
|
|
4354
4578
|
colorMap: Record<string, string>;
|
|
4355
4579
|
layerCount: number;
|
|
4356
4580
|
}
|