@tscircuit/capacity-autorouter 0.0.551 → 0.0.552

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
@@ -227,6 +227,9 @@ interface CapacityMeshNode {
227
227
  _adjacentNodeIds?: CapacityMeshNodeId[];
228
228
  _offBoardConnectionId?: string;
229
229
  _offBoardConnectedCapacityMeshNodeIds?: CapacityMeshNodeId[];
230
+ _qfpRegionType?: "center" | "pad" | "pad-gap" | "corner";
231
+ _isNarrowQfpPadGap?: boolean;
232
+ _soicRegionType?: "center" | "pad" | "pad-gap";
230
233
  _parent?: CapacityMeshNode;
231
234
  }
232
235
  interface CapacityMeshEdge {
@@ -442,6 +445,7 @@ interface InputPortPoint {
442
445
  connectionNodeIds: [CapacityMeshNodeId, CapacityMeshNodeId];
443
446
  /** XY distance to the centermost port on this Z level (centermost port has distance 0) */
444
447
  distToCentermostPortOnZ: number;
448
+ cramped?: boolean;
445
449
  connectsToOffBoardNode?: boolean;
446
450
  }
447
451
  /**
@@ -465,6 +469,8 @@ interface InputNodeWithPortPoints {
465
469
  _containsObstacle?: boolean;
466
470
  _offBoardConnectionId?: string;
467
471
  _offBoardConnectedCapacityMeshNodeIds?: CapacityMeshNodeId[];
472
+ _qfpRegionType?: "center" | "pad" | "pad-gap" | "corner";
473
+ _isNarrowQfpPadGap?: boolean;
468
474
  }
469
475
  /**
470
476
  * A candidate in the A* search. Represents being at a port point,
@@ -4652,6 +4658,7 @@ type RawPort = {
4652
4658
  y: number;
4653
4659
  z: number;
4654
4660
  distToCentermostPortOnZ: number;
4661
+ cramped?: boolean;
4655
4662
  regions: RegionHg[];
4656
4663
  tinyHypergraphPortPenalty?: number;
4657
4664
  };
@@ -5446,6 +5453,7 @@ declare class RectBoundsComponentDetectionStage extends BaseSolver$1 {
5446
5453
  readonly inputSrj: SimpleRouteJson;
5447
5454
  private initialized;
5448
5455
  private groupedComponentObstacles;
5456
+ private groupedComponentKinds;
5449
5457
  private unprocessedComponentIds;
5450
5458
  private passThroughObstacles;
5451
5459
  private detectedComponents;
@@ -5474,6 +5482,7 @@ interface ComponentDetectionSolverParams {
5474
5482
  }
5475
5483
  interface DetectedComponent {
5476
5484
  componentId: string;
5485
+ componentKind: "bga" | "qfp" | "soic";
5477
5486
  memberObstacleIds: string[];
5478
5487
  memberObstacles: Obstacle[];
5479
5488
  replacementObstacle: Obstacle;
@@ -5490,7 +5499,6 @@ interface ComponentDetectionSolverOutput {
5490
5499
  declare class ComponentDetectionSolver extends BasePipelineSolver<ComponentDetectionSolverParams> {
5491
5500
  rectBoundsComponentDetection?: RectBoundsComponentDetectionStage;
5492
5501
  pipelineDef: PipelineStep$a<BaseSolver$1>[];
5493
- constructor(params: ComponentDetectionSolverParams);
5494
5502
  getConstructorParams(): readonly [ComponentDetectionSolverParams];
5495
5503
  getOutput(): ComponentDetectionSolverOutput;
5496
5504
  initialVisualize(): GraphicsObject | null;
@@ -5526,18 +5534,73 @@ declare class BgaTopologyGeneratorSolver extends BaseSolver$1 {
5526
5534
  getOutput(): BgaTopologyGeneratorSolverOutput;
5527
5535
  }
5528
5536
 
5537
+ interface QfpTopologyGeneratorSolverParams {
5538
+ inputSrj: SimpleRouteJson;
5539
+ componentId?: string;
5540
+ replacementObstacleId?: string;
5541
+ viaDiameter?: number;
5542
+ obstacleMargin?: number;
5543
+ }
5544
+ interface QfpTopologyGeneratorSolverOutput {
5545
+ /** Exact obstacle rectangles cloned from the input SRJ. This is the geometry source of truth. */
5546
+ obstacles: Obstacle[];
5547
+ /** Routing regions derived from the QFP pad ring. These are not obstacle rectangles. */
5548
+ routingRegions: CapacityMeshNode[];
5549
+ }
5550
+ /**
5551
+ * Builds the fixed QFP topology: one large central region plus perimeter gap
5552
+ * and corner regions between the package pads.
5553
+ */
5554
+ declare class QfpTopologyGeneratorSolver extends BaseSolver$1 {
5555
+ readonly inputProblem: QfpTopologyGeneratorSolverParams;
5556
+ private output;
5557
+ constructor(inputProblem: QfpTopologyGeneratorSolverParams);
5558
+ getConstructorParams(): readonly [QfpTopologyGeneratorSolverParams];
5559
+ _step(): void;
5560
+ getOutput(): QfpTopologyGeneratorSolverOutput;
5561
+ }
5562
+
5563
+ interface SoicTopologyGeneratorSolverParams {
5564
+ inputSrj: SimpleRouteJson;
5565
+ componentId?: string;
5566
+ replacementObstacleId?: string;
5567
+ viaDiameter?: number;
5568
+ obstacleMargin?: number;
5569
+ }
5570
+ interface SoicTopologyGeneratorSolverOutput {
5571
+ /** Exact obstacle rectangles cloned from the input SRJ. This is the geometry source of truth. */
5572
+ obstacles: Obstacle[];
5573
+ /** Routing regions derived from the SOIC pad rows/columns. These are not obstacle rectangles. */
5574
+ routingRegions: CapacityMeshNode[];
5575
+ }
5576
+ /**
5577
+ * Builds a fixed SOIC topology: a central body-gap region plus the routable
5578
+ * regions between adjacent pads on the two populated sides.
5579
+ */
5580
+ declare class SoicTopologyGeneratorSolver extends BaseSolver$1 {
5581
+ readonly inputProblem: SoicTopologyGeneratorSolverParams;
5582
+ private output;
5583
+ constructor(inputProblem: SoicTopologyGeneratorSolverParams);
5584
+ getConstructorParams(): readonly [SoicTopologyGeneratorSolverParams];
5585
+ _step(): void;
5586
+ getOutput(): SoicTopologyGeneratorSolverOutput;
5587
+ }
5588
+
5529
5589
  interface ComponentTopologyBatchSolverParams {
5530
5590
  componentSrjs: SimpleRouteJson[];
5531
5591
  componentIds: string[];
5592
+ componentKinds: Array<"bga" | "qfp" | "soic" | undefined>;
5532
5593
  replacementObstacleIds: Array<string | undefined>;
5594
+ viaDiameter?: number;
5595
+ obstacleMargin?: number;
5533
5596
  }
