@tscircuit/capacity-autorouter 0.0.466 → 0.0.468

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
@@ -3,9 +3,8 @@ import { ConnectivityMap } from 'circuit-json-to-connectivity-map';
3
3
  import * as graphics_debug from 'graphics-debug';
4
4
  import { GraphicsObject, Rect, Circle, Line, Point as Point$7 } from 'graphics-debug';
5
5
  import { BaseSolver as BaseSolver$1 } from '@tscircuit/solver-utils';
6
- import Flatbush from 'flatbush';
7
6
  import { HighDensitySolverA03, NodeWithPortPoints as NodeWithPortPoints$1 } from '@tscircuit/high-density-a01';
8
- import { FixedViaHypergraphSolver } from '@tscircuit/fixed-via-hypergraph-solver/lib/index';
7
+ import Flatbush from 'flatbush';
9
8
  import { Point3, Polygon } from '@tscircuit/math-utils';
10
9
  import { CurvyTraceSolver } from '@tscircuit/curvy-trace-solver';
11
10
  import { JumperGraphSolver, JRegion, JPort, HyperGraph, RegionPort, Region, RegionPortAssignment, Connection, SolvedRoute, Candidate as Candidate$3, HyperGraphSolver, HyperGraphSectionOptimizer } from '@tscircuit/hypergraph';
@@ -1034,7 +1033,6 @@ interface HighDensityHyperParameters {
1034
1033
  FUTURE_CONNECTION_LINE_PROXIMITY?: number;
1035
1034
  FUTURE_CONNECTION_LINE_PENALTY?: number;
1036
1035
  MIN_TRAVEL_BEFORE_JUMPER?: number;
1037
- FIXED_TOPOLOGY_HIGH_DENSITY_INTRA_NODE_SOLVER?: boolean;
1038
1036
  }
1039
1037
 
1040
1038
  type Node = {
@@ -1299,42 +1297,21 @@ declare class CachedIntraNodeRouteSolver extends IntraNodeRouteSolver implements
1299
1297
  saveToCacheSync(): void;
1300
1298
  }
1301
1299
 
