@tscircuit/checks 0.0.164 → 0.0.165
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 +7 -4
- package/dist/index.js +37 -0
- package/dist/index.js.map +1 -1
- 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 { AnyCircuitElement, PcbPortNotConnectedError, PcbTraceError, PcbPlacementError, PcbComponentOutsideBoardError, PcbViaClearanceError, PcbTraceWarning, PcbTraceMissingError, PcbFootprintOverlapError, PcbTraceTooLongWarning, PcbPadPadClearanceError, PcbPadTraceClearanceError, PcbViaTraceClearanceError, SourceComponentPinsUnderspecifiedWarning, SourceNoPowerPinDefinedWarning, SourceNoGroundPinDefinedWarning, SchematicComponentStylingWarning, PcbConnectorNotInAccessibleOrientationWarning } from 'circuit-json';
|
|
2
|
+
import { AnyCircuitElement, PcbPortNotConnectedError, PcbTraceError, PcbPlacementError, PcbComponentOutsideBoardError, PcbViaClearanceError, PcbTraceWarning, PcbTraceMissingError, PcbFootprintOverlapError, PcbComponentMissingCourtyardWarning, PcbTraceTooLongWarning, PcbPadPadClearanceError, PcbPadTraceClearanceError, PcbViaTraceClearanceError, SourceComponentPinsUnderspecifiedWarning, SourceNoPowerPinDefinedWarning, SourceNoGroundPinDefinedWarning, SchematicComponentStylingWarning, PcbConnectorNotInAccessibleOrientationWarning } from 'circuit-json';
|
|
3
3
|
import { ConnectivityMap } from 'circuit-json-to-connectivity-map';
|
|
4
4
|
|
|
5
5
|
declare function checkEachPcbPortConnectedToPcbTraces(circuitJson: AnyCircuitElement[]): PcbPortNotConnectedError[];
|
|
@@ -81,6 +81,9 @@ declare function checkPcbTracesOutOfBoard(circuitJson: AnyCircuitElement[], conf
|
|
|
81
81
|
*/
|
|
82
82
|
declare function checkPcbComponentOverlap(circuitJson: AnyCircuitElement[]): PcbFootprintOverlapError[];
|
|
83
83
|
|
|
84
|
+
/** Returns a warning for every PCB component without a courtyard. */
|
|
85
|
+
declare function checkPcbComponentsMissingCourtyard(circuitJson: AnyCircuitElement[]): PcbComponentMissingCourtyardWarning[];
|
|
86
|
+
|
|
84
87
|
declare const checkPcbTraceLengths: (circuitJson: AnyCircuitElement[]) => PcbTraceTooLongWarning[];
|
|
85
88
|
|
|
86
89
|
declare function checkPadPadClearance(circuitJson: AnyCircuitElement[], { connMap, minClearance, }?: {
|
|
@@ -160,7 +163,7 @@ declare function checkNoGroundPinDefined(circuitJson: AnyCircuitElement[]): Sour
|
|
|
160
163
|
*/
|
|
161
164
|
declare function checkSchematicComponentExcessiveVerticalPadding(circuitJson: AnyCircuitElement[]): SchematicComponentStylingWarning[];
|
|
162
165
|
|
|
163
|
-
declare function runAllPlacementChecks(circuitJson: AnyCircuitElement[]): Promise<(circuit_json.PcbPlacementError | circuit_json.PcbComponentOutsideBoardError | circuit_json.PcbFootprintOverlapError | circuit_json.PcbPadPadClearanceError | circuit_json.PcbConnectorNotInAccessibleOrientationWarning | circuit_json.PcbCourtyardOverlapError)[]>;
|
|
166
|
+
declare function runAllPlacementChecks(circuitJson: AnyCircuitElement[]): Promise<(circuit_json.PcbPlacementError | circuit_json.PcbComponentOutsideBoardError | circuit_json.PcbFootprintOverlapError | circuit_json.PcbComponentMissingCourtyardWarning | circuit_json.PcbPadPadClearanceError | circuit_json.PcbConnectorNotInAccessibleOrientationWarning | circuit_json.PcbCourtyardOverlapError)[]>;
|
|
164
167
|
declare function runAllNetlistChecks(circuitJson: AnyCircuitElement[]): Promise<{
|
|
165
168
|
type: "source_pin_must_be_connected_error";
|
|
166
169
|
source_pin_must_be_connected_error_id: string;
|
|
@@ -173,7 +176,7 @@ declare function runAllNetlistChecks(circuitJson: AnyCircuitElement[]): Promise<
|
|
|
173
176
|
declare function runAllSchematicChecks(circuitJson: AnyCircuitElement[]): Promise<circuit_json.SchematicComponentStylingWarning[]>;
|
|
174
177
|
declare function runAllPinSpecificationChecks(circuitJson: AnyCircuitElement[]): Promise<(circuit_json.SourceComponentPinsUnderspecifiedWarning | circuit_json.SourceNoPowerPinDefinedWarning | circuit_json.SourceNoGroundPinDefinedWarning)[]>;
|
|
175
178
|
declare function runAllRoutingChecks(circuitJson: AnyCircuitElement[]): Promise<(circuit_json.PcbPortNotConnectedError | circuit_json.PcbTraceError | circuit_json.PcbViaClearanceError | circuit_json.PcbTraceMissingError | circuit_json.PcbTraceTooLongWarning | circuit_json.PcbPadPadClearanceError | circuit_json.PcbPadTraceClearanceError | circuit_json.PcbViaTraceClearanceError)[]>;
|
|
176
|
-
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 | {
|
|
179
|
+
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.PcbComponentMissingCourtyardWarning | circuit_json.PcbTraceTooLongWarning | circuit_json.PcbPadPadClearanceError | circuit_json.PcbPadTraceClearanceError | circuit_json.PcbViaTraceClearanceError | {
|
|
177
180
|
type: "source_pin_must_be_connected_error";
|
|
178
181
|
source_pin_must_be_connected_error_id: string;
|
|
179
182
|
error_type: "source_pin_must_be_connected_error";
|
|
@@ -192,4 +195,4 @@ declare function checkConnectorAccessibleOrientation(circuitJson: AnyCircuitElem
|
|
|
192
195
|
*/
|
|
193
196
|
declare function checkTestPointAccessibility(circuitJson: AnyCircuitElement[]): PcbPlacementError[];
|
|
194
197
|
|
|
195
|
-
export { NetManager, checkAllPinsInComponentAreUnderspecified, checkConnectorAccessibleOrientation, checkCopperToBoardEdgeClearance, checkDifferentNetViaSpacing, checkEachPcbPortConnectedToPcbTraces, checkEachPcbTraceNonOverlapping, checkNoGroundPinDefined, checkNoPowerPinDefined, checkPadPadClearance, checkPadTraceClearance, checkPcbComponentOverCutout, checkPcbComponentOverlap, checkPcbComponentsOutOfBoard, checkPcbTraceLengths, checkPcbTracesOutOfBoard, checkPinMustBeConnected, checkSameNetViaSpacing, checkSchematicComponentExcessiveVerticalPadding, checkSourceTracesHavePcbTraces, checkSourceTracesMatchPcbTraceThickness, checkTestPointAccessibility, checkTracesAreContiguous, checkViaPadClearance, checkViaTraceClearance, checkViasInPads, checkViasOffBoard, dedupePcbDrcErrors, runAllChecks, runAllNetlistChecks, runAllPinSpecificationChecks, runAllPlacementChecks, runAllRoutingChecks, runAllSchematicChecks };
|
|
198
|
+
export { NetManager, checkAllPinsInComponentAreUnderspecified, checkConnectorAccessibleOrientation, checkCopperToBoardEdgeClearance, checkDifferentNetViaSpacing, checkEachPcbPortConnectedToPcbTraces, checkEachPcbTraceNonOverlapping, checkNoGroundPinDefined, checkNoPowerPinDefined, checkPadPadClearance, checkPadTraceClearance, checkPcbComponentOverCutout, checkPcbComponentOverlap, checkPcbComponentsMissingCourtyard, checkPcbComponentsOutOfBoard, checkPcbTraceLengths, checkPcbTracesOutOfBoard, checkPinMustBeConnected, checkSameNetViaSpacing, checkSchematicComponentExcessiveVerticalPadding, checkSourceTracesHavePcbTraces, checkSourceTracesMatchPcbTraceThickness, checkTestPointAccessibility, checkTracesAreContiguous, checkViaPadClearance, checkViaTraceClearance, checkViasInPads, checkViasOffBoard, dedupePcbDrcErrors, runAllChecks, runAllNetlistChecks, runAllPinSpecificationChecks, runAllPlacementChecks, runAllRoutingChecks, runAllSchematicChecks };
|
package/dist/index.js
CHANGED
|
@@ -3050,6 +3050,41 @@ function checkPcbComponentOverlap(circuitJson) {
|
|
|
3050
3050
|
return errors;
|
|
3051
3051
|
}
|
|
3052
3052
|
|
|
3053
|
+
// lib/check-pcb-components-missing-courtyard.ts
|
|
3054
|
+
var courtyardTypes = /* @__PURE__ */ new Set([
|
|
3055
|
+
"pcb_courtyard_circle",
|
|
3056
|
+
"pcb_courtyard_outline",
|
|
3057
|
+
"pcb_courtyard_polygon",
|
|
3058
|
+
"pcb_courtyard_pill",
|
|
3059
|
+
"pcb_courtyard_rect"
|
|
3060
|
+
]);
|
|
3061
|
+
function checkPcbComponentsMissingCourtyard(circuitJson) {
|
|
3062
|
+
const componentIdsWithCourtyards = new Set(
|
|
3063
|
+
circuitJson.filter((element) => courtyardTypes.has(element.type)).flatMap(
|
|
3064
|
+
(element) => "pcb_component_id" in element && element.pcb_component_id ? [element.pcb_component_id] : []
|
|
3065
|
+
)
|
|
3066
|
+
);
|
|
3067
|
+
return circuitJson.filter(
|
|
3068
|
+
(element) => element.type === "pcb_component"
|
|
3069
|
+
).filter(
|
|
3070
|
+
(component) => !componentIdsWithCourtyards.has(component.pcb_component_id)
|
|
3071
|
+
).map((component) => {
|
|
3072
|
+
const sourceComponent = component.source_component_id ? circuitJson.find(
|
|
3073
|
+
(element) => element.type === "source_component" && element.source_component_id === component.source_component_id
|
|
3074
|
+
) : void 0;
|
|
3075
|
+
const componentName = sourceComponent?.type === "source_component" ? sourceComponent.name : getReadableNameForComponent(circuitJson, component.pcb_component_id);
|
|
3076
|
+
return {
|
|
3077
|
+
type: "pcb_component_missing_courtyard_warning",
|
|
3078
|
+
pcb_component_missing_courtyard_warning_id: `pcb_component_missing_courtyard_warning_${component.pcb_component_id}`,
|
|
3079
|
+
warning_type: "pcb_component_missing_courtyard_warning",
|
|
3080
|
+
message: `${componentName} has no courtyard`,
|
|
3081
|
+
pcb_component_id: component.pcb_component_id,
|
|
3082
|
+
source_component_id: component.source_component_id,
|
|
3083
|
+
subcircuit_id: component.subcircuit_id
|
|
3084
|
+
};
|
|
3085
|
+
});
|
|
3086
|
+
}
|
|
3087
|
+
|
|
3053
3088
|
// lib/check-pcb-trace-lengths.ts
|
|
3054
3089
|
var DEFAULT_VIA_LENGTH_MM = 1.6;
|
|
3055
3090
|
var getRoutePointPosition = (routePoint) => routePoint.route_type === "through_pad" ? routePoint.start : { x: routePoint.x, y: routePoint.y };
|
|
@@ -3979,6 +4014,7 @@ async function runAllPlacementChecks(circuitJson) {
|
|
|
3979
4014
|
...checkPcbComponentsOutOfBoard(circuitJson),
|
|
3980
4015
|
...checkPcbComponentOverCutout(circuitJson),
|
|
3981
4016
|
...checkPcbComponentOverlap(circuitJson),
|
|
4017
|
+
...checkPcbComponentsMissingCourtyard(circuitJson),
|
|
3982
4018
|
...checkPadPadClearance(circuitJson),
|
|
3983
4019
|
...checkCourtyardOverlap(circuitJson),
|
|
3984
4020
|
...checkConnectorAccessibleOrientation(circuitJson),
|
|
@@ -4036,6 +4072,7 @@ export {
|
|
|
4036
4072
|
checkPadTraceClearance,
|
|
4037
4073
|
checkPcbComponentOverCutout,
|
|
4038
4074
|
checkPcbComponentOverlap,
|
|
4075
|
+
checkPcbComponentsMissingCourtyard,
|
|
4039
4076
|
checkPcbComponentsOutOfBoard,
|
|
4040
4077
|
checkPcbTraceLengths,
|
|
4041
4078
|
checkPcbTracesOutOfBoard,
|