@tscircuit/schematic-trace-solver 0.0.37 → 0.0.38

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.
Files changed (32) hide show
  1. package/dist/index.d.ts +26 -1
  2. package/dist/index.js +927 -20
  3. package/lib/solvers/SchematicTraceLinesSolver/SchematicTraceSingleLineSolver2/collisions.ts +17 -0
  4. package/lib/solvers/SchematicTraceLinesSolver/SchematicTraceSingleLineSolver2/pathOps.ts +31 -12
  5. package/lib/solvers/SchematicTracePipelineSolver/SchematicTracePipelineSolver.ts +40 -0
  6. package/lib/solvers/TraceLabelOverlapAvoidanceSolver/TraceLabelOverlapAvoidanceSolver.ts +247 -0
  7. package/lib/solvers/TraceLabelOverlapAvoidanceSolver/balanceLShapes.ts +207 -0
  8. package/lib/solvers/TraceLabelOverlapAvoidanceSolver/countTurns.ts +18 -0
  9. package/lib/solvers/TraceLabelOverlapAvoidanceSolver/detectTraceLabelOverlap.ts +38 -0
  10. package/lib/solvers/TraceLabelOverlapAvoidanceSolver/hasCollisions.ts +26 -0
  11. package/lib/solvers/TraceLabelOverlapAvoidanceSolver/index.ts +1 -0
  12. package/lib/solvers/TraceLabelOverlapAvoidanceSolver/rerouteCollidingTrace.ts +73 -0
  13. package/lib/solvers/TraceLabelOverlapAvoidanceSolver/simplifyPath.ts +41 -0
  14. package/lib/solvers/TraceLabelOverlapAvoidanceSolver/trySnipAndReconnect.ts +229 -0
  15. package/lib/solvers/TraceLabelOverlapAvoidanceSolver/turnMinimization.ts +305 -0
  16. package/lib/solvers/TraceLabelOverlapAvoidanceSolver/violation.ts +25 -0
  17. package/package.json +1 -1
  18. package/site/examples/example20.page.tsx +103 -0
  19. package/site/examples/example22.page.tsx +108 -0
  20. package/site/examples/example23.page.tsx +137 -0
  21. package/site/examples/example24.page.tsx +128 -0
  22. package/tests/examples/__snapshots__/example16.snap.svg +27 -27
  23. package/tests/examples/__snapshots__/example22.snap.svg +137 -0
  24. package/tests/examples/__snapshots__/example23.snap.svg +137 -0
  25. package/tests/examples/__snapshots__/example24.snap.svg +143 -0
  26. package/tests/examples/__snapshots__/example25.snap.svg +165 -0
  27. package/tests/examples/__snapshots__/example26.snap.svg +157 -0
  28. package/tests/examples/example22.test.tsx +109 -0
  29. package/tests/examples/example23.test.tsx +109 -0
  30. package/tests/examples/example24.test.tsx +114 -0
  31. package/tests/examples/example25.test.tsx +143 -0
  32. package/tests/examples/example26.test.tsx +134 -0
package/dist/index.d.ts CHANGED
@@ -381,6 +381,30 @@ declare class NetLabelPlacementSolver extends BaseSolver {
381
381
  visualize(): GraphicsObject;
382
382
  }
383
383
 
384
+ interface TraceLabelOverlapAvoidanceSolverInput {
385
+ inputProblem: InputProblem;
386
+ traces: SolvedTracePath[];
387
+ netLabelPlacements: NetLabelPlacement[];
388
+ }
389
+ declare class TraceLabelOverlapAvoidanceSolver extends BaseSolver {
390
+ private problem;
391
+ private traces;
392
+ private netTempLabelPlacements;
393
+ private netLabelPlacements;
394
+ private updatedTraces;
395
+ private updatedTracesMap;
396
+ private mergedLabelNetIdMap;
397
+ private detourCountByLabel;
398
+ private readonly PADDING_BUFFER;
399
+ constructor(solverInput: TraceLabelOverlapAvoidanceSolverInput);
400
+ _step(): void;
401
+ getOutput(): {
402
+ traceMap: Map<string, SolvedTracePath>;
403
+ netLabelPlacements: NetLabelPlacement[];
404
+ };
405
+ visualize(): GraphicsObject;
406
+ }
407
+
384
408
  /**
385
409
  * Pipeline solver that runs a series of solvers to find the best schematic layout.
386
410
  * Coordinates the entire layout process from chip partitioning through final packing.
@@ -397,12 +421,13 @@ declare class SchematicTracePipelineSolver extends BaseSolver {
397
421
  schematicTraceLinesSolver?: SchematicTraceLinesSolver;
398
422
  traceOverlapShiftSolver?: TraceOverlapShiftSolver;
399
423
  netLabelPlacementSolver?: NetLabelPlacementSolver;
424
+ traceLabelOverlapAvoidanceSolver?: TraceLabelOverlapAvoidanceSolver;
400
425
  startTimeOfPhase: Record<string, number>;
401
426
  endTimeOfPhase: Record<string, number>;
402
427
  timeSpentOnPhase: Record<string, number>;
403
428
  firstIterationOfPhase: Record<string, number>;
404
429
  inputProblem: InputProblem;
405
- pipelineDef: (PipelineStep<typeof MspConnectionPairSolver> | PipelineStep<typeof SchematicTraceLinesSolver> | PipelineStep<typeof TraceOverlapShiftSolver> | PipelineStep<typeof NetLabelPlacementSolver>)[];
430
+ pipelineDef: (PipelineStep<typeof MspConnectionPairSolver> | PipelineStep<typeof SchematicTraceLinesSolver> | PipelineStep<typeof TraceOverlapShiftSolver> | PipelineStep<typeof NetLabelPlacementSolver> | PipelineStep<typeof TraceLabelOverlapAvoidanceSolver>)[];
406
431
  constructor(inputProblem: InputProblem);
407
432
  getConstructorParams(): ConstructorParameters<typeof SchematicTracePipelineSolver>[0];
408
433
  currentPipelineStepIndex: number;