@tscircuit/capacity-autorouter 0.0.798 → 0.0.800

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 CHANGED
@@ -1147,16 +1147,6 @@ type Node = {
1147
1147
  declare class SingleRouteCandidatePriorityQueue<T extends Node = Node> {
1148
1148
  private heap;
1149
1149
  constructor(nodes: T[]);
1150
- private getLeftChildIndex;
1151
- private getRightChildIndex;
1152
- private getParentIndex;
1153
- private hasLeftChild;
1154
- private hasRightChild;
1155
- private hasParent;
1156
- private leftChild;
1157
- private rightChild;
1158
- private parent;
1159
- private swap;
1160
1150
  dequeue(): T | null;
1161
1151
  peek(): T | null;
1162
1152
  enqueue(item: T): void;
@@ -1218,7 +1208,15 @@ declare class SingleHighDensityRouteSolver extends BaseSolver {
1218
1208
  VIA_PENALTY_FACTOR: number;
1219
1209
  CELL_SIZE_FACTOR: number;
1220
1210
  NEARBY_SEGMENT_CLEARANCE: number;
1221
- exploredNodes: Set<string>;
1211
+ exploredNodes: Set<number>;
1212
+ viasInPathByNode: WeakMap<Node, {
1213
+ x: number;
1214
+ y: number;
1215
+ }[]>;
1216
+ gridMinXIndex: number;
1217
+ gridMinYIndex: number;
1218
+ gridWidth: number;
1219
+ gridHeight: number;
1222
1220
  candidates: SingleRouteCandidatePriorityQueue;
1223
1221
  connectionName: string;
1224
1222
  rootConnectionName?: string;
@@ -1229,12 +1227,19 @@ declare class SingleHighDensityRouteSolver extends BaseSolver {
1229
1227
  connMap?: ConnectivityMap;
1230
1228
  obstacleSegments: IndexedObstacleSegment[];
1231
1229
  obstacleSegmentIndex: Flatbush | null;
1230
+ obstacleSegmentsByLayer: Map<number, IndexedObstacleSegment[]>;
1231
+ obstacleSegmentIndexByLayer: Map<number, Flatbush>;
1232
1232
  obstacleVias: IndexedObstacleVia[];
1233
1233
  obstacleViaIndex: Flatbush | null;
1234
1234
  /** For debugging/animating the exploration */
1235
- debug_exploredNodesOrdered: string[];
1236
- debug_nodesTooCloseToObstacle: Set<string>;
1237
- debug_nodePathToParentIntersectsObstacle: Set<string>;
1235
+ debug_exploredNodesOrdered: Array<{
1236
+ key: number;
1237
+ x: number;
1238
+ y: number;
1239
+ z: number;
1240
+ }>;
1241
+ debug_nodesTooCloseToObstacle: Set<number>;
1242
+ debug_nodePathToParentIntersectsObstacle: Set<number>;
1238
1243
  debugEnabled: boolean;
1239
1244
  initialNodeGridOffset: {
1240
1245
  x: number;
@@ -1271,17 +1276,20 @@ declare class SingleHighDensityRouteSolver extends BaseSolver {
1271
1276
  hyperParameters?: Partial<HighDensityHyperParameters>;
1272
1277
  connMap?: ConnectivityMap;
1273
1278
  nearbySegmentClearance?: number;
1279
+ captureSearchDebug?: boolean;
1274
1280
  });
1275
1281
  handleSimpleCases(): void;
1276
1282
  get viaPenaltyDistance(): number;
1277
- isNodeTooCloseToObstacle(node: Node, margin?: number, isVia?: boolean): boolean;
1283
+ isNodeTooCloseToObstacle(node: Node, margin?: number, isVia?: boolean, planarObstacleQuery?: PlanarObstacleQuery): boolean;
1278
1284
  isNodeTooCloseToEdge(node: Node, isVia?: boolean): boolean;
1279
- doesPathToParentIntersectObstacle(node: Node): boolean;
1285
+ doesPathToParentIntersectObstacle(node: Node, planarObstacleQuery?: PlanarObstacleQuery): boolean;
1286
+ getPlanarObstacleQuery(node: Node): PlanarObstacleQuery | undefined;
1280
1287
  buildObstacleIndexes(): void;
1281
1288
  computeH(node: Node): number;
1282
1289
  computeG(node: Node): number;
1283
1290
  computeF(g: number, h: number): number;
1284
- getNodeKey(node: Node): string;
1291
+ setNodeCosts(node: Node): void;
1292
+ getNodeKey(node: Node): number;
1285
1293
  getNeighbors(node: Node): Node[];
1286
1294
  getNodePath(node: Node): Node[];
1287
1295
  getViasInNodePath(node: Node): {
@@ -1289,7 +1297,7 @@ declare class SingleHighDensityRouteSolver extends BaseSolver {
1289
1297
  y: number;
1290
1298
  }[];
1291
1299
  setSolvedPath(node: Node): void;
1292
- computeProgress(currentNode: Node, goalDist: number, isOnLayer: boolean): number;
1300
+ computeProgress(currentNode?: Node, goalDist?: number, isOnLayer?: boolean): number;
1293
1301
  _step(): void;
1294
1302
  visualize(): GraphicsObject;
1295
1303
  }
@@ -1305,12 +1313,20 @@ type IndexedObstacleSegment = {
1305
1313
  y: number;
1306
1314
  z: number;
1307
1315
  };
1316
+ minX: number;
1317
+ minY: number;
1318
+ maxX: number;
1319
+ maxY: number;
1308
1320
  connectedToCurrentConnection: boolean;
1309
1321
  };
1310
1322
  type IndexedObstacleVia = {
1311
1323
  x: number;
1312
1324
  y: number;
1313
1325
  };
1326
+ type PlanarObstacleQuery = {
1327
+ segments: IndexedObstacleSegment[];
1328
+ segmentIds: number[];
1329
+ };
1314
1330
 
1315
1331
  type ConnectionPoint = {
1316
1332
  x: number;
@@ -1340,6 +1356,7 @@ declare class IntraNodeRouteSolver extends BaseSolver {
1340
1356
  viaDiameter: number;
1341
1357
  traceWidth: number;
1342
1358
  obstacleMargin: number;
1359
+ captureSearchDebug: boolean;
1343
1360
  rerouteAttemptsByConnection: Map<string, number>;
1344
1361
  POSTROUTE_VIA_TRACE_CLEARANCE: number;
1345
1362
  MAX_POSTROUTE_REPAIR_ATTEMPTS: number;
@@ -1355,6 +1372,7 @@ declare class IntraNodeRouteSolver extends BaseSolver {
1355
1372
  viaDiameter?: number;
1356
1373
  traceWidth?: number;
1357
1374
  obstacleMargin?: number;
1375
+ captureSearchDebug?: boolean;
1358
1376
  obstacles?: Obstacle[];
1359
1377
  layerCount?: number;
1360
1378
  });
@@ -1878,6 +1896,7 @@ declare class HighDensitySolver extends BaseSolver {
1878
1896
  preserveTerminalPcbPortIds: boolean;
1879
1897
  growShrinkMaxInnerIterationsPerGrowthAttempt?: number;
1880
1898
  growShrinkFallbackToInvalidGeometryOnFailure: boolean;
1899
+ captureSearchDebug: boolean;
1881
1900
  failedSolvers: HighDensityIntraNodeSolver[];
1882
1901
  activeSubSolver: HighDensityIntraNodeSolver | null;
1883
1902
  connMap?: ConnectivityMap;
@@ -1891,7 +1910,7 @@ declare class HighDensitySolver extends BaseSolver {
1891
1910
  nodePf: number | null;
1892
1911
  error?: string;
1893
1912
  }>;
1894
- constructor({ nodePortPoints, colorMap, connMap, viaDiameter, traceWidth, obstacleMargin, effort, nodePfById, obstacles, layerCount, useGrowShrinkHighDensityIntraNodeSolver, preserveTerminalPcbPortIds, growShrinkMaxInnerIterationsPerGrowthAttempt, growShrinkFallbackToInvalidGeometryOnFailure, }: {
1913
+ constructor({ nodePortPoints, colorMap, connMap, viaDiameter, traceWidth, obstacleMargin, effort, nodePfById, obstacles, layerCount, useGrowShrinkHighDensityIntraNodeSolver, preserveTerminalPcbPortIds, growShrinkMaxInnerIterationsPerGrowthAttempt, growShrinkFallbackToInvalidGeometryOnFailure, captureSearchDebug, }: {
1895
1914
  nodePortPoints: NodeWithPortPoints[];
1896
1915
  colorMap?: Record<string, string>;
1897
1916
  connMap?: ConnectivityMap;
@@ -1905,6 +1924,7 @@ declare class HighDensitySolver extends BaseSolver {
1905
1924
  preserveTerminalPcbPortIds?: boolean;
1906
1925
  growShrinkMaxInnerIterationsPerGrowthAttempt?: number;
1907
1926
  growShrinkFallbackToInvalidGeometryOnFailure?: boolean;
1927
+ captureSearchDebug?: boolean;
1908
1928
  nodePfById?: Map<CapacityMeshNodeId, number | null> | Record<string, number | null>;
1909
1929
  });
1910
1930
  private getSolvedNodeSolverType;
@@ -5041,6 +5061,14 @@ type ChangedPreloadedTraceSection = {
5041
5061
  declare class TinyHypergraphPortPointPathingSolver extends BaseSolver {
5042
5062
  private params;
5043
5063
  private tinyPipelineSolver;
5064
+ private primaryTinyPipelineSolver?;
5065
+ private alternativeTinyPipelineSolver?;
5066
+ private alternativeTinyPipelineInput?;
5067
+ private candidatePortfolioPhase;
5068
+ private primaryCandidateSummary?;
5069
+ private alternativeCandidateSummary?;
5070
+ private alternativeCandidateEvaluated;
5071
+ private selectedCandidate;
5044
5072
  private duplicateCongestedPortReport?;
5045
5073
  private duplicateCongestedPortError?;
5046
5074
  private duplicatedPortCount;
@@ -5050,8 +5078,18 @@ declare class TinyHypergraphPortPointPathingSolver extends BaseSolver {
5050
5078
  private rootConnectionNameByConnectionId;
5051
5079
  constructor(params: HgPortPointPathingSolverParams);
5052
5080
  getSolverName(): string;
5081
+ private summarizePipelineCandidate;
5082
+ private shouldEvaluateAlternative;
5083
+ private shouldSelectAlternative;
5084
+ private finishCandidatePortfolio;
5053
5085
  getSolveGraphBenchmarkMetrics(): {
5054
5086
  routeCount: number;
5087
+ traceDensityCandidateEvaluated: boolean;
5088
+ traceDensityCandidateSelected: boolean;
5089
+ downstreamNodePfSum: number | undefined;
5090
+ downstreamNodePfSquaredSum: number | undefined;
5091
+ downstreamNodePfMax: number | undefined;
5092
+ downstreamSquaredNodePortPointCount: number | undefined;
5055
5093
  iterations: number;
5056
5094
  timeMs: number;
5057
5095
  ripCount: any;
@@ -5069,6 +5107,8 @@ declare class TinyHypergraphPortPointPathingSolver extends BaseSolver {
5069
5107
  bestSolvedSquaredRegionSegmentCount: any;
5070
5108
  finalMaxRegionSegmentCount: number;
5071
5109
  finalSquaredRegionSegmentCount: number;
5110
+ finalSegmentCount: number | undefined;
5111
+ finalLayerChangeCount: number | undefined;
5072
5112
  warmupFullRipAttempts: any;
5073
5113
  complexityAwareSelection: any;
5074
5114
  targetReached: any;
@@ -7378,7 +7418,7 @@ declare class SingleHighDensityRouteWithJumpersSolver extends BaseSolver {
7378
7418
  getNeighbors(node: JumperNode): JumperNode[];
7379
7419
  getNodePath(node: JumperNode): JumperNode[];
7380
7420
  setSolvedPath(node: JumperNode): void;
7381
- computeProgress(currentNode: JumperNode, goalDist: number): number;
7421
+ computeProgress(currentNode?: JumperNode, goalDist?: number): number;
7382
7422
  _step(): void;
7383
7423
  /**
7384
7424
  * Draw the two pads of an 0603 jumper