@tscircuit/core 0.0.1232 → 0.0.1233

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
@@ -131,6 +131,10 @@ type SimpleRouteJson = Omit<SimpleRouteJson$1, "connections" | "traces" | "obsta
131
131
  defaultObstacleMargin?: number;
132
132
  minTraceToPadEdgeClearance?: number;
133
133
  minViaEdgeToPadEdgeClearance?: number;
134
+ minViaHoleEdgeToViaHoleEdgeClearance?: number;
135
+ minPlatedHoleDrillEdgeToDrillEdgeClearance?: number;
136
+ minPadEdgeToPadEdgeClearance?: number;
137
+ minBoardEdgeClearance?: number;
134
138
  obstacles: Obstacle[];
135
139
  connections: SimpleRouteConnection[];
136
140
  bounds: {
@@ -1375,11 +1379,23 @@ declare class Net extends PrimitiveComponent<typeof netProps> {
1375
1379
  renderError(message: Parameters<typeof PrimitiveComponent.prototype.renderError>[0]): void;
1376
1380
  }
1377
1381
 
1382
+ interface RoutingPhaseDrcTolerances {
1383
+ minTraceWidth?: number;
1384
+ minViaHoleEdgeToViaHoleEdgeClearance?: number;
1385
+ minPlatedHoleDrillEdgeToDrillEdgeClearance?: number;
1386
+ minTraceToPadEdgeClearance?: number;
1387
+ minPadEdgeToPadEdgeClearance?: number;
1388
+ minBoardEdgeClearance?: number;
1389
+ minViaEdgeToPadEdgeClearance?: number;
1390
+ minViaHoleDiameter?: number;
1391
+ minViaPadDiameter?: number;
1392
+ }
1378
1393
  interface RoutingPhasePlan {
1379
1394
  routingPhaseIndex: number | null;
1380
1395
  autorouter?: AutorouterProp;
1381
1396
  reroute?: boolean;
1382
1397
  region?: AutoroutingPhaseProps["region"];
1398
+ drcTolerances?: RoutingPhaseDrcTolerances;
1383
1399
  nets: Net[];
1384
1400
  traces: Trace[];
1385
1401
  }
@@ -66650,7 +66666,6 @@ declare class Resistor extends NormalComponent<typeof resistorProps, PassivePort
66650
66666
  }>]>, "top" | "bottom" | "inner1" | "inner2" | "inner3" | "inner4" | "inner5" | "inner6", "top" | "bottom" | "inner1" | "inner2" | "inner3" | "inner4" | "inner5" | "inner6" | {
66651
66667
  name: "top" | "bottom" | "inner1" | "inner2" | "inner3" | "inner4" | "inner5" | "inner6";
66652
66668
  }>>;
66653
- footprint: zod.ZodOptional<zod.ZodType<_tscircuit_props.FootprintProp, zod.ZodTypeDef, _tscircuit_props.FootprintProp>>;
66654
66669
  symbol: zod.ZodOptional<zod.ZodType<_tscircuit_props.SymbolProp, zod.ZodTypeDef, _tscircuit_props.SymbolProp>>;