1302
- type SupervisedSolver<T extends BaseSolver> = {
1303
- hyperParameters: any;
1304
- solver: T;
1305
- h: number;
1306
- g: number;
1307
- f: number;
1308
- };
1309
- type HyperParameterDef = {
1310
- name: string;
1311
- possibleValues: Array<any>;
1312
- };
1313
- /**
1314
- * The HyperParameterSupervisorSolver is a solver that solves a problem by
1315
- * running competing solvers with different hyperparameters.
1316
- *
1317
- * As solvers make progress, the supervisor will allow the best solvers to run
1318
- * for more iterations, prioritizing the solvers that are working the best.
1319
- */
1320
- declare class HyperParameterSupervisorSolver<T extends BaseSolver> extends BaseSolver {
1300
+ declare class SingleLayerNoDifferentRootIntersectionsIntraNodeSolver extends BaseSolver {
1321
1301
  getSolverName(): string;
1322
- GREEDY_MULTIPLIER: number;
1323
- MIN_SUBSTEPS: number;
1324
- supervisedSolvers?: Array<SupervisedSolver<T>>;
1325
- winningSolver?: T;
1326
- getHyperParameterDefs(): Array<HyperParameterDef>;
1327
- getCombinationDefs(): Array<Array<string>> | null;
1328
- getHyperParameterCombinations(hyperParameterDefs?: Array<HyperParameterDef>): Array<Record<string, any>>;
1329
- initializeSolvers(): void;
1330
- generateSolver(hyperParameters: any): T;
1331
- computeG(solver: T): number;
1332
- computeH(solver: T): number;
1333
- computeF(g: number, h: number): number;
1334
- getSupervisedSolverWithBestFitness(): SupervisedSolver<T> | null;
1335
- getFailureMessage(): string;
1302
+ nodeWithPortPoints: NodeWithPortPoints;
1303
+ traceWidth: number;
1304
+ viaDiameter: number;
1305
+ solvedRoutes: HighDensityIntraNodeRoute$1[];
1306
+ constructor(params: {
1307
+ nodeWithPortPoints: NodeWithPortPoints;
1308
+ traceWidth?: number;
1309
+ viaDiameter?: number;
1310
+ });
1311
+ static isApplicable(node: NodeWithPortPoints): boolean;
1312
+ private buildTaskGroups;
1313
+ private trySolveNode;
1336
1314
  _step(): void;
1337
- onSolve(solver: SupervisedSolver<T>): void;
1338
1315
  visualize(): GraphicsObject;
1339
1316
  }
1340
1317
 
@@ -1344,23 +1321,17 @@ type Point$6 = {
1344
1321
  z?: number;
1345
1322
  };
1346
1323
  type Route$3 = {
1347
- startPort: Point$6;
1348
- endPort: Point$6;
1324
+ A: Point$6;
1325
+ B: Point$6;
1349
1326
  connectionName: string;
1350
1327
  };
1351
- declare class TwoCrossingRoutesHighDensitySolver extends BaseSolver {
1328
+ declare class SingleTransitionIntraNodeSolver extends BaseSolver {
1352
1329
  getSolverName(): string;
1353
1330
  nodeWithPortPoints: NodeWithPortPoints;
1354
1331
  routes: Route$3[];
1355
1332
  viaDiameter: number;
1356
1333
  traceThickness: number;
1357
1334
  obstacleMargin: number;
1358
- layerCount: number;
1359
- debugViaPositions: {
1360
- via1: Point$6;
1361
- via2: Point$6;
1362
- }[];
1363
- escapeLayer: number;
1364
1335
  solvedRoutes: HighDensityIntraNodeRoute$1[];
1365
1336
  bounds: {
1366
1337
  minX: number;
@@ -1373,52 +1344,67 @@ declare class TwoCrossingRoutesHighDensitySolver extends BaseSolver {
1373
1344
  viaDiameter?: number;
1374
1345
  traceThickness?: number;
1375
1346
  obstacleMargin?: number;
1376
- layerCount?: number;
1377
1347
  });
1378
- /**
1379
- * Extract routes that need to be connected from the node data
1380
- */
1381
1348
  private extractRoutesFromNode;
1382
- /**
1383
- * Calculate the bounding box of the node
1384
- */
1385
1349
  private calculateBounds;
1386
- /**
1387
- * Check if two routes are crossing
1388
- */
1389
- private doRoutesCross;
1390
- private calculateViaPositions;
1391
- /**
1392
- * Try to solve with routeA going over and routeB staying on layer 0
1393
- */
1394
- private trySolveAOverB;
1395
- private pushViasFromEndpoints;
1396
- private getMinDistanceBetweenViaCenters;
1397
- private moveViasAsCloseAsPossible;
1398
- handleRoutesDontCross(): void;
1399
- /**
1400
- * Main step method that attempts to solve the two crossing routes
1401
- */
1350
+ private createTransitionRoute;
1402
1351
  _step(): void;
1403
- /**
1404
- * Visualization for debugging
1405
- */
1406
1352
  visualize(): GraphicsObject;
1407
- /**
1408
- * Get the solved routes
1409
- */
1410
- getSolvedRoutes(): HighDensityIntraNodeRoute$1[];
1411
1353
  }
1412
1354
 
1413
1355
  type Point$5 = {
1414
1356
  x: number;
1415
1357
  y: number;
1416
1358
  z?: number;
1359
+ rootConnectionName?: string;
1417
1360
  };
1418
1361
  type Route$2 = {
1419
1362
  A: Point$5;
1420
1363
  B: Point$5;
1421
1364
  connectionName: string;
1365
+ rootConnectionName?: string;
1366
+ };
1367
+ type LayeredObstacle = Obstacle & {
1368
+ zLayers: number[];
1369
+ };
1370
+ declare class SingleTransitionThroughObstacleIntraNodeSolver extends BaseSolver {
1371
+ getSolverName(): string;
1372
+ nodeWithPortPoints: NodeWithPortPoints;
1373
+ routes: Route$2[];
1374
+ obstacles: LayeredObstacle[];
1375
+ viaDiameter: number;
1376
+ traceThickness: number;
1377
+ connMap?: ConnectivityMap;
1378
+ solvedRoutes: HighDensityIntraNodeRoute$1[];
1379
+ constructor(params: {
1380
+ nodeWithPortPoints: NodeWithPortPoints;
1381
+ obstacles?: Obstacle[];
1382
+ connMap?: ConnectivityMap;
1383
+ layerCount?: number;
1384
+ viaDiameter?: number;
1385
+ traceThickness?: number;
1386
+ });
1387
+ static isApplicable(params: {
1388
+ nodeWithPortPoints: NodeWithPortPoints;
1389
+ obstacles?: Obstacle[];
1390
+ connMap?: ConnectivityMap;
1391
+ layerCount?: number;
1392
+ }): boolean;
1393
+ private extractRoutesFromNode;
1394
+ private getContainingThroughObstacle;
1395
+ _step(): void;
1396
+ visualize(): GraphicsObject;
1397
+ }
1398
+
1399
+ type Point$4 = {
1400
+ x: number;
1401
+ y: number;
1402
+ z?: number;
1403
+ };
1404
+ type Route$1 = {
1405
+ A: Point$4;
1406
+ B: Point$4;
1407
+ connectionName: string;
1422
1408
  };
1423
1409
  /**
1424
1410
  * Solver for exactly two crossing routes where exactly one route transitions
@@ -1431,13 +1417,13 @@ type Route$2 = {
1431
1417
  declare class SingleTransitionCrossingRouteSolver extends BaseSolver {
1432
1418
  getSolverName(): string;
1433
1419
  nodeWithPortPoints: NodeWithPortPoints;
1434
- routes: Route$2[];
1420
+ routes: Route$1[];
1435
1421
  viaDiameter: number;
1436
1422
  traceThickness: number;
1437
1423
  obstacleMargin: number;
1438
1424
  layerCount: number;
1439
1425
  debugViaPositions: {
1440
- via: Point$5;
1426
+ via: Point$4;
1441
1427
  }[];
1442
1428
  solvedRoutes: HighDensityIntraNodeRoute$1[];
1443
1429
  bounds: {
@@ -1497,23 +1483,29 @@ declare class SingleTransitionCrossingRouteSolver extends BaseSolver {
1497
1483
  getSolvedRoutes(): HighDensityIntraNodeRoute$1[];
1498
1484
  }
1499
1485
 
1500
- type Point$4 = {
1486
+ type Point$3 = {
1501
1487
  x: number;
1502
1488
  y: number;
1503
1489
  z?: number;
1504
1490
  };
1505
- type Route$1 = {
1506
- A: Point$4;
1507
- B: Point$4;
1491
+ type Route = {
1492
+ startPort: Point$3;
1493
+ endPort: Point$3;
1508
1494
  connectionName: string;
1509
1495
  };
1510
- declare class SingleTransitionIntraNodeSolver extends BaseSolver {
1496
+ declare class TwoCrossingRoutesHighDensitySolver extends BaseSolver {
1511
1497
  getSolverName(): string;
1512
1498
  nodeWithPortPoints: NodeWithPortPoints;
1513
- routes: Route$1[];
1499
+ routes: Route[];
1514
1500
  viaDiameter: number;
1515
1501
  traceThickness: number;
1516
1502
  obstacleMargin: number;
1503
+ layerCount: number;
1504
+ debugViaPositions: {
1505
+ via1: Point$3;
1506
+ via2: Point$3;
1507
+ }[];
1508
+ escapeLayer: number;
1517
1509
  solvedRoutes: HighDensityIntraNodeRoute$1[];
1518
1510
  bounds: {
1519
1511
  minX: number;
@@ -1526,132 +1518,83 @@ declare class SingleTransitionIntraNodeSolver extends BaseSolver {
1526
1518
  viaDiameter?: number;
1527
1519
  traceThickness?: number;
1528
1520
  obstacleMargin?: number;
1529
- });
1530
- private extractRoutesFromNode;
1531
- private calculateBounds;
1532
- private createTransitionRoute;
1533
- _step(): void;
1534
- visualize(): GraphicsObject;
1535
- }
1536
-
1537
- type Point$3 = {
1538
- x: number;
1539
- y: number;
1540
- z?: number;
1541
- rootConnectionName?: string;
1542
- };
1543
- type Route = {
1544
- A: Point$3;
1545
- B: Point$3;
1546
- connectionName: string;
1547
- rootConnectionName?: string;
1548
- };
1549
- type LayeredObstacle = Obstacle & {
1550
- zLayers: number[];
1551
- };
1552
- declare class SingleTransitionThroughObstacleIntraNodeSolver extends BaseSolver {
1553
- getSolverName(): string;
1554
- nodeWithPortPoints: NodeWithPortPoints;
1555
- routes: Route[];
1556
- obstacles: LayeredObstacle[];
1557
- viaDiameter: number;
1558
- traceThickness: number;
1559
- connMap?: ConnectivityMap;
1560
- solvedRoutes: HighDensityIntraNodeRoute$1[];
1561
- constructor(params: {
1562
- nodeWithPortPoints: NodeWithPortPoints;
1563
- obstacles?: Obstacle[];
1564
- connMap?: ConnectivityMap;
1565
1521
  layerCount?: number;
1566
- viaDiameter?: number;
1567
- traceThickness?: number;
1568
1522
  });
1569
- static isApplicable(params: {
1570
- nodeWithPortPoints: NodeWithPortPoints;
1571
- obstacles?: Obstacle[];
1572
- connMap?: ConnectivityMap;
1573
- layerCount?: number;
1574
- }): boolean;
1523
+ /**
1524
+ * Extract routes that need to be connected from the node data
1525
+ */
1575
1526
  private extractRoutesFromNode;
1576
- private getContainingThroughObstacle;
1527
+ /**
1528
+ * Calculate the bounding box of the node
1529
+ */
1530
+ private calculateBounds;
1531
+ /**
1532
+ * Check if two routes are crossing
1533
+ */
1534
+ private doRoutesCross;
1535
+ private calculateViaPositions;
1536
+ /**
1537
+ * Try to solve with routeA going over and routeB staying on layer 0
1538
+ */
1539
+ private trySolveAOverB;
1540
+ private pushViasFromEndpoints;
1541
+ private getMinDistanceBetweenViaCenters;
1542
+ private moveViasAsCloseAsPossible;
1543
+ handleRoutesDontCross(): void;
1544
+ /**
1545
+ * Main step method that attempts to solve the two crossing routes
1546
+ */
1577
1547
  _step(): void;
1548
+ /**
1549
+ * Visualization for debugging
1550
+ */
1578
1551
  visualize(): GraphicsObject;
1552
+ /**
1553
+ * Get the solved routes
1554
+ */
1555
+ getSolvedRoutes(): HighDensityIntraNodeRoute$1[];
1579
1556
  }
1580
1557
 
1581
- type ViaRegion = {
1582
- viaRegionId: string;
1583
- center: {
1584
- x: number;
1585
- y: number;
1586
- };
1587
- diameter: number;
1588
- connectedTo: string[];
1558
+ type SupervisedSolver<T extends BaseSolver> = {
1559
+ hyperParameters: any;
1560
+ solver: T;
1561
+ h: number;
1562
+ g: number;
1563
+ f: number;
1589
1564
  };
1590
- type HighDensityIntraNodeRouteWithVias = HighDensityIntraNodeRoute$1 & {
1591
- viaRegions: ViaRegion[];
1565
+ type HyperParameterDef = {
1566
+ name: string;
1567
+ possibleValues: Array<any>;
1592
1568
  };
1593
- interface FixedTopologyHighDensityIntraNodeSolverParams {
1594
- nodeWithPortPoints: NodeWithPortPoints;
1595
- colorMap?: Record<string, string>;
1596
- traceWidth?: number;
1597
- connMap?: ConnectivityMap;
1598
- effort?: number;
1599
- }
1600
1569
  /**
1601
- * Routes intra-node traces using a fixed via-topology grid and the hypergraph
1602
- * via solver.
1570
+ * The HyperParameterSupervisorSolver is a solver that solves a problem by
1571
+ * running competing solvers with different hyperparameters.
1572
+ *
1573
+ * As solvers make progress, the supervisor will allow the best solvers to run
1574
+ * for more iterations, prioritizing the solvers that are working the best.
1603
1575
  */
1604
- declare class FixedTopologyHighDensityIntraNodeSolver extends BaseSolver {
1605
- getSolverName(): string;
1606
- constructorParams: FixedTopologyHighDensityIntraNodeSolverParams;
1607
- nodeWithPortPoints: NodeWithPortPoints;
1608
- colorMap: Record<string, string>;
1609
- traceWidth: number;
1610
- connMap?: ConnectivityMap;
1611
- rootConnectionNameByConnectionId: Map<string, string | undefined>;
1612
- lastActiveSubSolver: FixedViaHypergraphSolver | null;
1613
- solvedRoutes: HighDensityIntraNodeRouteWithVias[];
1614
- vias: ViaRegion[];
1615
- constructor(params: FixedTopologyHighDensityIntraNodeSolverParams);
1616
- getConstructorParams(): FixedTopologyHighDensityIntraNodeSolverParams;
1617
- private _getBottomLayerZ;
1618
- private _getViaTileDiameter;
1619
- private _initializeGraph;
1620
- _step(): void;
1621
- private _upsertGlobalVia;
1622
- private _upsertRouteViaRegion;
1623
- private _appendRoutePoint;
1624
- private _parseViaRegionNetName;
1625
- private _parseViaRegionTilePrefix;
1626
- private _selectViasForTraversedRegion;
1627
- private _findNearestVia;
1628
- private _getBottomRoutePointsBetweenVias;
1629
- private _appendViaUsage;
1630
- private _processResults;
1631
- getOutput(): HighDensityIntraNodeRouteWithVias[];
1632
- getOutputVias(): ViaRegion[];
1633
- visualize(): GraphicsObject;
1634
- }
1635
-
1636
- declare class SingleLayerNoDifferentRootIntersectionsIntraNodeSolver extends BaseSolver {
1576
+ declare class HyperParameterSupervisorSolver<T extends BaseSolver> extends BaseSolver {
1637
1577
  getSolverName(): string;
1638
- nodeWithPortPoints: NodeWithPortPoints;
1639
- traceWidth: number;
1640
- viaDiameter: number;
1641
- solvedRoutes: HighDensityIntraNodeRoute$1[];
1642
- constructor(params: {
1643
- nodeWithPortPoints: NodeWithPortPoints;
1644
- traceWidth?: number;
1645
- viaDiameter?: number;
1646
- });
1647
- static isApplicable(node: NodeWithPortPoints): boolean;
1648
- private buildTaskGroups;
1649
- private trySolveNode;
1578
+ GREEDY_MULTIPLIER: number;
1579
+ MIN_SUBSTEPS: number;
1580
+ supervisedSolvers?: Array<SupervisedSolver<T>>;
1581
+ winningSolver?: T;
1582
+ getHyperParameterDefs(): Array<HyperParameterDef>;
1583
+ getCombinationDefs(): Array<Array<string>> | null;
1584
+ getHyperParameterCombinations(hyperParameterDefs?: Array<HyperParameterDef>): Array<Record<string, any>>;
1585
+ initializeSolvers(): void;
1586
+ generateSolver(hyperParameters: any): T;
1587
+ computeG(solver: T): number;
1588
+ computeH(solver: T): number;
1589
+ computeF(g: number, h: number): number;
1590
+ getSupervisedSolverWithBestFitness(): SupervisedSolver<T> | null;
1591
+ getFailureMessage(): string;
1650
1592
  _step(): void;
1593
+ onSolve(solver: SupervisedSolver<T>): void;
1651
1594
  visualize(): GraphicsObject;
1652
1595
  }
1653
1596
 
1654
- declare class HyperSingleIntraNodeSolver extends HyperParameterSupervisorSolver<IntraNodeRouteSolver | TwoCrossingRoutesHighDensitySolver | SingleTransitionCrossingRouteSolver | SingleTransitionIntraNodeSolver | SingleTransitionThroughObstacleIntraNodeSolver | FixedTopologyHighDensityIntraNodeSolver | SingleLayerNoDifferentRootIntersectionsIntraNodeSolver | HighDensitySolverA03> {
1597
+ declare class HyperSingleIntraNodeSolver extends HyperParameterSupervisorSolver<IntraNodeRouteSolver | TwoCrossingRoutesHighDensitySolver | SingleTransitionCrossingRouteSolver | SingleTransitionIntraNodeSolver | SingleTransitionThroughObstacleIntraNodeSolver | SingleLayerNoDifferentRootIntersectionsIntraNodeSolver | HighDensitySolverA03> {
1655
1598
  getSolverName(): string;
1656
1599
  constructorParams: ConstructorParameters<typeof CachedIntraNodeRouteSolver>[0];
1657
1600
  solvedRoutes: HighDensityIntraNodeRoute$1[];
@@ -1733,11 +1676,6 @@ declare class HyperSingleIntraNodeSolver extends HyperParameterSupervisorSolver<
1733
1676
  possibleValues: {
1734
1677
  HIGH_DENSITY_A01: boolean;
1735
1678
  }[];
1736
- } | {
1737
- name: string;
1738
- possibleValues: {
1739
- FIXED_TOPOLOGY_HIGH_DENSITY_INTRA_NODE_SOLVER: boolean;
1740
- }[];
1741
1679
  } | {
1742
1680
  name: string;
1743
1681
  possibleValues: {