@tscircuit/schematic-trace-solver 0.0.124 → 0.0.126
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 +46 -1
- package/dist/index.js +461 -37
- package/lib/solvers/AvailableNetOrientationSolver/geometry.ts +5 -1
- package/lib/solvers/NetLabelTraceCollisionSolver/NetLabelTraceCollisionSolver.ts +15 -0
- package/lib/solvers/RailNetLabelCornerPlacementSolver/RailNetLabelCornerPlacementSolver.ts +49 -6
- package/lib/solvers/SchematicTracePipelineSolver/SchematicTracePipelineSolver.ts +69 -11
- package/lib/solvers/TraceElbowTransitionSimplificationSolver/TraceElbowTransitionSimplificationSolver.ts +216 -0
- package/lib/solvers/TraceElbowTransitionSimplificationSolver/generateElbowTransitionSimplificationCandidates.ts +186 -0
- package/lib/solvers/TraceElbowTransitionSimplificationSolver/types.ts +10 -0
- package/lib/solvers/TraceLabelOverlapAvoidanceSolver/TraceLabelOverlapAvoidanceSolver.ts +3 -0
- package/lib/solvers/TraceLabelOverlapAvoidanceSolver/sub-solvers/OverlapAvoidanceStepSolver/OverlapAvoidanceStepSolver.ts +16 -0
- package/lib/solvers/TraceLabelOverlapAvoidanceSolver/sub-solvers/SingleOverlapSolver/SingleOverlapSolver.ts +56 -13
- package/package.json +1 -1
- package/site/bug-reports/bug-report-20260805T061316Z.page.tsx +4 -0
- package/site/bug-reports/bug-report-20260806T061548Z.page.tsx +4 -0
- package/site/bug-reports/bug-report-20260806T093501Z.page.tsx +4 -0
- package/tests/bug-reports/bug-report-20260706T213649Z/__snapshots__/bug-report-20260706T213649Z.snap.svg +3 -3
- package/tests/bug-reports/bug-report-20260706T220324Z/__snapshots__/bug-report-20260706T220324Z.snap.svg +6 -6
- package/tests/bug-reports/bug-report-20260805T061316Z/__snapshots__/bug-report-20260805T061316Z.snap.svg +212 -0
- package/tests/bug-reports/bug-report-20260805T061316Z/bug-report-20260805T061316Z.json +889 -0
- package/tests/bug-reports/bug-report-20260805T061316Z/bug-report-20260805T061316Z.test.ts +12 -0
- package/tests/bug-reports/bug-report-20260806T061548Z/__snapshots__/bug-report-20260806T061548Z.snap.svg +212 -0
- package/tests/bug-reports/bug-report-20260806T061548Z/bug-report-20260806T061548Z.json +960 -0
- package/tests/bug-reports/bug-report-20260806T061548Z/bug-report-20260806T061548Z.test.ts +32 -0
- package/tests/bug-reports/bug-report-20260806T093501Z/__snapshots__/bug-report-20260806T093501Z.snap.svg +135 -0
- package/tests/bug-reports/bug-report-20260806T093501Z/bug-report-20260806T093501Z.json +505 -0
- package/tests/bug-reports/bug-report-20260806T093501Z/bug-report-20260806T093501Z.test.ts +66 -0
- package/tests/examples/__snapshots__/example01.snap.svg +18 -18
- package/tests/examples/__snapshots__/example33.snap.svg +1 -1
package/dist/index.d.ts
CHANGED
|
@@ -441,6 +441,13 @@ declare class NetLabelPlacementSolver extends BaseSolver {
|
|
|
441
441
|
visualize(): GraphicsObject;
|
|
442
442
|
}
|
|
443
443
|
|
|
444
|
+
interface CompletedTraceReroute {
|
|
445
|
+
initialTrace: SolvedTracePath;
|
|
446
|
+
reroutedTracePath: Point[];
|
|
447
|
+
label: NetLabelPlacement;
|
|
448
|
+
detourCount: number;
|
|
449
|
+
}
|
|
450
|
+
|
|
444
451
|
interface LabelMergingSolverInput {
|
|
445
452
|
netLabelPlacements: NetLabelPlacement[];
|
|
446
453
|
inputProblem: InputProblem;
|
|
@@ -479,6 +486,7 @@ interface SingleOverlapSolverInput {
|
|
|
479
486
|
paddingBuffer: number;
|
|
480
487
|
detourCount: number;
|
|
481
488
|
tracesToAvoidOverlapping?: SolvedTracePath[];
|
|
489
|
+
netLabelPlacements?: NetLabelPlacement[];
|
|
482
490
|
}
|
|
483
491
|
/**
|
|
484
492
|
* This solver attempts to find a valid rerouting for a single trace that is
|
|
@@ -493,6 +501,8 @@ declare class SingleOverlapSolver extends BaseSolver {
|
|
|
493
501
|
obstacles: ReturnType<typeof getObstacleRects>;
|
|
494
502
|
label: NetLabelPlacement;
|
|
495
503
|
tracesToAvoidOverlapping: SolvedTracePath[];
|
|
504
|
+
netLabelPlacements: NetLabelPlacement[];
|
|
505
|
+
detourCount: number;
|
|
496
506
|
_tried: number;
|
|
497
507
|
constructor(solverInput: SingleOverlapSolverInput);
|
|
498
508
|
_step(): void;
|
|
@@ -520,6 +530,7 @@ declare class OverlapAvoidanceStepSolver extends BaseSolver {
|
|
|
520
530
|
allTraces: SolvedTracePath[];
|
|
521
531
|
tracesToAvoidOverlapping: SolvedTracePath[];
|
|
522
532
|
modifiedTraces: SolvedTracePath[];
|
|
533
|
+
completedReroutes: CompletedTraceReroute[];
|
|
523
534
|
private readonly PADDING_BUFFER;
|
|
524
535
|
private detourCounts;
|
|
525
536
|
activeSubSolver: SingleOverlapSolver | null;
|
|
@@ -570,6 +581,7 @@ declare class TraceLabelOverlapAvoidanceSolver extends BaseSolver {
|
|
|
570
581
|
_step(): void;
|
|
571
582
|
getOutput(): {
|
|
572
583
|
traces: SolvedTracePath[];
|
|
584
|
+
completedReroutes: CompletedTraceReroute[];
|
|
573
585
|
netLabelPlacements: NetLabelPlacement[];
|
|
574
586
|
};
|
|
575
587
|
visualize(): GraphicsObject;
|
|
@@ -875,6 +887,7 @@ declare class RailNetLabelCornerPlacementSolver extends BaseSolver {
|
|
|
875
887
|
private intersectsAnyOtherNetLabel;
|
|
876
888
|
private getCornerCandidatesForLabel;
|
|
877
889
|
private isConfiguredRailLabel;
|
|
890
|
+
private isLabelCrossedByOtherNetTrace;
|
|
878
891
|
private pointsEqual;
|
|
879
892
|
private getVerticalSegmentPointIndices;
|
|
880
893
|
private isPinAlignedCorner;
|
|
@@ -957,6 +970,7 @@ declare class NetLabelTraceCollisionSolver extends BaseSolver {
|
|
|
957
970
|
netLabelPlacements: NetLabelPlacement[];
|
|
958
971
|
outputTraces: SolvedTracePath[];
|
|
959
972
|
outputNetLabelPlacements: NetLabelPlacement[];
|
|
973
|
+
completedReroutes: CompletedTraceReroute[];
|
|
960
974
|
activeSubSolver: SingleOverlapSolver | null;
|
|
961
975
|
private recentlyFailed;
|
|
962
976
|
private detourCounts;
|
|
@@ -971,6 +985,7 @@ declare class NetLabelTraceCollisionSolver extends BaseSolver {
|
|
|
971
985
|
private reanchorLabelsOnMovedTrace;
|
|
972
986
|
getOutput(): {
|
|
973
987
|
traces: SolvedTracePath[];
|
|
988
|
+
completedReroutes: CompletedTraceReroute[];
|
|
974
989
|
netLabelPlacements: NetLabelPlacement[];
|
|
975
990
|
};
|
|
976
991
|
private getOverlapKey;
|
|
@@ -1082,6 +1097,33 @@ declare class SameNetJunctionAlignmentSolver extends BaseSolver {
|
|
|
1082
1097
|
visualize(): GraphicsObject;
|
|
1083
1098
|
}
|
|
1084
1099
|
|
|
1100
|
+
interface TraceElbowTransitionSimplificationSolverInput {
|
|
1101
|
+
inputProblem: InputProblem;
|
|
1102
|
+
traces: SolvedTracePath[];
|
|
1103
|
+
completedReroutes: CompletedTraceReroute[];
|
|
1104
|
+
netLabelPlacements: NetLabelPlacement[];
|
|
1105
|
+
paddingBuffer: number;
|
|
1106
|
+
}
|
|
1107
|
+
/**
|
|
1108
|
+
* Post-processes traces after trace/label overlap avoidance. It removes
|
|
1109
|
+
* redundant elbow transitions and, when needed, shifts a simplified elbow
|
|
1110
|
+
* around a rendered label. Every replacement is revalidated against labels,
|
|
1111
|
+
* components, other-net traces, and label anchors.
|
|
1112
|
+
*/
|
|
1113
|
+
declare class TraceElbowTransitionSimplificationSolver extends BaseSolver {
|
|
1114
|
+
private input;
|
|
1115
|
+
private outputTraces;
|
|
1116
|
+
private traceIdQueue;
|
|
1117
|
+
private obstacles;
|
|
1118
|
+
constructor(input: TraceElbowTransitionSimplificationSolverInput);
|
|
1119
|
+
_step(): void;
|
|
1120
|
+
getOutput(): {
|
|
1121
|
+
traces: SolvedTracePath[];
|
|
1122
|
+
netLabelPlacements: NetLabelPlacement[];
|
|
1123
|
+
};
|
|
1124
|
+
visualize(): GraphicsObject;
|
|
1125
|
+
}
|
|
1126
|
+
|
|
1085
1127
|
/**
|
|
1086
1128
|
* Pipeline solver that runs a series of solvers to find the best schematic layout.
|
|
1087
1129
|
* Coordinates the entire layout process from chip partitioning through final packing.
|
|
@@ -1116,6 +1158,9 @@ declare class SchematicTracePipelineSolver extends BaseSolver {
|
|
|
1116
1158
|
netLabelTraceCollisionSolver?: NetLabelTraceCollisionSolver;
|
|
1117
1159
|
traceCleanupSolver2?: TraceCleanupSolver;
|
|
1118
1160
|
netLabelNetLabelCollisionSolver?: NetLabelNetLabelCollisionSolver;
|
|
1161
|
+
traceElbowTransitionSimplificationSolver?: TraceElbowTransitionSimplificationSolver;
|
|
1162
|
+
preAlignmentTraceElbowTransitionSimplificationSolver?: TraceElbowTransitionSimplificationSolver;
|
|
1163
|
+
finalTraceElbowTransitionSimplificationSolver?: TraceElbowTransitionSimplificationSolver;
|
|
1119
1164
|
sameNetJunctionAlignmentSolver?: SameNetJunctionAlignmentSolver;
|
|
1120
1165
|
startTimeOfPhase: Record<string, number>;
|
|
1121
1166
|
endTimeOfPhase: Record<string, number>;
|
|
@@ -1123,7 +1168,7 @@ declare class SchematicTracePipelineSolver extends BaseSolver {
|
|
|
1123
1168
|
firstIterationOfPhase: Record<string, number>;
|
|
1124
1169
|
inputProblem: InputProblem;
|
|
1125
1170
|
hideRatsNet: boolean;
|
|
1126
|
-
pipelineDef: (PipelineStep<typeof MspConnectionPairSolver> | PipelineStep<typeof SchematicTraceLinesSolver> | PipelineStep<typeof LongDistancePairSolver> | PipelineStep<typeof UnroutedTraceRecoverySolver> | PipelineStep<typeof TraceOverlapShiftSolver> | PipelineStep<typeof NetLabelPlacementSolver> | PipelineStep<typeof TraceLabelOverlapAvoidanceSolver> | PipelineStep<typeof TraceCleanupSolver> | PipelineStep<typeof Example28Solver> | PipelineStep<typeof AvailableNetOrientationSolver> | PipelineStep<typeof RailNetLabelCornerPlacementSolver> | PipelineStep<typeof TraceAnchoredNetLabelOverlapSolver> | PipelineStep<typeof NetLabelTraceCollisionSolver> | PipelineStep<typeof NetLabelNetLabelCollisionSolver> | PipelineStep<typeof SameNetJunctionAlignmentSolver>)[];
|
|
1171
|
+
pipelineDef: (PipelineStep<typeof MspConnectionPairSolver> | PipelineStep<typeof SchematicTraceLinesSolver> | PipelineStep<typeof LongDistancePairSolver> | PipelineStep<typeof UnroutedTraceRecoverySolver> | PipelineStep<typeof TraceOverlapShiftSolver> | PipelineStep<typeof NetLabelPlacementSolver> | PipelineStep<typeof TraceLabelOverlapAvoidanceSolver> | PipelineStep<typeof TraceElbowTransitionSimplificationSolver> | PipelineStep<typeof TraceCleanupSolver> | PipelineStep<typeof Example28Solver> | PipelineStep<typeof AvailableNetOrientationSolver> | PipelineStep<typeof RailNetLabelCornerPlacementSolver> | PipelineStep<typeof TraceAnchoredNetLabelOverlapSolver> | PipelineStep<typeof NetLabelTraceCollisionSolver> | PipelineStep<typeof NetLabelNetLabelCollisionSolver> | PipelineStep<typeof SameNetJunctionAlignmentSolver>)[];
|
|
1127
1172
|
constructor(inputProblem: InputProblem, opts?: Options);
|
|
1128
1173
|
getConstructorParams(): ConstructorParameters<typeof SchematicTracePipelineSolver>;
|
|
1129
1174
|
currentPipelineStepIndex: number;
|