@tscircuit/core 0.0.1232 → 0.0.1234
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 +26 -5
- package/dist/index.js +165 -11
- package/package.json +2 -2
package/dist/index.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import * as circuit_json from 'circuit-json';
|
|
2
|
-
import { PcbTraceError, PcbPlacementError, PcbManualEditConflictWarning, PcbViaClearanceError, LayerRef, AnyCircuitElement, Size, PcbTraceRoutePoint, AnySourceComponent, PcbComponent,
|
|
2
|
+
import { PcbTraceError, PcbPlacementError, PcbManualEditConflictWarning, PcbViaClearanceError, LayerRef, AnyCircuitElement, Size, PcbTrace as PcbTrace$1, PcbTraceRoutePoint, AnySourceComponent, PcbComponent, PcbVia, SchematicPort, SchematicComponent, RouteHintPoint, CircuitJson } from 'circuit-json';
|
|
3
3
|
import * as _tscircuit_props from '@tscircuit/props';
|
|
4
4
|
import { PlatformConfig, traceProps, netProps, AutorouterProp, AutoroutingPhaseProps, subcircuitGroupProps, AutorouterConfig, PcbSx, portProps, SupplierPartNumbers, CadModelProp, SchematicPortArrangement, groupProps, boardProps, subcircuitProps, subpanelProps, capacitorProps, chipProps, pinoutProps, diodeProps, fuseProps, jumperProps, interconnectProps, solderjumperProps, ledProps, powerSourceProps, voltageSourceProps, currentSourceProps, resistorProps, constraintProps, autoroutingPhaseProps, fabricationNoteRectProps, fabricationNotePathProps, fabricationNoteTextProps, fabricationNoteDimensionProps, pcbNoteLineProps, pcbNoteRectProps, pcbNoteTextProps, pcbNotePathProps, pcbNoteDimensionProps, footprintProps, breakoutProps, breakoutPointProps, holeProps, pcbKeepoutProps, netLabelProps, cadmodelProps, cadassemblyProps, platedHoleProps, courtyardCircleProps, courtyardOutlineProps, courtyardRectProps, silkscreenCircleProps, silkscreenPathProps, silkscreenRectProps, silkscreenTextProps, silkscreenLineProps, smtPadProps, fiducialProps, traceHintProps, viaProps, copperPourProps, copperTextProps, cutoutProps, batteryProps, pinHeaderProps, resonatorProps, inductorProps, potentiometerProps, pushButtonProps, crystalProps, transistorProps, mosfetProps, opampProps, OpAmpPinLabels, switchProps, SwitchProps, testpointProps, schematicTextProps, schematicLineProps, schematicRectProps, schematicArcProps, schematicCircleProps, schematicPathProps, schematicBoxProps, schematicSectionProps, schematicTableProps, schematicRowProps, schematicCellProps, symbolProps, analogSimulationProps, voltageProbeProps, CapacitorProps, ChipProps, DiodeProps, ResistorProps, ManualEditEvent, ManualEditsFile, ChipConnections, manual_edits_file } from '@tscircuit/props';
|
|
5
5
|
export { kicadFootprintStrings } from '@tscircuit/props';
|
|
@@ -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: {
|
|
@@ -454,6 +458,7 @@ declare class Trace extends PrimitiveComponent<typeof traceProps> implements Tra
|
|
|
454
458
|
source_trace_id: string | null;
|
|
455
459
|
pcb_trace_id: string | null;
|
|
456
460
|
schematic_trace_id: string | null;
|
|
461
|
+
_inflatedPcbTrace?: PcbTrace$1;
|
|
457
462
|
_portsRoutedOnPcb: Port[];
|
|
458
463
|
subcircuit_connectivity_map_key: string | null;
|
|
459
464
|
_traceConnectionHash: string | null;
|
|
@@ -1375,11 +1380,23 @@ declare class Net extends PrimitiveComponent<typeof netProps> {
|
|
|
1375
1380
|
renderError(message: Parameters<typeof PrimitiveComponent.prototype.renderError>[0]): void;
|
|
1376
1381
|
}
|
|
1377
1382
|
|
|
1383
|
+
interface RoutingPhaseDrcTolerances {
|
|
1384
|
+
minTraceWidth?: number;
|
|
1385
|
+
minViaHoleEdgeToViaHoleEdgeClearance?: number;
|
|
1386
|
+
minPlatedHoleDrillEdgeToDrillEdgeClearance?: number;
|
|
1387
|
+
minTraceToPadEdgeClearance?: number;
|
|
1388
|
+
minPadEdgeToPadEdgeClearance?: number;
|
|
1389
|
+
minBoardEdgeClearance?: number;
|
|
1390
|
+
minViaEdgeToPadEdgeClearance?: number;
|
|
1391
|
+
minViaHoleDiameter?: number;
|
|
1392
|
+
minViaPadDiameter?: number;
|
|
1393
|
+
}
|
|
1378
1394
|
interface RoutingPhasePlan {
|
|
1379
1395
|
routingPhaseIndex: number | null;
|
|
1380
1396
|
autorouter?: AutorouterProp;
|
|
1381
1397
|
reroute?: boolean;
|
|
1382
1398
|
region?: AutoroutingPhaseProps["region"];
|
|
1399
|
+
drcTolerances?: RoutingPhaseDrcTolerances;
|
|
1383
1400
|
nets: Net[];
|
|
1384
1401
|
traces: Trace[];
|
|
1385
1402
|
}
|
|
@@ -66650,7 +66667,6 @@ declare class Resistor extends NormalComponent<typeof resistorProps, PassivePort
|
|
|
66650
66667
|
}>]>, "top" | "bottom" | "inner1" | "inner2" | "inner3" | "inner4" | "inner5" | "inner6", "top" | "bottom" | "inner1" | "inner2" | "inner3" | "inner4" | "inner5" | "inner6" | {
|
|
66651
66668
|
name: "top" | "bottom" | "inner1" | "inner2" | "inner3" | "inner4" | "inner5" | "inner6";
|
|
66652
66669
|
}>>;
|
|
66653
|
-
footprint: zod.ZodOptional<zod.ZodType<_tscircuit_props.FootprintProp, zod.ZodTypeDef, _tscircuit_props.FootprintProp>>;
|
|
66654
66670
|
symbol: zod.ZodOptional<zod.ZodType<_tscircuit_props.SymbolProp, zod.ZodTypeDef, _tscircuit_props.SymbolProp>>;
|
|
66655
66671
|
schStyle: zod.ZodOptional<zod.ZodObject<{
|
|
66656
66672
|
defaultPassiveSize: zod.ZodOptional<zod.ZodUnion<[zod.ZodEnum<["xs", "sm", "md"]>, zod.ZodEffects<zod.ZodUnion<[zod.ZodString, zod.ZodNumber]>, number, string | number>]>>;
|
|
@@ -66665,9 +66681,7 @@ declare class Resistor extends NormalComponent<typeof resistorProps, PassivePort
|
|
|
66665
66681
|
relative: zod.ZodOptional<zod.ZodBoolean>;
|
|
66666
66682
|
schRelative: zod.ZodOptional<zod.ZodBoolean>;
|
|
66667
66683
|
pcbRelative: zod.ZodOptional<zod.ZodBoolean>;
|
|
66668
|
-
} & {
|
|
66669
66684
|
supplierPartNumbers: zod.ZodOptional<zod.ZodRecord<zod.ZodEnum<["jlcpcb", "macrofab", "pcbway", "digikey", "mouser", "lcsc"]>, zod.ZodArray<zod.ZodString, "many">>>;
|
|
66670
|
-
} & {
|
|
66671
66685
|
key: zod.ZodOptional<zod.ZodAny>;
|
|
66672
66686
|
name: zod.ZodString;
|
|
66673
66687
|
displayName: zod.ZodOptional<zod.ZodString>;
|
|
@@ -69937,6 +69951,7 @@ declare class Resistor extends NormalComponent<typeof resistorProps, PassivePort
|
|
|
69937
69951
|
mfn: zod.ZodOptional<zod.ZodString>;
|
|
69938
69952
|
manufacturerPartNumber: zod.ZodOptional<zod.ZodString>;
|
|
69939
69953
|
} & {
|
|
69954
|
+
footprint: zod.ZodType<_tscircuit_props.FootprintProp | undefined, zod.ZodTypeDef, _tscircuit_props.FootprintProp | undefined>;
|
|
69940
69955
|
resistance: zod.ZodEffects<zod.ZodUnion<[zod.ZodString, zod.ZodNumber]>, number, string | number>;
|
|
69941
69956
|
tolerance: zod.ZodOptional<zod.ZodPipeline<zod.ZodEffects<zod.ZodUnion<[zod.ZodString, zod.ZodNumber]>, number, string | number>, zod.ZodNumber>>;
|
|
69942
69957
|
pullupFor: zod.ZodOptional<zod.ZodString>;
|
|
@@ -152702,7 +152717,7 @@ declare const applyEditEvents: ({ circuitJson, editEvents, }: {
|
|
|
152702
152717
|
/**
|
|
152703
152718
|
* This function can only be called in the PcbTraceRender phase or later
|
|
152704
152719
|
*/
|
|
152705
|
-
declare const getSimpleRouteJsonFromCircuitJson: ({ db, circuitJson, subcircuit_id, minTraceWidth, minTraceToPadEdgeClearance, minViaEdgeToPadEdgeClearance, nominalTraceWidth, subcircuitComponent, }: {
|
|
152720
|
+
declare const getSimpleRouteJsonFromCircuitJson: ({ db, circuitJson, subcircuit_id, minTraceWidth, minTraceToPadEdgeClearance, minViaEdgeToPadEdgeClearance, minViaHoleEdgeToViaHoleEdgeClearance, minPlatedHoleDrillEdgeToDrillEdgeClearance, minPadEdgeToPadEdgeClearance, minBoardEdgeClearance, minViaHoleDiameter, minViaPadDiameter, nominalTraceWidth, subcircuitComponent, }: {
|
|
152706
152721
|
db?: CircuitJsonUtilObjects;
|
|
152707
152722
|
circuitJson?: AnyCircuitElement[];
|
|
152708
152723
|
subcircuit_id?: string | null;
|
|
@@ -152710,6 +152725,12 @@ declare const getSimpleRouteJsonFromCircuitJson: ({ db, circuitJson, subcircuit_
|
|
|
152710
152725
|
nominalTraceWidth?: number;
|
|
152711
152726
|
minTraceToPadEdgeClearance?: number;
|
|
152712
152727
|
minViaEdgeToPadEdgeClearance?: number;
|
|
152728
|
+
minViaHoleEdgeToViaHoleEdgeClearance?: number;
|
|
152729
|
+
minPlatedHoleDrillEdgeToDrillEdgeClearance?: number;
|
|
152730
|
+
minPadEdgeToPadEdgeClearance?: number;
|
|
152731
|
+
minBoardEdgeClearance?: number;
|
|
152732
|
+
minViaHoleDiameter?: number;
|
|
152733
|
+
minViaPadDiameter?: number;
|
|
152713
152734
|
subcircuitComponent?: {
|
|
152714
152735
|
selectAll(selector: string): unknown[];
|
|
152715
152736
|
};
|
package/dist/index.js
CHANGED
|
@@ -4541,7 +4541,8 @@ function Trace_doInitialPcbManualTraceRender(trace) {
|
|
|
4541
4541
|
const subcircuit = trace.getSubcircuit();
|
|
4542
4542
|
const hasPcbPath = props.pcbPath !== void 0;
|
|
4543
4543
|
const wantsStraightLine = Boolean(props.pcbStraightLine);
|
|
4544
|
-
|
|
4544
|
+
const inflatedPcbTrace = trace._inflatedPcbTrace;
|
|
4545
|
+
if (!hasPcbPath && !wantsStraightLine && !inflatedPcbTrace) return;
|
|
4545
4546
|
let allPortsFound;
|
|
4546
4547
|
let ports;
|
|
4547
4548
|
let portsWithSelectors;
|
|
@@ -4594,6 +4595,49 @@ function Trace_doInitialPcbManualTraceRender(trace) {
|
|
|
4594
4595
|
return;
|
|
4595
4596
|
}
|
|
4596
4597
|
const width = trace._getExplicitTraceThickness() ?? trace.getSubcircuit()._parsedProps.minTraceWidth ?? jlcMinTolerances.min_trace_width;
|
|
4598
|
+
if (inflatedPcbTrace) {
|
|
4599
|
+
const { maybeFlipLayer } = trace._getPcbPrimitiveFlippedHelpers();
|
|
4600
|
+
const transform2 = trace._computePcbGlobalTransformBeforeLayout();
|
|
4601
|
+
const transformedRoute = inflatedPcbTrace.route.map((point6) => {
|
|
4602
|
+
const { x, y, ...restOfPoint } = point6;
|
|
4603
|
+
const transformedPoint = applyToPoint2(transform2, { x, y });
|
|
4604
|
+
if (point6.route_type === "wire" && point6.layer) {
|
|
4605
|
+
return {
|
|
4606
|
+
...transformedPoint,
|
|
4607
|
+
...restOfPoint,
|
|
4608
|
+
layer: maybeFlipLayer(point6.layer)
|
|
4609
|
+
};
|
|
4610
|
+
}
|
|
4611
|
+
return { ...transformedPoint, ...restOfPoint };
|
|
4612
|
+
});
|
|
4613
|
+
const pcb_trace2 = db.pcb_trace.insert({
|
|
4614
|
+
...inflatedPcbTrace,
|
|
4615
|
+
route: transformedRoute,
|
|
4616
|
+
source_trace_id: trace.source_trace_id,
|
|
4617
|
+
subcircuit_id: subcircuit?.subcircuit_id ?? void 0,
|
|
4618
|
+
pcb_group_id: trace.getGroup()?.pcb_group_id ?? void 0
|
|
4619
|
+
});
|
|
4620
|
+
const pcbStyle2 = trace.getInheritedMergedProperty("pcbStyle");
|
|
4621
|
+
const { holeDiameter: holeDiameter2, padDiameter: padDiameter2 } = getViaDiameterDefaults(pcbStyle2);
|
|
4622
|
+
for (const point6 of transformedRoute) {
|
|
4623
|
+
if (point6.route_type === "via") {
|
|
4624
|
+
db.pcb_via.insert({
|
|
4625
|
+
pcb_trace_id: pcb_trace2.pcb_trace_id,
|
|
4626
|
+
x: point6.x,
|
|
4627
|
+
y: point6.y,
|
|
4628
|
+
hole_diameter: holeDiameter2,
|
|
4629
|
+
outer_diameter: padDiameter2,
|
|
4630
|
+
layers: [point6.from_layer, point6.to_layer],
|
|
4631
|
+
from_layer: point6.from_layer,
|
|
4632
|
+
to_layer: point6.to_layer
|
|
4633
|
+
});
|
|
4634
|
+
}
|
|
4635
|
+
}
|
|
4636
|
+
trace._portsRoutedOnPcb = ports;
|
|
4637
|
+
trace.pcb_trace_id = pcb_trace2.pcb_trace_id;
|
|
4638
|
+
trace._insertErrorIfTraceIsOutsideBoard(pcb_trace2.route, ports);
|
|
4639
|
+
return;
|
|
4640
|
+
}
|
|
4597
4641
|
if (wantsStraightLine && !hasPcbPath) {
|
|
4598
4642
|
if (!ports || ports.length < 2) {
|
|
4599
4643
|
trace.renderError("pcbStraightLine requires exactly two connected ports");
|
|
@@ -4960,6 +5004,7 @@ var Trace3 = class extends PrimitiveComponent2 {
|
|
|
4960
5004
|
source_trace_id = null;
|
|
4961
5005
|
pcb_trace_id = null;
|
|
4962
5006
|
schematic_trace_id = null;
|
|
5007
|
+
_inflatedPcbTrace;
|
|
4963
5008
|
_portsRoutedOnPcb;
|
|
4964
5009
|
subcircuit_connectivity_map_key = null;
|
|
4965
5010
|
_traceConnectionHash = null;
|
|
@@ -13950,6 +13995,12 @@ var getSimpleRouteJsonFromCircuitJson = ({
|
|
|
13950
13995
|
minTraceWidth,
|
|
13951
13996
|
minTraceToPadEdgeClearance,
|
|
13952
13997
|
minViaEdgeToPadEdgeClearance,
|
|
13998
|
+
minViaHoleEdgeToViaHoleEdgeClearance,
|
|
13999
|
+
minPlatedHoleDrillEdgeToDrillEdgeClearance,
|
|
14000
|
+
minPadEdgeToPadEdgeClearance,
|
|
14001
|
+
minBoardEdgeClearance,
|
|
14002
|
+
minViaHoleDiameter,
|
|
14003
|
+
minViaPadDiameter,
|
|
13953
14004
|
nominalTraceWidth,
|
|
13954
14005
|
subcircuitComponent
|
|
13955
14006
|
}) => {
|
|
@@ -14291,6 +14342,14 @@ var getSimpleRouteJsonFromCircuitJson = ({
|
|
|
14291
14342
|
conn.externallyConnectedPointIds ??= [];
|
|
14292
14343
|
conn.externallyConnectedPointIds.push([...tracePortIds]);
|
|
14293
14344
|
}
|
|
14345
|
+
const resolvedMinViaHoleDiameter = minViaHoleDiameter ?? board?.min_via_hole_diameter;
|
|
14346
|
+
const resolvedMinViaPadDiameter = minViaPadDiameter ?? board?.min_via_pad_diameter;
|
|
14347
|
+
const resolvedMinTraceToPadEdgeClearance = minTraceToPadEdgeClearance ?? board?.min_trace_to_pad_edge_clearance;
|
|
14348
|
+
const resolvedMinViaEdgeToPadEdgeClearance = minViaEdgeToPadEdgeClearance ?? board?.min_via_edge_to_pad_edge_clearance;
|
|
14349
|
+
const resolvedMinViaHoleEdgeToViaHoleEdgeClearance = minViaHoleEdgeToViaHoleEdgeClearance ?? board?.min_via_hole_edge_to_via_hole_edge_clearance;
|
|
14350
|
+
const resolvedMinPlatedHoleDrillEdgeToDrillEdgeClearance = minPlatedHoleDrillEdgeToDrillEdgeClearance ?? board?.min_plated_hole_drill_edge_to_drill_edge_clearance;
|
|
14351
|
+
const resolvedMinPadEdgeToPadEdgeClearance = minPadEdgeToPadEdgeClearance ?? board?.min_pad_edge_to_pad_edge_clearance;
|
|
14352
|
+
const resolvedMinBoardEdgeClearance = minBoardEdgeClearance ?? board?.min_board_edge_clearance;
|
|
14294
14353
|
return {
|
|
14295
14354
|
simpleRouteJson: {
|
|
14296
14355
|
bounds,
|
|
@@ -14300,13 +14359,17 @@ var getSimpleRouteJsonFromCircuitJson = ({
|
|
|
14300
14359
|
// subcircuit
|
|
14301
14360
|
layerCount: board?.num_layers ?? 2,
|
|
14302
14361
|
minTraceWidth: minTraceWidth ?? board?.min_trace_width ?? 0.1,
|
|
14303
|
-
minViaDiameter:
|
|
14304
|
-
minViaHoleDiameter:
|
|
14305
|
-
minViaPadDiameter:
|
|
14306
|
-
min_via_hole_diameter:
|
|
14307
|
-
min_via_pad_diameter:
|
|
14308
|
-
minTraceToPadEdgeClearance:
|
|
14309
|
-
minViaEdgeToPadEdgeClearance:
|
|
14362
|
+
minViaDiameter: resolvedMinViaPadDiameter,
|
|
14363
|
+
minViaHoleDiameter: resolvedMinViaHoleDiameter,
|
|
14364
|
+
minViaPadDiameter: resolvedMinViaPadDiameter,
|
|
14365
|
+
min_via_hole_diameter: resolvedMinViaHoleDiameter,
|
|
14366
|
+
min_via_pad_diameter: resolvedMinViaPadDiameter,
|
|
14367
|
+
minTraceToPadEdgeClearance: resolvedMinTraceToPadEdgeClearance,
|
|
14368
|
+
minViaEdgeToPadEdgeClearance: resolvedMinViaEdgeToPadEdgeClearance,
|
|
14369
|
+
minViaHoleEdgeToViaHoleEdgeClearance: resolvedMinViaHoleEdgeToViaHoleEdgeClearance,
|
|
14370
|
+
minPlatedHoleDrillEdgeToDrillEdgeClearance: resolvedMinPlatedHoleDrillEdgeToDrillEdgeClearance,
|
|
14371
|
+
minPadEdgeToPadEdgeClearance: resolvedMinPadEdgeToPadEdgeClearance,
|
|
14372
|
+
minBoardEdgeClearance: resolvedMinBoardEdgeClearance,
|
|
14310
14373
|
nominalTraceWidth,
|
|
14311
14374
|
outline: board?.outline?.map((point6) => ({ ...point6 }))
|
|
14312
14375
|
},
|
|
@@ -18284,6 +18347,45 @@ function getAutoroutingPhasePropsByPhaseIndex(group) {
|
|
|
18284
18347
|
}
|
|
18285
18348
|
return propsByPhaseIndex;
|
|
18286
18349
|
}
|
|
18350
|
+
function toParsedDistance(value) {
|
|
18351
|
+
if (value === void 0) return void 0;
|
|
18352
|
+
return Number(value);
|
|
18353
|
+
}
|
|
18354
|
+
function getDrcTolerancesFromAutoroutingPhaseProps(phaseProps) {
|
|
18355
|
+
const {
|
|
18356
|
+
minTraceWidth,
|
|
18357
|
+
minViaHoleEdgeToViaHoleEdgeClearance,
|
|
18358
|
+
minPlatedHoleDrillEdgeToDrillEdgeClearance,
|
|
18359
|
+
minTraceToPadEdgeClearance,
|
|
18360
|
+
minPadEdgeToPadEdgeClearance,
|
|
18361
|
+
minBoardEdgeClearance,
|
|
18362
|
+
minViaEdgeToPadEdgeClearance,
|
|
18363
|
+
minViaHoleDiameter,
|
|
18364
|
+
minViaPadDiameter
|
|
18365
|
+
} = phaseProps;
|
|
18366
|
+
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) {
|
|
18367
|
+
return void 0;
|
|
18368
|
+
}
|
|
18369
|
+
return {
|
|
18370
|
+
minTraceWidth: toParsedDistance(minTraceWidth),
|
|
18371
|
+
minViaHoleEdgeToViaHoleEdgeClearance: toParsedDistance(
|
|
18372
|
+
minViaHoleEdgeToViaHoleEdgeClearance
|
|
18373
|
+
),
|
|
18374
|
+
minPlatedHoleDrillEdgeToDrillEdgeClearance: toParsedDistance(
|
|
18375
|
+
minPlatedHoleDrillEdgeToDrillEdgeClearance
|
|
18376
|
+
),
|
|
18377
|
+
minTraceToPadEdgeClearance: toParsedDistance(minTraceToPadEdgeClearance),
|
|
18378
|
+
minPadEdgeToPadEdgeClearance: toParsedDistance(
|
|
18379
|
+
minPadEdgeToPadEdgeClearance
|
|
18380
|
+
),
|
|
18381
|
+
minBoardEdgeClearance: toParsedDistance(minBoardEdgeClearance),
|
|
18382
|
+
minViaEdgeToPadEdgeClearance: toParsedDistance(
|
|
18383
|
+
minViaEdgeToPadEdgeClearance
|
|
18384
|
+
),
|
|
18385
|
+
minViaHoleDiameter: toParsedDistance(minViaHoleDiameter),
|
|
18386
|
+
minViaPadDiameter: toParsedDistance(minViaPadDiameter)
|
|
18387
|
+
};
|
|
18388
|
+
}
|
|
18287
18389
|
function Group_getRoutingPhasePlans(group) {
|
|
18288
18390
|
const traces = group.selectAll("trace");
|
|
18289
18391
|
const nets = group.selectAll("net");
|
|
@@ -18317,6 +18419,7 @@ function Group_getRoutingPhasePlans(group) {
|
|
|
18317
18419
|
const phaseProps = phasePropsByPhaseIndex.get(plan.routingPhaseIndex);
|
|
18318
18420
|
plan.reroute = phaseProps?.reroute;
|
|
18319
18421
|
plan.region = phaseProps?.region;
|
|
18422
|
+
plan.drcTolerances = phaseProps ? getDrcTolerancesFromAutoroutingPhaseProps(phaseProps) : void 0;
|
|
18320
18423
|
}
|
|
18321
18424
|
const defaultPhaseProps = phasePropsByPhaseIndex.get(null);
|
|
18322
18425
|
if (phasePropsByPhaseIndex.size === 1 && defaultPhaseProps?.reroute && plans.length === 1 && plans[0]?.routingPhaseIndex === null) {
|
|
@@ -18471,6 +18574,52 @@ function Group_filterSimpleRouteJsonForPhase(simpleRouteJson, phasePlan) {
|
|
|
18471
18574
|
connections
|
|
18472
18575
|
};
|
|
18473
18576
|
}
|
|
18577
|
+
function hasDrcTolerances(drcTolerances) {
|
|
18578
|
+
if (!drcTolerances) return false;
|
|
18579
|
+
return Object.values(drcTolerances).some((value) => value !== void 0);
|
|
18580
|
+
}
|
|
18581
|
+
function applyMinTraceWidthToConnections(connections, minTraceWidth) {
|
|
18582
|
+
if (minTraceWidth === void 0) return connections;
|
|
18583
|
+
return connections.map((connection) => ({
|
|
18584
|
+
...connection,
|
|
18585
|
+
nominalTraceWidth: Math.max(
|
|
18586
|
+
connection.nominalTraceWidth ?? minTraceWidth,
|
|
18587
|
+
minTraceWidth
|
|
18588
|
+
),
|
|
18589
|
+
width: Math.max(connection.width ?? minTraceWidth, minTraceWidth)
|
|
18590
|
+
}));
|
|
18591
|
+
}
|
|
18592
|
+
function Group_applyDrcTolerancesToSimpleRouteJson(simpleRouteJson, drcTolerances) {
|
|
18593
|
+
if (!hasDrcTolerances(drcTolerances)) return simpleRouteJson;
|
|
18594
|
+
const minTraceWidth = drcTolerances.minTraceWidth ?? simpleRouteJson.minTraceWidth;
|
|
18595
|
+
const minViaHoleDiameter = drcTolerances.minViaHoleDiameter ?? simpleRouteJson.minViaHoleDiameter;
|
|
18596
|
+
const minViaPadDiameter = drcTolerances.minViaPadDiameter ?? simpleRouteJson.minViaPadDiameter;
|
|
18597
|
+
const minTraceToPadEdgeClearance = drcTolerances.minTraceToPadEdgeClearance ?? simpleRouteJson.minTraceToPadEdgeClearance;
|
|
18598
|
+
const minViaEdgeToPadEdgeClearance = drcTolerances.minViaEdgeToPadEdgeClearance ?? simpleRouteJson.minViaEdgeToPadEdgeClearance;
|
|
18599
|
+
const minViaHoleEdgeToViaHoleEdgeClearance = drcTolerances.minViaHoleEdgeToViaHoleEdgeClearance ?? simpleRouteJson.minViaHoleEdgeToViaHoleEdgeClearance;
|
|
18600
|
+
const minPlatedHoleDrillEdgeToDrillEdgeClearance = drcTolerances.minPlatedHoleDrillEdgeToDrillEdgeClearance ?? simpleRouteJson.minPlatedHoleDrillEdgeToDrillEdgeClearance;
|
|
18601
|
+
const minPadEdgeToPadEdgeClearance = drcTolerances.minPadEdgeToPadEdgeClearance ?? simpleRouteJson.minPadEdgeToPadEdgeClearance;
|
|
18602
|
+
const minBoardEdgeClearance = drcTolerances.minBoardEdgeClearance ?? simpleRouteJson.minBoardEdgeClearance;
|
|
18603
|
+
return {
|
|
18604
|
+
...simpleRouteJson,
|
|
18605
|
+
connections: applyMinTraceWidthToConnections(
|
|
18606
|
+
simpleRouteJson.connections,
|
|
18607
|
+
drcTolerances.minTraceWidth
|
|
18608
|
+
),
|
|
18609
|
+
minTraceWidth,
|
|
18610
|
+
minViaDiameter: minViaPadDiameter,
|
|
18611
|
+
minViaHoleDiameter,
|
|
18612
|
+
minViaPadDiameter,
|
|
18613
|
+
min_via_hole_diameter: minViaHoleDiameter,
|
|
18614
|
+
min_via_pad_diameter: minViaPadDiameter,
|
|
18615
|
+
minTraceToPadEdgeClearance,
|
|
18616
|
+
minViaEdgeToPadEdgeClearance,
|
|
18617
|
+
minViaHoleEdgeToViaHoleEdgeClearance,
|
|
18618
|
+
minPlatedHoleDrillEdgeToDrillEdgeClearance,
|
|
18619
|
+
minPadEdgeToPadEdgeClearance,
|
|
18620
|
+
minBoardEdgeClearance
|
|
18621
|
+
};
|
|
18622
|
+
}
|
|
18474
18623
|
function Group_getObstaclesFromRoutedTraces(traces) {
|
|
18475
18624
|
const obstacles = [];
|
|
18476
18625
|
for (const trace of traces) {
|
|
@@ -19327,6 +19476,10 @@ var Group6 = class extends NormalComponent3 {
|
|
|
19327
19476
|
...Group_getObstaclesFromRoutedTraces(outputTraces)
|
|
19328
19477
|
];
|
|
19329
19478
|
}
|
|
19479
|
+
simpleRouteJson = Group_applyDrcTolerancesToSimpleRouteJson(
|
|
19480
|
+
simpleRouteJson,
|
|
19481
|
+
routingPhasePlan.drcTolerances
|
|
19482
|
+
);
|
|
19330
19483
|
if (hasPhasedAutorouting && simpleRouteJson.connections.length === 0) {
|
|
19331
19484
|
continue;
|
|
19332
19485
|
}
|
|
@@ -20433,10 +20586,11 @@ function inflateSourceTrace(sourceTrace, inflatorContext) {
|
|
|
20433
20586
|
}
|
|
20434
20587
|
if (pcbPath && pcbPath.length > 0) {
|
|
20435
20588
|
traceProps2.pcbPath = pcbPath;
|
|
20436
|
-
} else if (pcbTrace) {
|
|
20589
|
+
} else if (!pcbTrace && sourceTrace.connected_source_port_ids.length === 2 && sourceTrace.connected_source_net_ids.length === 0) {
|
|
20437
20590
|
traceProps2.pcbStraightLine = true;
|
|
20438
20591
|
}
|
|
20439
20592
|
const trace = new Trace3(traceProps2);
|
|
20593
|
+
trace._inflatedPcbTrace = pcbTrace ?? void 0;
|
|
20440
20594
|
subcircuit.add(trace);
|
|
20441
20595
|
}
|
|
20442
20596
|
|
|
@@ -20647,7 +20801,7 @@ import { identity as identity5 } from "transformation-matrix";
|
|
|
20647
20801
|
var package_default = {
|
|
20648
20802
|
name: "@tscircuit/core",
|
|
20649
20803
|
type: "module",
|
|
20650
|
-
version: "0.0.
|
|
20804
|
+
version: "0.0.1233",
|
|
20651
20805
|
types: "dist/index.d.ts",
|
|
20652
20806
|
main: "dist/index.js",
|
|
20653
20807
|
module: "dist/index.js",
|
|
@@ -20693,7 +20847,7 @@ var package_default = {
|
|
|
20693
20847
|
"@tscircuit/math-utils": "^0.0.36",
|
|
20694
20848
|
"@tscircuit/miniflex": "^0.0.4",
|
|
20695
20849
|
"@tscircuit/ngspice-spice-engine": "^0.0.8",
|
|
20696
|
-
"@tscircuit/props": "^0.0.
|
|
20850
|
+
"@tscircuit/props": "^0.0.531",
|
|
20697
20851
|
"@tscircuit/schematic-match-adapt": "^0.0.16",
|
|
20698
20852
|
"@tscircuit/schematic-trace-solver": "^0.0.55",
|
|
20699
20853
|
"@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.
|
|
4
|
+
"version": "0.0.1234",
|
|
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.
|
|
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",
|