easyeda-mcp-pro 0.8.0 → 0.10.0
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/catalog/schema.d.ts +3 -3
- package/dist/circuit/circuit-ir.d.ts +8 -8
- package/dist/config/profiles.js +5 -5
- package/dist/config/version.d.ts +1 -1
- package/dist/config/version.js +1 -1
- package/dist/config/version.js.map +1 -1
- package/dist/net-validation/errors.d.ts +14 -0
- package/dist/net-validation/errors.js +15 -0
- package/dist/net-validation/errors.js.map +1 -1
- package/dist/net-validation/index.d.ts +1 -1
- package/dist/net-validation/index.js.map +1 -1
- package/dist/net-validation/schema.d.ts +36 -4
- package/dist/net-validation/validation.d.ts +8 -1
- package/dist/net-validation/validation.js +359 -1
- package/dist/net-validation/validation.js.map +1 -1
- package/dist/pcb-constraints/errors.js +72 -0
- package/dist/pcb-constraints/errors.js.map +1 -1
- package/dist/pcb-constraints/types.d.ts +39 -1
- package/dist/pcb-constraints/validation.d.ts +43 -2
- package/dist/pcb-constraints/validation.js +249 -2
- package/dist/pcb-constraints/validation.js.map +1 -1
- package/dist/tools/L1_drc_erc.js +123 -0
- package/dist/tools/L1_drc_erc.js.map +1 -1
- package/dist/tools/L1_export.js +64 -1
- package/dist/tools/L1_export.js.map +1 -1
- package/dist/tools/L1_pcb_constraints.js +141 -66
- package/dist/tools/L1_pcb_constraints.js.map +1 -1
- package/easyeda-bridge-extension.eext +0 -0
- package/package.json +1 -1
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Net validation — wire-name and topology validation rules.
|
|
3
3
|
*
|
|
4
|
-
* Implements
|
|
4
|
+
* Implements 17 validation rules that operate on {@link NetValidationInput}
|
|
5
5
|
* and produce structured {@link NetValidationIssue}s.
|
|
6
6
|
*
|
|
7
7
|
* Rules:
|
|
@@ -20,6 +20,132 @@
|
|
|
20
20
|
*/
|
|
21
21
|
import { NetValidationCode, netError, netWarning } from './errors.js';
|
|
22
22
|
import { NET_DOMAIN_PATTERNS, NET_TYPE_EXPECTED_DOMAIN, REQUIRED_GROUND_NETS, REQUIRED_POWER_NETS, RESERVED_NET_NAMES, NetDomain, } from './schema.js';
|
|
23
|
+
function normalizeKey(value) {
|
|
24
|
+
return value.trim().toUpperCase();
|
|
25
|
+
}
|
|
26
|
+
function buildDeviceLookup(input) {
|
|
27
|
+
const devices = new Map();
|
|
28
|
+
for (const device of input.devices ?? []) {
|
|
29
|
+
devices.set(normalizeKey(device.id), device);
|
|
30
|
+
devices.set(normalizeKey(device.ref), device);
|
|
31
|
+
}
|
|
32
|
+
return devices;
|
|
33
|
+
}
|
|
34
|
+
function resolvePinMetadata(device, node) {
|
|
35
|
+
if (!device?.pins)
|
|
36
|
+
return undefined;
|
|
37
|
+
const pinKey = normalizeKey(node.pin);
|
|
38
|
+
return device.pins.find((pin) => normalizeKey(pin.pin) === pinKey || normalizeKey(pin.name ?? '') === pinKey);
|
|
39
|
+
}
|
|
40
|
+
function resolveSemanticNodes(input, net) {
|
|
41
|
+
const devices = buildDeviceLookup(input);
|
|
42
|
+
return net.nodes.map((node) => {
|
|
43
|
+
const device = devices.get(normalizeKey(node.deviceRef));
|
|
44
|
+
const pinMetadata = resolvePinMetadata(device, node);
|
|
45
|
+
return {
|
|
46
|
+
...node,
|
|
47
|
+
device,
|
|
48
|
+
pinMetadata,
|
|
49
|
+
electricalType: pinMetadata?.electricalType ?? node.electricalType,
|
|
50
|
+
expectedVoltage: pinMetadata?.expectedVoltage ?? node.expectedVoltage,
|
|
51
|
+
pinName: pinMetadata?.name ?? node.pinName,
|
|
52
|
+
displayRef: device?.ref ?? node.deviceRef,
|
|
53
|
+
};
|
|
54
|
+
});
|
|
55
|
+
}
|
|
56
|
+
function hasSemanticMetadata(input) {
|
|
57
|
+
return (input.nets.some((net) => net.voltage !== undefined ||
|
|
58
|
+
net.nodes.some((node) => node.electricalType !== undefined || node.expectedVoltage !== undefined)) ||
|
|
59
|
+
(input.devices ?? []).some((device) => Boolean(device.pins?.length || device.requiresDecoupling)));
|
|
60
|
+
}
|
|
61
|
+
function isActiveDriver(type) {
|
|
62
|
+
return (type === 'output' ||
|
|
63
|
+
type === 'bidirectional' ||
|
|
64
|
+
type === 'power_output' ||
|
|
65
|
+
type === 'power_source');
|
|
66
|
+
}
|
|
67
|
+
function isPowerSource(type) {
|
|
68
|
+
return type === 'power_source' || type === 'power_output';
|
|
69
|
+
}
|
|
70
|
+
function isPassiveLike(type) {
|
|
71
|
+
return type === 'passive';
|
|
72
|
+
}
|
|
73
|
+
function isNoConnect(type) {
|
|
74
|
+
return type === 'no_connect';
|
|
75
|
+
}
|
|
76
|
+
function inferVoltageFromNetName(name) {
|
|
77
|
+
const upper = name.toUpperCase();
|
|
78
|
+
const match = upper.match(/(^|[^0-9])([0-9]+)V([0-9]*)/);
|
|
79
|
+
if (match) {
|
|
80
|
+
const whole = Number(match[2]);
|
|
81
|
+
const fractional = match[3] ? Number(`0.${match[3]}`) : 0;
|
|
82
|
+
return whole + fractional;
|
|
83
|
+
}
|
|
84
|
+
if (/^VCC$|^VDD$/.test(upper))
|
|
85
|
+
return undefined;
|
|
86
|
+
if (/^GND$|GND\b|^VSS$/.test(upper))
|
|
87
|
+
return 0;
|
|
88
|
+
return undefined;
|
|
89
|
+
}
|
|
90
|
+
function netVoltage(net) {
|
|
91
|
+
return net.voltage ?? inferVoltageFromNetName(net.name);
|
|
92
|
+
}
|
|
93
|
+
function deviceHasOtherPinOnNetType(input, deviceRef, excludedPin, expectedType) {
|
|
94
|
+
const wantedRef = normalizeKey(deviceRef);
|
|
95
|
+
const excluded = normalizeKey(excludedPin);
|
|
96
|
+
return input.nets.some((net) => net.type === expectedType &&
|
|
97
|
+
net.nodes.some((node) => normalizeKey(node.deviceRef) === wantedRef && normalizeKey(node.pin) !== excluded));
|
|
98
|
+
}
|
|
99
|
+
function passivePullExists(input, net) {
|
|
100
|
+
const semanticNodes = resolveSemanticNodes(input, net);
|
|
101
|
+
return semanticNodes.some((node) => {
|
|
102
|
+
if (!isPassiveLike(node.electricalType))
|
|
103
|
+
return false;
|
|
104
|
+
return (deviceHasOtherPinOnNetType(input, node.deviceRef, node.pin, 'power') ||
|
|
105
|
+
deviceHasOtherPinOnNetType(input, node.deviceRef, node.pin, 'ground'));
|
|
106
|
+
});
|
|
107
|
+
}
|
|
108
|
+
function connectedNetsByDevicePin(input) {
|
|
109
|
+
const map = new Map();
|
|
110
|
+
for (const net of input.nets) {
|
|
111
|
+
for (const node of net.nodes) {
|
|
112
|
+
const key = `${normalizeKey(node.deviceRef)}:${normalizeKey(node.pin)}`;
|
|
113
|
+
const existing = map.get(key) ?? [];
|
|
114
|
+
existing.push(net);
|
|
115
|
+
map.set(key, existing);
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
return map;
|
|
119
|
+
}
|
|
120
|
+
function connectedNetsForPin(pinToNets, device, pin) {
|
|
121
|
+
const matches = [
|
|
122
|
+
...(pinToNets.get(`${normalizeKey(device.id)}:${normalizeKey(pin)}`) ?? []),
|
|
123
|
+
...(pinToNets.get(`${normalizeKey(device.ref)}:${normalizeKey(pin)}`) ?? []),
|
|
124
|
+
];
|
|
125
|
+
return [...new Map(matches.map((net) => [net.id, net])).values()];
|
|
126
|
+
}
|
|
127
|
+
function capacitorRefs(input) {
|
|
128
|
+
const refs = new Set();
|
|
129
|
+
for (const device of input.devices ?? []) {
|
|
130
|
+
const category = (device.category ?? '').toLowerCase();
|
|
131
|
+
if (category === 'capacitor' ||
|
|
132
|
+
category === 'decoupling' ||
|
|
133
|
+
/^C[0-9A-Z_-]*/i.test(device.ref)) {
|
|
134
|
+
refs.add(normalizeKey(device.id));
|
|
135
|
+
refs.add(normalizeKey(device.ref));
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
return refs;
|
|
139
|
+
}
|
|
140
|
+
function hasDecouplingCapacitor(input, powerNet, groundNets) {
|
|
141
|
+
const capacitors = capacitorRefs(input);
|
|
142
|
+
if (capacitors.size === 0)
|
|
143
|
+
return false;
|
|
144
|
+
const powerRefs = new Set(powerNet.nodes.map((node) => normalizeKey(node.deviceRef)).filter((ref) => capacitors.has(ref)));
|
|
145
|
+
if (powerRefs.size === 0)
|
|
146
|
+
return false;
|
|
147
|
+
return groundNets.some((groundNet) => groundNet.nodes.some((node) => powerRefs.has(normalizeKey(node.deviceRef))));
|
|
148
|
+
}
|
|
23
149
|
// ── Rule: floating nets ────────────────────────────────────────────────────
|
|
24
150
|
function checkFloatingNets(input) {
|
|
25
151
|
const issues = [];
|
|
@@ -303,6 +429,224 @@ function checkProtectedDomain(input) {
|
|
|
303
429
|
}
|
|
304
430
|
return issues;
|
|
305
431
|
}
|
|
432
|
+
// ── Semantic ERC: output contention ────────────────────────────────────────
|
|
433
|
+
function checkOutputContention(input) {
|
|
434
|
+
if (!hasSemanticMetadata(input))
|
|
435
|
+
return [];
|
|
436
|
+
const issues = [];
|
|
437
|
+
for (const net of input.nets) {
|
|
438
|
+
const semanticNodes = resolveSemanticNodes(input, net).filter((node) => !isNoConnect(node.electricalType));
|
|
439
|
+
const activeDrivers = semanticNodes.filter((node) => isActiveDriver(node.electricalType));
|
|
440
|
+
if (net.type === 'signal' && activeDrivers.length > 1) {
|
|
441
|
+
issues.push(netError(NetValidationCode.NetOutputContention, `Signal net "${net.name}" has ${activeDrivers.length} active drivers: ${activeDrivers.map((node) => `${node.displayRef}:${node.pinName ?? node.pin}`).join(', ')}`, {
|
|
442
|
+
netName: net.name,
|
|
443
|
+
componentRef: activeDrivers[0]?.displayRef,
|
|
444
|
+
pin: activeDrivers[0]?.pin,
|
|
445
|
+
remediationHint: 'Do not tie push-pull outputs together. Add arbitration, tri-state control, open-drain wiring with pull-up, or separate the nets.',
|
|
446
|
+
details: {
|
|
447
|
+
drivers: activeDrivers.map((node) => ({
|
|
448
|
+
componentRef: node.displayRef,
|
|
449
|
+
pin: node.pin,
|
|
450
|
+
pinName: node.pinName,
|
|
451
|
+
electricalType: node.electricalType,
|
|
452
|
+
})),
|
|
453
|
+
},
|
|
454
|
+
}));
|
|
455
|
+
}
|
|
456
|
+
}
|
|
457
|
+
return issues;
|
|
458
|
+
}
|
|
459
|
+
// ── Semantic ERC: floating inputs ──────────────────────────────────────────
|
|
460
|
+
function checkFloatingInputs(input) {
|
|
461
|
+
if (!hasSemanticMetadata(input))
|
|
462
|
+
return [];
|
|
463
|
+
const issues = [];
|
|
464
|
+
for (const net of input.nets) {
|
|
465
|
+
if (net.type !== 'signal' || net.nodes.length === 0)
|
|
466
|
+
continue;
|
|
467
|
+
const semanticNodes = resolveSemanticNodes(input, net).filter((node) => !isNoConnect(node.electricalType));
|
|
468
|
+
const inputNodes = semanticNodes.filter((node) => node.electricalType === 'input');
|
|
469
|
+
if (inputNodes.length === 0)
|
|
470
|
+
continue;
|
|
471
|
+
const hasDriver = semanticNodes.some((node) => isActiveDriver(node.electricalType));
|
|
472
|
+
const hasPull = passivePullExists(input, net);
|
|
473
|
+
const hasOpenDrainBus = semanticNodes.some((node) => node.electricalType === 'open_drain') && hasPull;
|
|
474
|
+
if (!hasDriver && !hasPull && !hasOpenDrainBus) {
|
|
475
|
+
issues.push(netWarning(NetValidationCode.NetFloatingInput, `Signal net "${net.name}" connects input pins but has no active driver or pull resistor`, {
|
|
476
|
+
netName: net.name,
|
|
477
|
+
componentRef: inputNodes[0]?.displayRef,
|
|
478
|
+
pin: inputNodes[0]?.pin,
|
|
479
|
+
remediationHint: 'Connect this input to a valid driver, add a pull-up/pull-down resistor, or explicitly mark it as no-connect if allowed.',
|
|
480
|
+
details: {
|
|
481
|
+
inputs: inputNodes.map((node) => ({
|
|
482
|
+
componentRef: node.displayRef,
|
|
483
|
+
pin: node.pin,
|
|
484
|
+
pinName: node.pinName,
|
|
485
|
+
})),
|
|
486
|
+
},
|
|
487
|
+
}));
|
|
488
|
+
}
|
|
489
|
+
}
|
|
490
|
+
return issues;
|
|
491
|
+
}
|
|
492
|
+
// ── Semantic ERC: power rail conflicts ─────────────────────────────────────
|
|
493
|
+
function checkPowerConflicts(input) {
|
|
494
|
+
if (!hasSemanticMetadata(input))
|
|
495
|
+
return [];
|
|
496
|
+
const issues = [];
|
|
497
|
+
for (const net of input.nets) {
|
|
498
|
+
if (net.type !== 'power')
|
|
499
|
+
continue;
|
|
500
|
+
const powerSources = resolveSemanticNodes(input, net).filter((node) => isPowerSource(node.electricalType));
|
|
501
|
+
if (powerSources.length > 1) {
|
|
502
|
+
issues.push(netError(NetValidationCode.NetPowerConflict, `Power net "${net.name}" has ${powerSources.length} power sources tied together: ${powerSources.map((node) => `${node.displayRef}:${node.pinName ?? node.pin}`).join(', ')}`, {
|
|
503
|
+
netName: net.name,
|
|
504
|
+
componentRef: powerSources[0]?.displayRef,
|
|
505
|
+
pin: powerSources[0]?.pin,
|
|
506
|
+
remediationHint: 'Verify that only one regulator/source drives this rail, or add ideal-diode/load-share circuitry before tying sources together.',
|
|
507
|
+
details: {
|
|
508
|
+
powerSources: powerSources.map((node) => ({
|
|
509
|
+
componentRef: node.displayRef,
|
|
510
|
+
pin: node.pin,
|
|
511
|
+
pinName: node.pinName,
|
|
512
|
+
electricalType: node.electricalType,
|
|
513
|
+
})),
|
|
514
|
+
},
|
|
515
|
+
}));
|
|
516
|
+
}
|
|
517
|
+
}
|
|
518
|
+
return issues;
|
|
519
|
+
}
|
|
520
|
+
// ── Semantic ERC: passive-only signal nets ─────────────────────────────────
|
|
521
|
+
function checkPassiveOnlySignalNets(input) {
|
|
522
|
+
if (!hasSemanticMetadata(input))
|
|
523
|
+
return [];
|
|
524
|
+
const issues = [];
|
|
525
|
+
for (const net of input.nets) {
|
|
526
|
+
if (net.type !== 'signal' || net.nodes.length < 2)
|
|
527
|
+
continue;
|
|
528
|
+
const semanticNodes = resolveSemanticNodes(input, net).filter((node) => node.electricalType !== undefined);
|
|
529
|
+
if (semanticNodes.length === 0)
|
|
530
|
+
continue;
|
|
531
|
+
if (semanticNodes.every((node) => isPassiveLike(node.electricalType))) {
|
|
532
|
+
issues.push(netWarning(NetValidationCode.NetPassiveOnly, `Signal net "${net.name}" only connects passive pins and has no active source or input`, {
|
|
533
|
+
netName: net.name,
|
|
534
|
+
remediationHint: 'Confirm this is an intentional passive network node; otherwise connect it to an input/output pin or power/ground as appropriate.',
|
|
535
|
+
details: {
|
|
536
|
+
passiveNodes: semanticNodes.map((node) => ({
|
|
537
|
+
componentRef: node.displayRef,
|
|
538
|
+
pin: node.pin,
|
|
539
|
+
})),
|
|
540
|
+
},
|
|
541
|
+
}));
|
|
542
|
+
}
|
|
543
|
+
}
|
|
544
|
+
return issues;
|
|
545
|
+
}
|
|
546
|
+
// ── Semantic ERC: required device power/ground pins ────────────────────────
|
|
547
|
+
function checkRequiredPowerPins(input) {
|
|
548
|
+
if (!hasSemanticMetadata(input))
|
|
549
|
+
return [];
|
|
550
|
+
const issues = [];
|
|
551
|
+
const pinToNets = connectedNetsByDevicePin(input);
|
|
552
|
+
for (const device of input.devices ?? []) {
|
|
553
|
+
for (const pin of device.pins ?? []) {
|
|
554
|
+
if (!pin.required || pin.noConnectAllowed)
|
|
555
|
+
continue;
|
|
556
|
+
const connectedNets = connectedNetsForPin(pinToNets, device, pin.pin);
|
|
557
|
+
if (connectedNets.length === 0) {
|
|
558
|
+
issues.push(netError(NetValidationCode.NetUnpoweredDevice, `Required pin ${device.ref}:${pin.name ?? pin.pin} is not connected`, {
|
|
559
|
+
componentRef: device.ref,
|
|
560
|
+
pin: pin.pin,
|
|
561
|
+
remediationHint: pin.expectedNetType === 'power'
|
|
562
|
+
? 'Connect this required supply pin to the correct power rail.'
|
|
563
|
+
: pin.expectedNetType === 'ground'
|
|
564
|
+
? 'Connect this required ground/reference pin to the correct ground net.'
|
|
565
|
+
: 'Connect this required pin to the intended net or mark it noConnectAllowed when intentional.',
|
|
566
|
+
details: { expectedNetType: pin.expectedNetType, electricalType: pin.electricalType },
|
|
567
|
+
}));
|
|
568
|
+
continue;
|
|
569
|
+
}
|
|
570
|
+
if (pin.expectedNetType) {
|
|
571
|
+
for (const net of connectedNets) {
|
|
572
|
+
if (net.type !== pin.expectedNetType) {
|
|
573
|
+
issues.push(netError(NetValidationCode.NetUnpoweredDevice, `Pin ${device.ref}:${pin.name ?? pin.pin} expects a ${pin.expectedNetType} net but is connected to ${net.type} net "${net.name}"`, {
|
|
574
|
+
netName: net.name,
|
|
575
|
+
componentRef: device.ref,
|
|
576
|
+
pin: pin.pin,
|
|
577
|
+
remediationHint: `Move ${device.ref}:${pin.name ?? pin.pin} to a ${pin.expectedNetType} net or correct the pin metadata if the symbol is wrong.`,
|
|
578
|
+
details: {
|
|
579
|
+
expectedNetType: pin.expectedNetType,
|
|
580
|
+
actualNetType: net.type,
|
|
581
|
+
electricalType: pin.electricalType,
|
|
582
|
+
},
|
|
583
|
+
}));
|
|
584
|
+
}
|
|
585
|
+
}
|
|
586
|
+
}
|
|
587
|
+
}
|
|
588
|
+
}
|
|
589
|
+
return issues;
|
|
590
|
+
}
|
|
591
|
+
// ── Semantic ERC: decoupling ───────────────────────────────────────────────
|
|
592
|
+
function checkMissingDecoupling(input) {
|
|
593
|
+
if (!hasSemanticMetadata(input))
|
|
594
|
+
return [];
|
|
595
|
+
const issues = [];
|
|
596
|
+
const pinToNets = connectedNetsByDevicePin(input);
|
|
597
|
+
const groundNets = input.nets.filter((net) => net.type === 'ground');
|
|
598
|
+
for (const device of input.devices ?? []) {
|
|
599
|
+
if (!device.requiresDecoupling)
|
|
600
|
+
continue;
|
|
601
|
+
const powerPins = (device.pins ?? []).filter((pin) => pin.expectedNetType === 'power' ||
|
|
602
|
+
(pin.electricalType === 'power_input' && pin.expectedNetType !== 'ground'));
|
|
603
|
+
for (const pin of powerPins) {
|
|
604
|
+
const connectedPowerNets = connectedNetsForPin(pinToNets, device, pin.pin).filter((net) => net.type === 'power');
|
|
605
|
+
for (const powerNet of connectedPowerNets) {
|
|
606
|
+
if (!hasDecouplingCapacitor(input, powerNet, groundNets)) {
|
|
607
|
+
issues.push(netWarning(NetValidationCode.NetMissingDecoupling, `Device ${device.ref} power pin ${pin.name ?? pin.pin} on net "${powerNet.name}" has no detected local decoupling capacitor`, {
|
|
608
|
+
netName: powerNet.name,
|
|
609
|
+
componentRef: device.ref,
|
|
610
|
+
pin: pin.pin,
|
|
611
|
+
remediationHint: 'Add a local decoupling capacitor from this rail to ground near the IC/regulator supply pin, or mark the device as not requiring decoupling if intentional.',
|
|
612
|
+
details: { powerNet: powerNet.name, groundNets: groundNets.map((net) => net.name) },
|
|
613
|
+
}));
|
|
614
|
+
}
|
|
615
|
+
}
|
|
616
|
+
}
|
|
617
|
+
}
|
|
618
|
+
return issues;
|
|
619
|
+
}
|
|
620
|
+
// ── Semantic ERC: voltage mismatch ─────────────────────────────────────────
|
|
621
|
+
function checkVoltageMismatches(input) {
|
|
622
|
+
if (!hasSemanticMetadata(input))
|
|
623
|
+
return [];
|
|
624
|
+
const issues = [];
|
|
625
|
+
for (const net of input.nets) {
|
|
626
|
+
const voltage = netVoltage(net);
|
|
627
|
+
if (voltage === undefined)
|
|
628
|
+
continue;
|
|
629
|
+
for (const node of resolveSemanticNodes(input, net)) {
|
|
630
|
+
const expectedVoltage = node.expectedVoltage;
|
|
631
|
+
if (expectedVoltage === undefined)
|
|
632
|
+
continue;
|
|
633
|
+
if (Math.abs(expectedVoltage - voltage) > 0.15) {
|
|
634
|
+
issues.push(netError(NetValidationCode.NetVoltageMismatch, `Pin ${node.displayRef}:${node.pinName ?? node.pin} expects ${expectedVoltage}V but net "${net.name}" is ${voltage}V`, {
|
|
635
|
+
netName: net.name,
|
|
636
|
+
componentRef: node.displayRef,
|
|
637
|
+
pin: node.pin,
|
|
638
|
+
remediationHint: 'Connect this pin to the correct voltage domain or insert level shifting/regulation if the voltage mismatch is intentional.',
|
|
639
|
+
details: {
|
|
640
|
+
expectedVoltage,
|
|
641
|
+
actualVoltage: voltage,
|
|
642
|
+
electricalType: node.electricalType,
|
|
643
|
+
},
|
|
644
|
+
}));
|
|
645
|
+
}
|
|
646
|
+
}
|
|
647
|
+
}
|
|
648
|
+
return issues;
|
|
649
|
+
}
|
|
306
650
|
const RULES = [
|
|
307
651
|
checkFloatingNets,
|
|
308
652
|
checkDuplicateNetNames,
|
|
@@ -314,6 +658,13 @@ const RULES = [
|
|
|
314
658
|
checkCrossSheetConsistency,
|
|
315
659
|
checkNamingConventions,
|
|
316
660
|
checkProtectedDomain,
|
|
661
|
+
checkOutputContention,
|
|
662
|
+
checkFloatingInputs,
|
|
663
|
+
checkPowerConflicts,
|
|
664
|
+
checkPassiveOnlySignalNets,
|
|
665
|
+
checkRequiredPowerPins,
|
|
666
|
+
checkMissingDecoupling,
|
|
667
|
+
checkVoltageMismatches,
|
|
317
668
|
];
|
|
318
669
|
// ── Main entry point ───────────────────────────────────────────────────────
|
|
319
670
|
/**
|
|
@@ -330,6 +681,13 @@ const RULES = [
|
|
|
330
681
|
* 8. Cross-sheet consistency — error if same-name interfaces have different pinouts
|
|
331
682
|
* 9. Naming convention — warning if power/ground nets have non-standard names
|
|
332
683
|
* 10. Protected domain — error if high-voltage net lacks protective naming
|
|
684
|
+
* 11. Output contention — error if multiple active outputs drive one signal
|
|
685
|
+
* 12. Floating input — warning if input net has no driver or pull
|
|
686
|
+
* 13. Power conflict — error if multiple sources drive one rail
|
|
687
|
+
* 14. Passive-only signal — warning if a signal net has only passive nodes
|
|
688
|
+
* 15. Required power pins — error if required pins are missing/miswired
|
|
689
|
+
* 16. Decoupling expectation — warning if required local decoupling is absent
|
|
690
|
+
* 17. Voltage mismatch — error if expected pin voltage conflicts with net voltage
|
|
333
691
|
*/
|
|
334
692
|
export function validateNets(input) {
|
|
335
693
|
const errors = [];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validation.js","sourceRoot":"","sources":["../../src/net-validation/validation.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"validation.js","sourceRoot":"","sources":["../../src/net-validation/validation.ts"],"names":[],"mappings":"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"}
|
|
@@ -102,6 +102,78 @@ export const PcbConstraintCodeMap = {
|
|
|
102
102
|
severity: 'error',
|
|
103
103
|
remediationHint: 'Define explicit creepage and clearance distances for high-voltage nets. Minimum 4mm clearance for 250V AC is recommended.',
|
|
104
104
|
},
|
|
105
|
+
DRILL_FILE_MISSING: {
|
|
106
|
+
code: 'PCB_DRILL_FILE_MISSING',
|
|
107
|
+
message: 'NC drill file is missing from the manufacturing package',
|
|
108
|
+
severity: 'error',
|
|
109
|
+
remediationHint: 'Re-export the manufacturing package with Excellon/NC drill files included',
|
|
110
|
+
},
|
|
111
|
+
COPPER_EDGE_CLEARANCE: {
|
|
112
|
+
code: 'PCB_COPPER_EDGE_CLEARANCE',
|
|
113
|
+
message: 'Copper is too close to the board edge',
|
|
114
|
+
severity: 'error',
|
|
115
|
+
remediationHint: 'Move copper, zones, vias, and pads away from the routed board edge or increase the copper-to-edge clearance rule',
|
|
116
|
+
},
|
|
117
|
+
DRILL_TOO_SMALL: {
|
|
118
|
+
code: 'PCB_DRILL_TOO_SMALL',
|
|
119
|
+
message: 'Minimum drill diameter is below common fabrication capability',
|
|
120
|
+
severity: 'warning',
|
|
121
|
+
remediationHint: 'Increase finished drill diameter or confirm the selected fabricator supports the requested drill size',
|
|
122
|
+
},
|
|
123
|
+
ANNULAR_RING_TOO_SMALL: {
|
|
124
|
+
code: 'PCB_ANNULAR_RING_TOO_SMALL',
|
|
125
|
+
message: 'Annular ring is below recommended manufacturing minimum',
|
|
126
|
+
severity: 'warning',
|
|
127
|
+
remediationHint: 'Increase pad/via diameter or reduce drill size to maintain enough annular ring for registration tolerance',
|
|
128
|
+
},
|
|
129
|
+
SOLDERMASK_SLIVER: {
|
|
130
|
+
code: 'PCB_SOLDERMASK_SLIVER',
|
|
131
|
+
message: 'Soldermask sliver is below recommended minimum',
|
|
132
|
+
severity: 'warning',
|
|
133
|
+
remediationHint: 'Increase pad spacing, adjust soldermask expansion, or remove soldermask dams intentionally where supported',
|
|
134
|
+
},
|
|
135
|
+
SILKSCREEN_OVER_PAD: {
|
|
136
|
+
code: 'PCB_SILKSCREEN_OVER_PAD',
|
|
137
|
+
message: 'Silkscreen overlaps exposed copper pads',
|
|
138
|
+
severity: 'warning',
|
|
139
|
+
remediationHint: 'Move or clip silkscreen references/graphics so they do not print over solderable pads',
|
|
140
|
+
},
|
|
141
|
+
TOOLING_HOLE_MISSING: {
|
|
142
|
+
code: 'PCB_TOOLING_HOLE_MISSING',
|
|
143
|
+
message: 'Tooling holes are missing for assembly/panel fixture alignment',
|
|
144
|
+
severity: 'warning',
|
|
145
|
+
remediationHint: 'Add tooling holes or confirm the assembler will provide panel-level tooling holes during panelization',
|
|
146
|
+
},
|
|
147
|
+
POLARITY_MARK_MISSING: {
|
|
148
|
+
code: 'PCB_POLARITY_MARK_MISSING',
|
|
149
|
+
message: 'Polarity or orientation marks are missing for polarized components',
|
|
150
|
+
severity: 'warning',
|
|
151
|
+
remediationHint: 'Add clear silkscreen/courtyard polarity markers for diodes, LEDs, electrolytic capacitors, IC pin 1, and connectors',
|
|
152
|
+
},
|
|
153
|
+
COMPONENT_SPACING_VIOLATION: {
|
|
154
|
+
code: 'PCB_COMPONENT_SPACING_VIOLATION',
|
|
155
|
+
message: 'Component spacing/courtyard violations detected',
|
|
156
|
+
severity: 'warning',
|
|
157
|
+
remediationHint: 'Increase component-to-component spacing or review courtyard overlap for assembly nozzle, hand-solder, and rework access',
|
|
158
|
+
},
|
|
159
|
+
TESTPOINT_COVERAGE_LOW: {
|
|
160
|
+
code: 'PCB_TESTPOINT_COVERAGE_LOW',
|
|
161
|
+
message: 'Critical nets are missing test points',
|
|
162
|
+
severity: 'warning',
|
|
163
|
+
remediationHint: 'Add accessible test pads for power rails, ground, reset, boot, programming, clocks, and key interfaces',
|
|
164
|
+
},
|
|
165
|
+
PROGRAMMING_HEADER_MISSING: {
|
|
166
|
+
code: 'PCB_PROGRAMMING_HEADER_MISSING',
|
|
167
|
+
message: 'Programming/debug header is required but missing',
|
|
168
|
+
severity: 'error',
|
|
169
|
+
remediationHint: 'Add a programming/debug connector or documented test pads for SWD/JTAG/UART/BOOT/RESET access',
|
|
170
|
+
},
|
|
171
|
+
FAB_NOTES_MISSING: {
|
|
172
|
+
code: 'PCB_FAB_NOTES_MISSING',
|
|
173
|
+
message: 'Fabrication notes are missing from the handoff package',
|
|
174
|
+
severity: 'warning',
|
|
175
|
+
remediationHint: 'Add fabrication notes covering board thickness, copper weight, finish, soldermask color, impedance requirements, panelization, and special instructions',
|
|
176
|
+
},
|
|
105
177
|
};
|
|
106
178
|
// ── Factory helpers ────────────────────────────────────────────────────────
|
|
107
179
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/pcb-constraints/errors.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAaH,+EAA+E;AAE/E;;;GAGG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAA2C;IAC1E,qBAAqB,EAAE;QACrB,IAAI,EAAE,qBAAqB;QAC3B,OAAO,EAAE,8BAA8B;QACvC,QAAQ,EAAE,OAAO;QACjB,eAAe,EACb,6FAA6F;KAChG;IACD,iBAAiB,EAAE;QACjB,IAAI,EAAE,uBAAuB;QAC7B,OAAO,EAAE,wDAAwD;QACjE,QAAQ,EAAE,SAAS;QACnB,eAAe,EACb,6FAA6F;KAChG;IACD,oBAAoB,EAAE;QACpB,IAAI,EAAE,0BAA0B;QAChC,OAAO,EAAE,+CAA+C;QACxD,QAAQ,EAAE,OAAO;QACjB,eAAe,EACb,0FAA0F;KAC7F;IACD,cAAc,EAAE;QACd,IAAI,EAAE,qBAAqB;QAC3B,OAAO,EAAE,uCAAuC;QAChD,QAAQ,EAAE,SAAS;QACnB,eAAe,EACb,+GAA+G;KAClH;IACD,iBAAiB,EAAE;QACjB,IAAI,EAAE,4BAA4B;QAClC,OAAO,EAAE,wCAAwC;QACjD,QAAQ,EAAE,SAAS;QACnB,eAAe,EACb,4FAA4F;KAC/F;IACD,cAAc,EAAE;QACd,IAAI,EAAE,yBAAyB;QAC/B,OAAO,EAAE,+CAA+C;QACxD,QAAQ,EAAE,SAAS;QACnB,eAAe,EACb,sGAAsG;KACzG;IACD,iBAAiB,EAAE;QACjB,IAAI,EAAE,uBAAuB;QAC7B,OAAO,EAAE,6DAA6D;QACtE,QAAQ,EAAE,SAAS;QACnB,eAAe,EACb,sGAAsG;KACzG;IACD,kBAAkB,EAAE;QAClB,IAAI,EAAE,uBAAuB;QAC7B,OAAO,EAAE,gDAAgD;QACzD,QAAQ,EAAE,SAAS;QACnB,eAAe,EAAE,sDAAsD;KACxE;IACD,iBAAiB,EAAE;QACjB,IAAI,EAAE,uBAAuB;QAC7B,OAAO,EAAE,6DAA6D;QACtE,QAAQ,EAAE,SAAS;QACnB,eAAe,EACb,2FAA2F;KAC9F;IACD,gBAAgB,EAAE;QAChB,IAAI,EAAE,uBAAuB;QAC7B,OAAO,EAAE,wCAAwC;QACjD,QAAQ,EAAE,SAAS;QACnB,eAAe,EACb,2FAA2F;KAC9F;IACD,kBAAkB,EAAE;QAClB,IAAI,EAAE,6BAA6B;QACnC,OAAO,EAAE,mDAAmD;QAC5D,QAAQ,EAAE,SAAS;QACnB,eAAe,EACb,iHAAiH;KACpH;IACD,6BAA6B,EAAE;QAC7B,IAAI,EAAE,uCAAuC;QAC7C,OAAO,EAAE,+DAA+D;QACxE,QAAQ,EAAE,SAAS;QACnB,eAAe,EACb,iHAAiH;KACpH;IACD,YAAY,EAAE;QACZ,IAAI,EAAE,uBAAuB;QAC7B,OAAO,EAAE,4CAA4C;QACrD,QAAQ,EAAE,SAAS;QACnB,eAAe,EACb,iGAAiG;KACpG;IACD,YAAY,EAAE;QACZ,IAAI,EAAE,yBAAyB;QAC/B,OAAO,EAAE,wCAAwC;QACjD,QAAQ,EAAE,SAAS;QACnB,eAAe,EACb,oFAAoF;KACvF;IACD,sBAAsB,EAAE;QACtB,IAAI,EAAE,4BAA4B;QAClC,OAAO,EAAE,6DAA6D;QACtE,QAAQ,EAAE,OAAO;QACjB,eAAe,EACb,2HAA2H;KAC9H;CACO,CAAC;AAEX,8EAA8E;AAE9E;;GAEG;AACH,MAAM,UAAU,kBAAkB,CAChC,IAAuB,EACvB,OAAe,EACf,IAOC;IAED,OAAO;QACL,IAAI;QACJ,OAAO;QACP,QAAQ,EAAE,IAAI,EAAE,QAAQ,IAAI,OAAO;QACnC,IAAI,EAAE,IAAI,EAAE,IAAI;QAChB,cAAc,EAAE,IAAI,EAAE,cAAc;QACpC,eAAe,EAAE,IAAI,EAAE,eAAe,IAAI,EAAE;QAC5C,OAAO,EAAE,IAAI,EAAE,OAAO;KACvB,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,QAAQ,CACtB,IAAuB,EACvB,OAAe,EACf,IAAiE;IAEjE,OAAO,kBAAkB,CAAC,IAAI,EAAE,OAAO,EAAE,EAAE,GAAG,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC,CAAC;AAC3E,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,UAAU,CACxB,IAAuB,EACvB,OAAe,EACf,IAAiE;IAEjE,OAAO,kBAAkB,CAAC,IAAI,EAAE,OAAO,EAAE,EAAE,GAAG,IAAI,EAAE,QAAQ,EAAE,SAAS,EAAE,CAAC,CAAC;AAC7E,CAAC"}
|
|
1
|
+
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/pcb-constraints/errors.ts"],"names":[],"mappings":"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"}
|
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
*/
|
|
6
6
|
import type { ConstraintSeverity } from '../circuit/types.js';
|
|
7
7
|
/** Machine-readable code identifying a PCB constraint check. */
|
|
8
|
-
export type PcbConstraintCode = 'PCB_MISSING_OUTLINE' | 'PCB_OUTLINE_TOO_SMALL' | 'PCB_MISSING_STACKUP' | 'PCB_LAYER_COUNT_MISMATCH' | 'PCB_MISSING_MOUNTING_HOLES' | 'PCB_MISSING_NET_CLASSES' | 'PCB_INVALID_CLEARANCE' | 'PCB_KEEPOUT_VIOLATION' | 'PCB_MISSING_PLACEMENT_ZONES' | 'PCB_MISSING_MANUFACTURING_CONSTRAINTS' | 'PCB_FIDUCIAL_REQUIRED' | 'PCB_HIGH_VOLTAGE_CLEARANCE' | 'PCB_CONSTRAINT_INTERNAL';
|
|
8
|
+
export type PcbConstraintCode = 'PCB_MISSING_OUTLINE' | 'PCB_OUTLINE_TOO_SMALL' | 'PCB_MISSING_STACKUP' | 'PCB_LAYER_COUNT_MISMATCH' | 'PCB_MISSING_MOUNTING_HOLES' | 'PCB_MISSING_NET_CLASSES' | 'PCB_INVALID_CLEARANCE' | 'PCB_KEEPOUT_VIOLATION' | 'PCB_MISSING_PLACEMENT_ZONES' | 'PCB_MISSING_MANUFACTURING_CONSTRAINTS' | 'PCB_FIDUCIAL_REQUIRED' | 'PCB_HIGH_VOLTAGE_CLEARANCE' | 'PCB_DRILL_FILE_MISSING' | 'PCB_COPPER_EDGE_CLEARANCE' | 'PCB_DRILL_TOO_SMALL' | 'PCB_ANNULAR_RING_TOO_SMALL' | 'PCB_SOLDERMASK_SLIVER' | 'PCB_SILKSCREEN_OVER_PAD' | 'PCB_TOOLING_HOLE_MISSING' | 'PCB_POLARITY_MARK_MISSING' | 'PCB_COMPONENT_SPACING_VIOLATION' | 'PCB_TESTPOINT_COVERAGE_LOW' | 'PCB_PROGRAMMING_HEADER_MISSING' | 'PCB_FAB_NOTES_MISSING' | 'PCB_CONSTRAINT_INTERNAL';
|
|
9
9
|
/**
|
|
10
10
|
* A single PCB constraint issue (error or warning).
|
|
11
11
|
*
|
|
@@ -74,6 +74,44 @@ export interface PcbConstraintInput {
|
|
|
74
74
|
hasFiducials?: boolean;
|
|
75
75
|
/** Whether test pads are defined. */
|
|
76
76
|
hasTestPads?: boolean;
|
|
77
|
+
/** Whether the drill/NC drill file is present in the manufacturing package. */
|
|
78
|
+
hasDrillFile?: boolean;
|
|
79
|
+
/** Minimum copper-to-board-edge clearance observed in mm. */
|
|
80
|
+
minCopperToEdgeMm?: number;
|
|
81
|
+
/** Number of copper-to-edge clearance violations. */
|
|
82
|
+
copperToEdgeViolationCount?: number;
|
|
83
|
+
/** Minimum finished/mechanical drill diameter observed in mm. */
|
|
84
|
+
minDrillMm?: number;
|
|
85
|
+
/** Minimum annular ring observed in mm. */
|
|
86
|
+
minAnnularRingMm?: number;
|
|
87
|
+
/** Minimum soldermask web/sliver observed in mm. */
|
|
88
|
+
minSolderMaskSliverMm?: number;
|
|
89
|
+
/** Count of soldermask sliver violations. */
|
|
90
|
+
solderMaskSliverViolationCount?: number;
|
|
91
|
+
/** Count of silkscreen objects overlapping copper pads. */
|
|
92
|
+
silkscreenOverPadCount?: number;
|
|
93
|
+
/** Number of SMT components requiring assembly alignment. */
|
|
94
|
+
smtComponentCount?: number;
|
|
95
|
+
/** Count of global/local fiducials. Overrides hasFiducials when provided. */
|
|
96
|
+
fiducialCount?: number;
|
|
97
|
+
/** Count of tooling holes for panel/fixture assembly. */
|
|
98
|
+
toolingHoleCount?: number;
|
|
99
|
+
/** Number of polarized/orientation-sensitive components. */
|
|
100
|
+
polarizedComponentCount?: number;
|
|
101
|
+
/** Number of polarized components with explicit polarity/orientation marks. */
|
|
102
|
+
polarityMarkCount?: number;
|
|
103
|
+
/** Count of component courtyard/spacing violations. */
|
|
104
|
+
componentSpacingViolationCount?: number;
|
|
105
|
+
/** Critical nets that should be accessible for bring-up/test. */
|
|
106
|
+
criticalNetNames?: string[];
|
|
107
|
+
/** Nets that have test pads/probes. */
|
|
108
|
+
testPointNets?: string[];
|
|
109
|
+
/** Whether a programming/debug header is present when required. */
|
|
110
|
+
hasProgrammingHeader?: boolean;
|
|
111
|
+
/** Whether this design requires a programming/debug header. */
|
|
112
|
+
requiresProgrammingHeader?: boolean;
|
|
113
|
+
/** Whether fabrication notes are present in the handoff package. */
|
|
114
|
+
hasFabricationNotes?: boolean;
|
|
77
115
|
/** Whether the design contains high-voltage domains. */
|
|
78
116
|
hasHighVoltage?: boolean;
|
|
79
117
|
/** Manufacturing process (lead-free, lead-based, mixed). */
|