@tscircuit/checks 0.0.145 → 0.0.146
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 +6 -4
- package/dist/index.js +64 -0
- package/dist/index.js.map +1 -1
- package/package.json +3 -2
package/dist/index.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import * as circuit_json from 'circuit-json';
|
|
2
|
-
import { AnyCircuitElement, PcbPortNotConnectedError, PcbTraceError, PcbPlacementError, PcbComponentOutsideBoardError, PcbViaClearanceError, PcbTraceWarning, PcbTraceMissingError, PcbFootprintOverlapError, PcbPadPadClearanceError, PcbPadTraceClearanceError, PcbViaTraceClearanceError, SourceComponentPinsUnderspecifiedWarning, SourceNoPowerPinDefinedWarning, SourceNoGroundPinDefinedWarning, PcbConnectorNotInAccessibleOrientationWarning } from 'circuit-json';
|
|
2
|
+
import { AnyCircuitElement, PcbPortNotConnectedError, PcbTraceError, PcbPlacementError, PcbComponentOutsideBoardError, PcbViaClearanceError, PcbTraceWarning, PcbTraceMissingError, PcbFootprintOverlapError, PcbTraceTooLongWarning, PcbPadPadClearanceError, PcbPadTraceClearanceError, PcbViaTraceClearanceError, SourceComponentPinsUnderspecifiedWarning, SourceNoPowerPinDefinedWarning, SourceNoGroundPinDefinedWarning, PcbConnectorNotInAccessibleOrientationWarning } from 'circuit-json';
|
|
3
3
|
import { ConnectivityMap } from 'circuit-json-to-connectivity-map';
|
|
4
4
|
|
|
5
5
|
declare function checkEachPcbPortConnectedToPcbTraces(circuitJson: AnyCircuitElement[]): PcbPortNotConnectedError[];
|
|
@@ -63,6 +63,8 @@ declare function checkPcbTracesOutOfBoard(circuitJson: AnyCircuitElement[], conf
|
|
|
63
63
|
*/
|
|
64
64
|
declare function checkPcbComponentOverlap(circuitJson: AnyCircuitElement[]): PcbFootprintOverlapError[];
|
|
65
65
|
|
|
66
|
+
declare const checkPcbTraceLengths: (circuitJson: AnyCircuitElement[]) => PcbTraceTooLongWarning[];
|
|
67
|
+
|
|
66
68
|
declare function checkPadPadClearance(circuitJson: AnyCircuitElement[], { connMap, minClearance, }?: {
|
|
67
69
|
connMap?: ConnectivityMap;
|
|
68
70
|
minClearance?: number;
|
|
@@ -137,8 +139,8 @@ declare function runAllNetlistChecks(circuitJson: AnyCircuitElement[]): Promise<
|
|
|
137
139
|
subcircuit_id?: string;
|
|
138
140
|
}[]>;
|
|
139
141
|
declare function runAllPinSpecificationChecks(circuitJson: AnyCircuitElement[]): Promise<(circuit_json.SourceComponentPinsUnderspecifiedWarning | circuit_json.SourceNoPowerPinDefinedWarning | circuit_json.SourceNoGroundPinDefinedWarning)[]>;
|
|
140
|
-
declare function runAllRoutingChecks(circuitJson: AnyCircuitElement[]): Promise<(circuit_json.PcbPortNotConnectedError | circuit_json.PcbTraceError | circuit_json.PcbViaClearanceError | circuit_json.PcbTraceMissingError | circuit_json.PcbPadTraceClearanceError | circuit_json.PcbViaTraceClearanceError)[]>;
|
|
141
|
-
declare function runAllChecks(circuitJson: AnyCircuitElement[]): Promise<(circuit_json.PcbPortNotConnectedError | circuit_json.PcbTraceError | circuit_json.PcbPlacementError | circuit_json.PcbComponentOutsideBoardError | circuit_json.PcbViaClearanceError | circuit_json.PcbTraceMissingError | circuit_json.PcbFootprintOverlapError | circuit_json.PcbPadPadClearanceError | circuit_json.PcbPadTraceClearanceError | circuit_json.PcbViaTraceClearanceError | {
|
|
142
|
+
declare function runAllRoutingChecks(circuitJson: AnyCircuitElement[]): Promise<(circuit_json.PcbPortNotConnectedError | circuit_json.PcbTraceError | circuit_json.PcbViaClearanceError | circuit_json.PcbTraceMissingError | circuit_json.PcbTraceTooLongWarning | circuit_json.PcbPadTraceClearanceError | circuit_json.PcbViaTraceClearanceError)[]>;
|
|
143
|
+
declare function runAllChecks(circuitJson: AnyCircuitElement[]): Promise<(circuit_json.PcbPortNotConnectedError | circuit_json.PcbTraceError | circuit_json.PcbPlacementError | circuit_json.PcbComponentOutsideBoardError | circuit_json.PcbViaClearanceError | circuit_json.PcbTraceMissingError | circuit_json.PcbFootprintOverlapError | circuit_json.PcbTraceTooLongWarning | circuit_json.PcbPadPadClearanceError | circuit_json.PcbPadTraceClearanceError | circuit_json.PcbViaTraceClearanceError | {
|
|
142
144
|
type: "source_pin_must_be_connected_error";
|
|
143
145
|
source_pin_must_be_connected_error_id: string;
|
|
144
146
|
error_type: "source_pin_must_be_connected_error";
|
|
@@ -150,4 +152,4 @@ declare function runAllChecks(circuitJson: AnyCircuitElement[]): Promise<(circui
|
|
|
150
152
|
|
|
151
153
|
declare function checkConnectorAccessibleOrientation(circuitJson: AnyCircuitElement[]): PcbConnectorNotInAccessibleOrientationWarning[];
|
|
152
154
|
|
|
153
|
-
export { NetManager, checkAllPinsInComponentAreUnderspecified, checkConnectorAccessibleOrientation, checkDifferentNetViaSpacing, checkEachPcbPortConnectedToPcbTraces, checkEachPcbTraceNonOverlapping, checkNoGroundPinDefined, checkNoPowerPinDefined, checkPadPadClearance, checkPadTraceClearance, checkPcbComponentOverlap, checkPcbComponentsOutOfBoard, checkPcbTracesOutOfBoard, checkPinMustBeConnected, checkSameNetViaSpacing, checkSourceTracesHavePcbTraces, checkSourceTracesMatchPcbTraceThickness, checkTracesAreContiguous, checkViaTraceClearance, checkViasOffBoard, dedupePcbDrcErrors, runAllChecks, runAllNetlistChecks, runAllPinSpecificationChecks, runAllPlacementChecks, runAllRoutingChecks };
|
|
155
|
+
export { NetManager, checkAllPinsInComponentAreUnderspecified, checkConnectorAccessibleOrientation, checkDifferentNetViaSpacing, checkEachPcbPortConnectedToPcbTraces, checkEachPcbTraceNonOverlapping, checkNoGroundPinDefined, checkNoPowerPinDefined, checkPadPadClearance, checkPadTraceClearance, checkPcbComponentOverlap, checkPcbComponentsOutOfBoard, checkPcbTraceLengths, checkPcbTracesOutOfBoard, checkPinMustBeConnected, checkSameNetViaSpacing, checkSourceTracesHavePcbTraces, checkSourceTracesMatchPcbTraceThickness, checkTracesAreContiguous, checkViaTraceClearance, checkViasOffBoard, dedupePcbDrcErrors, runAllChecks, runAllNetlistChecks, runAllPinSpecificationChecks, runAllPlacementChecks, runAllRoutingChecks };
|
package/dist/index.js
CHANGED
|
@@ -2491,6 +2491,68 @@ function checkPcbComponentOverlap(circuitJson) {
|
|
|
2491
2491
|
return errors;
|
|
2492
2492
|
}
|
|
2493
2493
|
|
|
2494
|
+
// lib/check-pcb-trace-lengths.ts
|
|
2495
|
+
var DEFAULT_VIA_LENGTH_MM = 1.6;
|
|
2496
|
+
var getRoutePointPosition = (routePoint) => routePoint.route_type === "through_pad" ? routePoint.start : { x: routePoint.x, y: routePoint.y };
|
|
2497
|
+
var getPcbTraceLength = (pcbTrace) => {
|
|
2498
|
+
if (pcbTrace.trace_length !== void 0) return pcbTrace.trace_length;
|
|
2499
|
+
let traceLength = 0;
|
|
2500
|
+
for (let routePointIndex = 0; routePointIndex < pcbTrace.route.length; routePointIndex++) {
|
|
2501
|
+
const routePoint = pcbTrace.route[routePointIndex];
|
|
2502
|
+
if (!routePoint) continue;
|
|
2503
|
+
if (routePoint.route_type === "via") {
|
|
2504
|
+
traceLength += DEFAULT_VIA_LENGTH_MM;
|
|
2505
|
+
continue;
|
|
2506
|
+
}
|
|
2507
|
+
const nextRoutePoint = pcbTrace.route[routePointIndex + 1];
|
|
2508
|
+
if (!nextRoutePoint) continue;
|
|
2509
|
+
const routePointPosition = getRoutePointPosition(routePoint);
|
|
2510
|
+
const nextRoutePointPosition = getRoutePointPosition(nextRoutePoint);
|
|
2511
|
+
traceLength += Math.hypot(
|
|
2512
|
+
nextRoutePointPosition.x - routePointPosition.x,
|
|
2513
|
+
nextRoutePointPosition.y - routePointPosition.y
|
|
2514
|
+
);
|
|
2515
|
+
}
|
|
2516
|
+
return traceLength;
|
|
2517
|
+
};
|
|
2518
|
+
var checkPcbTraceLengths = (circuitJson) => {
|
|
2519
|
+
const sourceTraces = circuitJson.filter(
|
|
2520
|
+
(element) => element.type === "source_trace"
|
|
2521
|
+
);
|
|
2522
|
+
const pcbTraces = circuitJson.filter(
|
|
2523
|
+
(element) => element.type === "pcb_trace"
|
|
2524
|
+
);
|
|
2525
|
+
const sourceTracesById = new Map(
|
|
2526
|
+
sourceTraces.map((sourceTrace) => [
|
|
2527
|
+
sourceTrace.source_trace_id,
|
|
2528
|
+
sourceTrace
|
|
2529
|
+
])
|
|
2530
|
+
);
|
|
2531
|
+
const warnings = [];
|
|
2532
|
+
for (const pcbTrace of pcbTraces) {
|
|
2533
|
+
if (!pcbTrace.source_trace_id) continue;
|
|
2534
|
+
const sourceTrace = sourceTracesById.get(pcbTrace.source_trace_id);
|
|
2535
|
+
if (!sourceTrace) continue;
|
|
2536
|
+
const maximumTraceLength = sourceTrace.max_length;
|
|
2537
|
+
if (typeof maximumTraceLength !== "number") continue;
|
|
2538
|
+
const actualTraceLength = getPcbTraceLength(pcbTrace);
|
|
2539
|
+
if (actualTraceLength <= maximumTraceLength) continue;
|
|
2540
|
+
warnings.push({
|
|
2541
|
+
type: "pcb_trace_too_long_warning",
|
|
2542
|
+
pcb_trace_too_long_warning_id: `pcb_trace_too_long_warning_${pcbTrace.pcb_trace_id}`,
|
|
2543
|
+
warning_type: "pcb_trace_too_long_warning",
|
|
2544
|
+
message: `PCB trace is ${actualTraceLength.toFixed(2)}mm long, exceeding the ${maximumTraceLength}mm maximum`,
|
|
2545
|
+
pcb_trace_id: pcbTrace.pcb_trace_id,
|
|
2546
|
+
source_trace_id: sourceTrace.source_trace_id,
|
|
2547
|
+
source_net_id: sourceTrace.connected_source_net_ids[0],
|
|
2548
|
+
actual_trace_length: actualTraceLength,
|
|
2549
|
+
maximum_trace_length: maximumTraceLength,
|
|
2550
|
+
subcircuit_id: pcbTrace.subcircuit_id ?? sourceTrace.subcircuit_id
|
|
2551
|
+
});
|
|
2552
|
+
}
|
|
2553
|
+
return warnings;
|
|
2554
|
+
};
|
|
2555
|
+
|
|
2494
2556
|
// lib/check-pad-pad-clearance.ts
|
|
2495
2557
|
import {
|
|
2496
2558
|
getPrimaryId as getPrimaryId3,
|
|
@@ -3113,6 +3175,7 @@ async function runAllRoutingChecks(circuitJson) {
|
|
|
3113
3175
|
return [
|
|
3114
3176
|
...checkEachPcbPortConnectedToPcbTraces(circuitJson),
|
|
3115
3177
|
...checkSourceTracesHavePcbTraces(circuitJson),
|
|
3178
|
+
...checkPcbTraceLengths(circuitJson),
|
|
3116
3179
|
...checkEachPcbTraceNonOverlapping(circuitJson),
|
|
3117
3180
|
...checkPadTraceClearance(circuitJson),
|
|
3118
3181
|
...checkViaTraceClearance(circuitJson),
|
|
@@ -3143,6 +3206,7 @@ export {
|
|
|
3143
3206
|
checkPadTraceClearance,
|
|
3144
3207
|
checkPcbComponentOverlap,
|
|
3145
3208
|
checkPcbComponentsOutOfBoard,
|
|
3209
|
+
checkPcbTraceLengths,
|
|
3146
3210
|
checkPcbTracesOutOfBoard,
|
|
3147
3211
|
checkPinMustBeConnected,
|
|
3148
3212
|
checkSameNetViaSpacing,
|