@tscircuit/checks 0.0.166 → 0.0.167
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 +4 -1
- package/dist/index.js +50 -0
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
package/dist/index.d.ts
CHANGED
|
@@ -86,6 +86,9 @@ declare function checkPcbComponentsMissingCourtyard(circuitJson: AnyCircuitEleme
|
|
|
86
86
|
|
|
87
87
|
declare const checkPcbTraceLengths: (circuitJson: AnyCircuitElement[]) => PcbTraceTooLongWarning[];
|
|
88
88
|
|
|
89
|
+
/** Return a routing error when a source trace exceeds its maximum via count. */
|
|
90
|
+
declare const checkPcbTraceViaCounts: (circuitJson: AnyCircuitElement[]) => PcbTraceError[];
|
|
91
|
+
|
|
89
92
|
declare function checkPadPadClearance(circuitJson: AnyCircuitElement[], { connMap, minClearance, }?: {
|
|
90
93
|
connMap?: ConnectivityMap;
|
|
91
94
|
minClearance?: number;
|
|
@@ -195,4 +198,4 @@ declare function checkConnectorAccessibleOrientation(circuitJson: AnyCircuitElem
|
|
|
195
198
|
*/
|
|
196
199
|
declare function checkTestPointAccessibility(circuitJson: AnyCircuitElement[]): PcbPlacementError[];
|
|
197
200
|
|
|
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 };
|
|
201
|
+
export { NetManager, checkAllPinsInComponentAreUnderspecified, checkConnectorAccessibleOrientation, checkCopperToBoardEdgeClearance, checkDifferentNetViaSpacing, checkEachPcbPortConnectedToPcbTraces, checkEachPcbTraceNonOverlapping, checkNoGroundPinDefined, checkNoPowerPinDefined, checkPadPadClearance, checkPadTraceClearance, checkPcbComponentOverCutout, checkPcbComponentOverlap, checkPcbComponentsMissingCourtyard, checkPcbComponentsOutOfBoard, checkPcbTraceLengths, checkPcbTraceViaCounts, checkPcbTracesOutOfBoard, checkPinMustBeConnected, checkSameNetViaSpacing, checkSchematicComponentExcessiveVerticalPadding, checkSourceTracesHavePcbTraces, checkSourceTracesMatchPcbTraceThickness, checkTestPointAccessibility, checkTracesAreContiguous, checkViaPadClearance, checkViaTraceClearance, checkViasInPads, checkViasOffBoard, dedupePcbDrcErrors, runAllChecks, runAllNetlistChecks, runAllPinSpecificationChecks, runAllPlacementChecks, runAllRoutingChecks, runAllSchematicChecks };
|
package/dist/index.js
CHANGED
|
@@ -3147,6 +3147,54 @@ var checkPcbTraceLengths = (circuitJson) => {
|
|
|
3147
3147
|
return warnings;
|
|
3148
3148
|
};
|
|
3149
3149
|
|
|
3150
|
+
// lib/check-pcb-trace-via-counts.ts
|
|
3151
|
+
var checkPcbTraceViaCounts = (circuitJson) => {
|
|
3152
|
+
const sourceTraces = circuitJson.filter(
|
|
3153
|
+
(element) => element.type === "source_trace"
|
|
3154
|
+
);
|
|
3155
|
+
const pcbTraces = circuitJson.filter(
|
|
3156
|
+
(element) => element.type === "pcb_trace"
|
|
3157
|
+
);
|
|
3158
|
+
const pcbPorts = circuitJson.filter(
|
|
3159
|
+
(element) => element.type === "pcb_port"
|
|
3160
|
+
);
|
|
3161
|
+
const errors = [];
|
|
3162
|
+
for (const sourceTrace of sourceTraces) {
|
|
3163
|
+
const maximumViaCount = sourceTrace.max_via_count;
|
|
3164
|
+
if (typeof maximumViaCount !== "number") continue;
|
|
3165
|
+
const routedPcbTraces = pcbTraces.filter(
|
|
3166
|
+
(pcbTrace) => pcbTrace.source_trace_id === sourceTrace.source_trace_id
|
|
3167
|
+
);
|
|
3168
|
+
if (routedPcbTraces.length === 0) continue;
|
|
3169
|
+
const actualViaCount = routedPcbTraces.reduce(
|
|
3170
|
+
(viaCount, pcbTrace) => viaCount + pcbTrace.route.filter((routePoint) => routePoint.route_type === "via").length,
|
|
3171
|
+
0
|
|
3172
|
+
);
|
|
3173
|
+
if (actualViaCount <= maximumViaCount) continue;
|
|
3174
|
+
const connectedPcbPorts = pcbPorts.filter(
|
|
3175
|
+
(pcbPort) => pcbPort.source_port_id !== void 0 && sourceTrace.connected_source_port_ids.includes(pcbPort.source_port_id)
|
|
3176
|
+
);
|
|
3177
|
+
errors.push({
|
|
3178
|
+
type: "pcb_trace_error",
|
|
3179
|
+
pcb_trace_error_id: `max_via_count_exceeded_${sourceTrace.source_trace_id}`,
|
|
3180
|
+
error_type: "pcb_trace_error",
|
|
3181
|
+
message: `PCB trace uses ${actualViaCount} vias, exceeding the ${maximumViaCount} maximum`,
|
|
3182
|
+
pcb_trace_id: routedPcbTraces[0].pcb_trace_id,
|
|
3183
|
+
source_trace_id: sourceTrace.source_trace_id,
|
|
3184
|
+
pcb_component_ids: [
|
|
3185
|
+
...new Set(
|
|
3186
|
+
connectedPcbPorts.map((pcbPort) => pcbPort.pcb_component_id).filter(
|
|
3187
|
+
(pcbComponentId) => pcbComponentId !== void 0
|
|
3188
|
+
)
|
|
3189
|
+
)
|
|
3190
|
+
],
|
|
3191
|
+
pcb_port_ids: connectedPcbPorts.map((pcbPort) => pcbPort.pcb_port_id),
|
|
3192
|
+
subcircuit_id: routedPcbTraces[0].subcircuit_id ?? sourceTrace.subcircuit_id
|
|
3193
|
+
});
|
|
3194
|
+
}
|
|
3195
|
+
return errors;
|
|
3196
|
+
};
|
|
3197
|
+
|
|
3150
3198
|
// lib/check-pad-pad-clearance.ts
|
|
3151
3199
|
import {
|
|
3152
3200
|
getPrimaryId as getPrimaryId3,
|
|
@@ -4039,6 +4087,7 @@ async function runAllRoutingChecks(circuitJson) {
|
|
|
4039
4087
|
...checkEachPcbPortConnectedToPcbTraces(circuitJson),
|
|
4040
4088
|
...checkSourceTracesHavePcbTraces(circuitJson),
|
|
4041
4089
|
...checkPcbTraceLengths(circuitJson),
|
|
4090
|
+
...checkPcbTraceViaCounts(circuitJson),
|
|
4042
4091
|
...checkEachPcbTraceNonOverlapping(circuitJson),
|
|
4043
4092
|
...checkPadTraceClearance(circuitJson),
|
|
4044
4093
|
...checkViaTraceClearance(circuitJson),
|
|
@@ -4075,6 +4124,7 @@ export {
|
|
|
4075
4124
|
checkPcbComponentsMissingCourtyard,
|
|
4076
4125
|
checkPcbComponentsOutOfBoard,
|
|
4077
4126
|
checkPcbTraceLengths,
|
|
4127
|
+
checkPcbTraceViaCounts,
|
|
4078
4128
|
checkPcbTracesOutOfBoard,
|
|
4079
4129
|
checkPinMustBeConnected,
|
|
4080
4130
|
checkSameNetViaSpacing,
|