66655
66670
  schStyle: zod.ZodOptional<zod.ZodObject<{
66656
66671
  defaultPassiveSize: zod.ZodOptional<zod.ZodUnion<[zod.ZodEnum<["xs", "sm", "md"]>, zod.ZodEffects<zod.ZodUnion<[zod.ZodString, zod.ZodNumber]>, number, string | number>]>>;
@@ -66665,9 +66680,7 @@ declare class Resistor extends NormalComponent<typeof resistorProps, PassivePort
66665
66680
  relative: zod.ZodOptional<zod.ZodBoolean>;
66666
66681
  schRelative: zod.ZodOptional<zod.ZodBoolean>;
66667
66682
  pcbRelative: zod.ZodOptional<zod.ZodBoolean>;
66668
- } & {
66669
66683
  supplierPartNumbers: zod.ZodOptional<zod.ZodRecord<zod.ZodEnum<["jlcpcb", "macrofab", "pcbway", "digikey", "mouser", "lcsc"]>, zod.ZodArray<zod.ZodString, "many">>>;
66670
- } & {
66671
66684
  key: zod.ZodOptional<zod.ZodAny>;
66672
66685
  name: zod.ZodString;
66673
66686
  displayName: zod.ZodOptional<zod.ZodString>;
@@ -69937,6 +69950,7 @@ declare class Resistor extends NormalComponent<typeof resistorProps, PassivePort
69937
69950
  mfn: zod.ZodOptional<zod.ZodString>;
69938
69951
  manufacturerPartNumber: zod.ZodOptional<zod.ZodString>;
69939
69952
  } & {
69953
+ footprint: zod.ZodType<_tscircuit_props.FootprintProp | undefined, zod.ZodTypeDef, _tscircuit_props.FootprintProp | undefined>;
69940
69954
  resistance: zod.ZodEffects<zod.ZodUnion<[zod.ZodString, zod.ZodNumber]>, number, string | number>;
69941
69955
  tolerance: zod.ZodOptional<zod.ZodPipeline<zod.ZodEffects<zod.ZodUnion<[zod.ZodString, zod.ZodNumber]>, number, string | number>, zod.ZodNumber>>;
69942
69956
  pullupFor: zod.ZodOptional<zod.ZodString>;
@@ -152702,7 +152716,7 @@ declare const applyEditEvents: ({ circuitJson, editEvents, }: {
152702
152716
  /**
152703
152717
  * This function can only be called in the PcbTraceRender phase or later
152704
152718
  */
152705
- declare const getSimpleRouteJsonFromCircuitJson: ({ db, circuitJson, subcircuit_id, minTraceWidth, minTraceToPadEdgeClearance, minViaEdgeToPadEdgeClearance, nominalTraceWidth, subcircuitComponent, }: {
152719
+ declare const getSimpleRouteJsonFromCircuitJson: ({ db, circuitJson, subcircuit_id, minTraceWidth, minTraceToPadEdgeClearance, minViaEdgeToPadEdgeClearance, minViaHoleEdgeToViaHoleEdgeClearance, minPlatedHoleDrillEdgeToDrillEdgeClearance, minPadEdgeToPadEdgeClearance, minBoardEdgeClearance, minViaHoleDiameter, minViaPadDiameter, nominalTraceWidth, subcircuitComponent, }: {
152706
152720
  db?: CircuitJsonUtilObjects;
152707
152721
  circuitJson?: AnyCircuitElement[];
152708
152722
  subcircuit_id?: string | null;
@@ -152710,6 +152724,12 @@ declare const getSimpleRouteJsonFromCircuitJson: ({ db, circuitJson, subcircuit_
152710
152724
  nominalTraceWidth?: number;
152711
152725
  minTraceToPadEdgeClearance?: number;
152712
152726
  minViaEdgeToPadEdgeClearance?: number;
152727
+ minViaHoleEdgeToViaHoleEdgeClearance?: number;
152728
+ minPlatedHoleDrillEdgeToDrillEdgeClearance?: number;
152729
+ minPadEdgeToPadEdgeClearance?: number;
152730
+ minBoardEdgeClearance?: number;
152731
+ minViaHoleDiameter?: number;
152732
+ minViaPadDiameter?: number;
152713
152733
  subcircuitComponent?: {
152714
152734
  selectAll(selector: string): unknown[];
152715
152735
  };
package/dist/index.js CHANGED
@@ -13950,6 +13950,12 @@ var getSimpleRouteJsonFromCircuitJson = ({
13950
13950
  minTraceWidth,
13951
13951
  minTraceToPadEdgeClearance,
13952
13952
  minViaEdgeToPadEdgeClearance,
13953
+ minViaHoleEdgeToViaHoleEdgeClearance,
13954
+ minPlatedHoleDrillEdgeToDrillEdgeClearance,
13955
+ minPadEdgeToPadEdgeClearance,
13956
+ minBoardEdgeClearance,
13957
+ minViaHoleDiameter,
13958
+ minViaPadDiameter,
13953
13959
  nominalTraceWidth,
13954
13960
  subcircuitComponent
13955
13961
  }) => {
@@ -14291,6 +14297,14 @@ var getSimpleRouteJsonFromCircuitJson = ({
14291
14297
  conn.externallyConnectedPointIds ??= [];
14292
14298
  conn.externallyConnectedPointIds.push([...tracePortIds]);
14293
14299
  }
14300
+ const resolvedMinViaHoleDiameter = minViaHoleDiameter ?? board?.min_via_hole_diameter;
14301
+ const resolvedMinViaPadDiameter = minViaPadDiameter ?? board?.min_via_pad_diameter;
14302
+ const resolvedMinTraceToPadEdgeClearance = minTraceToPadEdgeClearance ?? board?.min_trace_to_pad_edge_clearance;
14303
+ const resolvedMinViaEdgeToPadEdgeClearance = minViaEdgeToPadEdgeClearance ?? board?.min_via_edge_to_pad_edge_clearance;
14304
+ const resolvedMinViaHoleEdgeToViaHoleEdgeClearance = minViaHoleEdgeToViaHoleEdgeClearance ?? board?.min_via_hole_edge_to_via_hole_edge_clearance;
14305
+ const resolvedMinPlatedHoleDrillEdgeToDrillEdgeClearance = minPlatedHoleDrillEdgeToDrillEdgeClearance ?? board?.min_plated_hole_drill_edge_to_drill_edge_clearance;
14306
+ const resolvedMinPadEdgeToPadEdgeClearance = minPadEdgeToPadEdgeClearance ?? board?.min_pad_edge_to_pad_edge_clearance;
14307
+ const resolvedMinBoardEdgeClearance = minBoardEdgeClearance ?? board?.min_board_edge_clearance;
14294
14308
  return {
14295
14309
  simpleRouteJson: {
14296
14310
  bounds,
@@ -14300,13 +14314,17 @@ var getSimpleRouteJsonFromCircuitJson = ({
14300
14314
  // subcircuit
14301
14315
  layerCount: board?.num_layers ?? 2,
14302
14316
  minTraceWidth: minTraceWidth ?? board?.min_trace_width ?? 0.1,
14303
- minViaDiameter: board?.min_via_pad_diameter,
14304
- minViaHoleDiameter: board?.min_via_hole_diameter,
14305
- minViaPadDiameter: board?.min_via_pad_diameter,
14306
- min_via_hole_diameter: board?.min_via_hole_diameter,
14307
- min_via_pad_diameter: board?.min_via_pad_diameter,
14308
- minTraceToPadEdgeClearance: minTraceToPadEdgeClearance ?? board?.min_trace_to_pad_edge_clearance,
14309
- minViaEdgeToPadEdgeClearance: minViaEdgeToPadEdgeClearance ?? board?.min_via_edge_to_pad_edge_clearance,
14317
+ minViaDiameter: resolvedMinViaPadDiameter,
14318
+ minViaHoleDiameter: resolvedMinViaHoleDiameter,
14319
+ minViaPadDiameter: resolvedMinViaPadDiameter,
14320
+ min_via_hole_diameter: resolvedMinViaHoleDiameter,
14321
+ min_via_pad_diameter: resolvedMinViaPadDiameter,
14322
+ minTraceToPadEdgeClearance: resolvedMinTraceToPadEdgeClearance,
14323
+ minViaEdgeToPadEdgeClearance: resolvedMinViaEdgeToPadEdgeClearance,
14324
+ minViaHoleEdgeToViaHoleEdgeClearance: resolvedMinViaHoleEdgeToViaHoleEdgeClearance,
14325
+ minPlatedHoleDrillEdgeToDrillEdgeClearance: resolvedMinPlatedHoleDrillEdgeToDrillEdgeClearance,
14326
+ minPadEdgeToPadEdgeClearance: resolvedMinPadEdgeToPadEdgeClearance,
14327
+ minBoardEdgeClearance: resolvedMinBoardEdgeClearance,
14310
14328
  nominalTraceWidth,
14311
14329
  outline: board?.outline?.map((point6) => ({ ...point6 }))
14312
14330
  },
@@ -18284,6 +18302,45 @@ function getAutoroutingPhasePropsByPhaseIndex(group) {
18284
18302
  }
18285
18303
  return propsByPhaseIndex;
18286
18304
  }
18305
+ function toParsedDistance(value) {
18306
+ if (value === void 0) return void 0;
18307
+ return Number(value);
18308
+ }
18309
+ function getDrcTolerancesFromAutoroutingPhaseProps(phaseProps) {
18310
+ const {
18311
+ minTraceWidth,
18312
+ minViaHoleEdgeToViaHoleEdgeClearance,
18313
+ minPlatedHoleDrillEdgeToDrillEdgeClearance,
18314
+ minTraceToPadEdgeClearance,
18315
+ minPadEdgeToPadEdgeClearance,
18316
+ minBoardEdgeClearance,
18317
+ minViaEdgeToPadEdgeClearance,
18318
+ minViaHoleDiameter,
18319
+ minViaPadDiameter
18320
+ } = phaseProps;
18321
+ if (minTraceWidth === void 0 && minViaHoleEdgeToViaHoleEdgeClearance === void 0 && minPlatedHoleDrillEdgeToDrillEdgeClearance === void 0 && minTraceToPadEdgeClearance === void 0 && minPadEdgeToPadEdgeClearance === void 0 && minBoardEdgeClearance === void 0 && minViaEdgeToPadEdgeClearance === void 0 && minViaHoleDiameter === void 0 && minViaPadDiameter === void 0) {
18322
+ return void 0;
18323
+ }
18324
+ return {
18325
+ minTraceWidth: toParsedDistance(minTraceWidth),
18326
+ minViaHoleEdgeToViaHoleEdgeClearance: toParsedDistance(
18327
+ minViaHoleEdgeToViaHoleEdgeClearance
18328
+ ),
18329
+ minPlatedHoleDrillEdgeToDrillEdgeClearance: toParsedDistance(
18330
+ minPlatedHoleDrillEdgeToDrillEdgeClearance
18331
+ ),
18332
+ minTraceToPadEdgeClearance: toParsedDistance(minTraceToPadEdgeClearance),
18333
+ minPadEdgeToPadEdgeClearance: toParsedDistance(
18334
+ minPadEdgeToPadEdgeClearance
18335
+ ),
18336
+ minBoardEdgeClearance: toParsedDistance(minBoardEdgeClearance),
18337
+ minViaEdgeToPadEdgeClearance: toParsedDistance(
18338
+ minViaEdgeToPadEdgeClearance
18339
+ ),
18340
+ minViaHoleDiameter: toParsedDistance(minViaHoleDiameter),
18341
+ minViaPadDiameter: toParsedDistance(minViaPadDiameter)
18342
+ };
18343
+ }
18287
18344
  function Group_getRoutingPhasePlans(group) {
18288
18345
  const traces = group.selectAll("trace");
18289
18346
  const nets = group.selectAll("net");
@@ -18317,6 +18374,7 @@ function Group_getRoutingPhasePlans(group) {
18317
18374
  const phaseProps = phasePropsByPhaseIndex.get(plan.routingPhaseIndex);
18318
18375
  plan.reroute = phaseProps?.reroute;
18319
18376
  plan.region = phaseProps?.region;
18377
+ plan.drcTolerances = phaseProps ? getDrcTolerancesFromAutoroutingPhaseProps(phaseProps) : void 0;
18320
18378
  }
18321
18379
  const defaultPhaseProps = phasePropsByPhaseIndex.get(null);
18322
18380
  if (phasePropsByPhaseIndex.size === 1 && defaultPhaseProps?.reroute && plans.length === 1 && plans[0]?.routingPhaseIndex === null) {
@@ -18471,6 +18529,52 @@ function Group_filterSimpleRouteJsonForPhase(simpleRouteJson, phasePlan) {
18471
18529
  connections
18472
18530
  };
18473
18531
  }
18532
+ function hasDrcTolerances(drcTolerances) {
18533
+ if (!drcTolerances) return false;
18534
+ return Object.values(drcTolerances).some((value) => value !== void 0);
18535
+ }
18536
+ function applyMinTraceWidthToConnections(connections, minTraceWidth) {
18537
+ if (minTraceWidth === void 0) return connections;
18538
+ return connections.map((connection) => ({
18539
+ ...connection,
18540
+ nominalTraceWidth: Math.max(
18541
+ connection.nominalTraceWidth ?? minTraceWidth,
18542
+ minTraceWidth
18543
+ ),
18544
+ width: Math.max(connection.width ?? minTraceWidth, minTraceWidth)
18545
+ }));
18546
+ }
18547
+ function Group_applyDrcTolerancesToSimpleRouteJson(simpleRouteJson, drcTolerances) {
18548
+ if (!hasDrcTolerances(drcTolerances)) return simpleRouteJson;
18549
+ const minTraceWidth = drcTolerances.minTraceWidth ?? simpleRouteJson.minTraceWidth;
18550
+ const minViaHoleDiameter = drcTolerances.minViaHoleDiameter ?? simpleRouteJson.minViaHoleDiameter;
18551
+ const minViaPadDiameter = drcTolerances.minViaPadDiameter ?? simpleRouteJson.minViaPadDiameter;
18552
+ const minTraceToPadEdgeClearance = drcTolerances.minTraceToPadEdgeClearance ?? simpleRouteJson.minTraceToPadEdgeClearance;
18553
+ const minViaEdgeToPadEdgeClearance = drcTolerances.minViaEdgeToPadEdgeClearance ?? simpleRouteJson.minViaEdgeToPadEdgeClearance;
18554
+ const minViaHoleEdgeToViaHoleEdgeClearance = drcTolerances.minViaHoleEdgeToViaHoleEdgeClearance ?? simpleRouteJson.minViaHoleEdgeToViaHoleEdgeClearance;
18555
+ const minPlatedHoleDrillEdgeToDrillEdgeClearance = drcTolerances.minPlatedHoleDrillEdgeToDrillEdgeClearance ?? simpleRouteJson.minPlatedHoleDrillEdgeToDrillEdgeClearance;
18556
+ const minPadEdgeToPadEdgeClearance = drcTolerances.minPadEdgeToPadEdgeClearance ?? simpleRouteJson.minPadEdgeToPadEdgeClearance;
18557
+ const minBoardEdgeClearance = drcTolerances.minBoardEdgeClearance ?? simpleRouteJson.minBoardEdgeClearance;
18558
+ return {
18559
+ ...simpleRouteJson,
18560
+ connections: applyMinTraceWidthToConnections(
18561
+ simpleRouteJson.connections,
18562
+ drcTolerances.minTraceWidth
18563
+ ),
18564
+ minTraceWidth,
18565
+ minViaDiameter: minViaPadDiameter,
18566
+ minViaHoleDiameter,
18567
+ minViaPadDiameter,
18568
+ min_via_hole_diameter: minViaHoleDiameter,
18569
+ min_via_pad_diameter: minViaPadDiameter,
18570
+ minTraceToPadEdgeClearance,
18571
+ minViaEdgeToPadEdgeClearance,
18572
+ minViaHoleEdgeToViaHoleEdgeClearance,
18573
+ minPlatedHoleDrillEdgeToDrillEdgeClearance,
18574
+ minPadEdgeToPadEdgeClearance,
18575
+ minBoardEdgeClearance
18576
+ };
18577
+ }
18474
18578
  function Group_getObstaclesFromRoutedTraces(traces) {
18475
18579
  const obstacles = [];
18476
18580
  for (const trace of traces) {
@@ -19327,6 +19431,10 @@ var Group6 = class extends NormalComponent3 {
19327
19431
  ...Group_getObstaclesFromRoutedTraces(outputTraces)
19328
19432
  ];
19329
19433
  }
19434
+ simpleRouteJson = Group_applyDrcTolerancesToSimpleRouteJson(
19435
+ simpleRouteJson,
19436
+ routingPhasePlan.drcTolerances
19437
+ );
19330
19438
  if (hasPhasedAutorouting && simpleRouteJson.connections.length === 0) {
19331
19439
  continue;
19332
19440
  }
@@ -20647,7 +20755,7 @@ import { identity as identity5 } from "transformation-matrix";
20647
20755
  var package_default = {
20648
20756
  name: "@tscircuit/core",
20649
20757
  type: "module",
20650
- version: "0.0.1231",
20758
+ version: "0.0.1232",
20651
20759
  types: "dist/index.d.ts",
20652
20760
  main: "dist/index.js",
20653
20761
  module: "dist/index.js",
@@ -20693,7 +20801,7 @@ var package_default = {
20693
20801
  "@tscircuit/math-utils": "^0.0.36",
20694
20802
  "@tscircuit/miniflex": "^0.0.4",
20695
20803
  "@tscircuit/ngspice-spice-engine": "^0.0.8",
20696
- "@tscircuit/props": "^0.0.527",
20804
+ "@tscircuit/props": "^0.0.531",
20697
20805
  "@tscircuit/schematic-match-adapt": "^0.0.16",
20698
20806
  "@tscircuit/schematic-trace-solver": "^0.0.55",
20699
20807
  "@tscircuit/solver-utils": "^0.0.3",
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@tscircuit/core",
3
3
  "type": "module",
4
- "version": "0.0.1232",
4
+ "version": "0.0.1233",
5
5
  "types": "dist/index.d.ts",
6
6
  "main": "dist/index.js",
7
7
  "module": "dist/index.js",
@@ -47,7 +47,7 @@
47
47
  "@tscircuit/math-utils": "^0.0.36",
48
48
  "@tscircuit/miniflex": "^0.0.4",
49
49
  "@tscircuit/ngspice-spice-engine": "^0.0.8",
50
- "@tscircuit/props": "^0.0.527",
50
+ "@tscircuit/props": "^0.0.531",
51
51
  "@tscircuit/schematic-match-adapt": "^0.0.16",
52
52
  "@tscircuit/schematic-trace-solver": "^0.0.55",
53
53
  "@tscircuit/solver-utils": "^0.0.3",