5534
5597
  interface ComponentTopologyBatchSolverOutput {
5535
5598
  componentMeshNodes: CapacityMeshNode[][];
5536
5599
  }
5537
- /** Runs one BGA topology solve per component SRJ and collects the routing regions. */
5600
+ /** Runs one component-local topology solve per component SRJ and collects the routing regions. */
5538
5601
  declare class ComponentTopologyBatchSolver extends BaseSolver$1 {
5539
5602
  readonly inputProblem: ComponentTopologyBatchSolverParams;
5540
- activeSubSolver?: BgaTopologyGeneratorSolver | null;
5603
+ activeSubSolver?: BgaTopologyGeneratorSolver | QfpTopologyGeneratorSolver | SoicTopologyGeneratorSolver | null;
5541
5604
  currentIndex: number;
5542
5605
  componentMeshNodes: CapacityMeshNode[][];
5543
5606
  constructor(inputProblem: ComponentTopologyBatchSolverParams);
@@ -5549,6 +5612,7 @@ declare class ComponentTopologyBatchSolver extends BaseSolver$1 {
5549
5612
 
5550
5613
  interface SerializedTopologyComponentInput {
5551
5614
  componentId: string;
5615
+ componentKind?: "bga" | "qfp" | "soic";
5552
5616
  memberObstacleIds: string[];
5553
5617
  memberObstacles: Obstacle[];
5554
5618
  replacementObstacle: Obstacle;
@@ -5558,6 +5622,8 @@ interface MultiGraphTopologyPlannerSolverParams {
5558
5622
  globalNoConnectionSrj?: SimpleRouteJson;
5559
5623
  components?: SerializedTopologyComponentInput[];
5560
5624
  componentDetectionOutput?: ComponentDetectionSolverOutput;
5625
+ viaDiameter?: number;
5626
+ obstacleMargin?: number;
5561
5627
  brokenSrj?: {
5562
5628
  global: SimpleRouteJson;
5563
5629
  components: SerializedTopologyComponentInput[];