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
package/dist/catalog/schema.d.ts
CHANGED
|
@@ -64,9 +64,9 @@ export declare const PinMappingSchema: z.ZodObject<{
|
|
|
64
64
|
type: z.ZodOptional<z.ZodEnum<{
|
|
65
65
|
output: "output";
|
|
66
66
|
input: "input";
|
|
67
|
+
analog: "analog";
|
|
67
68
|
power: "power";
|
|
68
69
|
ground: "ground";
|
|
69
|
-
analog: "analog";
|
|
70
70
|
bidirectional: "bidirectional";
|
|
71
71
|
"open-drain": "open-drain";
|
|
72
72
|
"pass-through": "pass-through";
|
|
@@ -118,9 +118,9 @@ export declare const DeviceEntrySchema: z.ZodObject<{
|
|
|
118
118
|
type: z.ZodOptional<z.ZodEnum<{
|
|
119
119
|
output: "output";
|
|
120
120
|
input: "input";
|
|
121
|
+
analog: "analog";
|
|
121
122
|
power: "power";
|
|
122
123
|
ground: "ground";
|
|
123
|
-
analog: "analog";
|
|
124
124
|
bidirectional: "bidirectional";
|
|
125
125
|
"open-drain": "open-drain";
|
|
126
126
|
"pass-through": "pass-through";
|
|
@@ -191,9 +191,9 @@ export declare const DeviceCatalogSchema: z.ZodObject<{
|
|
|
191
191
|
type: z.ZodOptional<z.ZodEnum<{
|
|
192
192
|
output: "output";
|
|
193
193
|
input: "input";
|
|
194
|
+
analog: "analog";
|
|
194
195
|
power: "power";
|
|
195
196
|
ground: "ground";
|
|
196
|
-
analog: "analog";
|
|
197
197
|
bidirectional: "bidirectional";
|
|
198
198
|
"open-drain": "open-drain";
|
|
199
199
|
"pass-through": "pass-through";
|
|
@@ -123,13 +123,13 @@ export declare const SignalClassSchema: z.ZodObject<{
|
|
|
123
123
|
name: z.ZodString;
|
|
124
124
|
kind: z.ZodEnum<{
|
|
125
125
|
reset: "reset";
|
|
126
|
-
power: "power";
|
|
127
|
-
ground: "ground";
|
|
128
126
|
analog: "analog";
|
|
129
127
|
digital: "digital";
|
|
128
|
+
power: "power";
|
|
129
|
+
ground: "ground";
|
|
130
|
+
clock: "clock";
|
|
130
131
|
usb: "usb";
|
|
131
132
|
rf: "rf";
|
|
132
|
-
clock: "clock";
|
|
133
133
|
i2c: "i2c";
|
|
134
134
|
spi: "spi";
|
|
135
135
|
uart: "uart";
|
|
@@ -184,8 +184,8 @@ export declare const PhysicalConstraintSchema: z.ZodObject<{
|
|
|
184
184
|
board: "board";
|
|
185
185
|
net: "net";
|
|
186
186
|
interface: "interface";
|
|
187
|
-
device: "device";
|
|
188
187
|
block: "block";
|
|
188
|
+
device: "device";
|
|
189
189
|
zone: "zone";
|
|
190
190
|
}>;
|
|
191
191
|
targetRef: z.ZodOptional<z.ZodString>;
|
|
@@ -465,13 +465,13 @@ export declare const CircuitIRSchema: z.ZodObject<{
|
|
|
465
465
|
name: z.ZodString;
|
|
466
466
|
kind: z.ZodEnum<{
|
|
467
467
|
reset: "reset";
|
|
468
|
-
power: "power";
|
|
469
|
-
ground: "ground";
|
|
470
468
|
analog: "analog";
|
|
471
469
|
digital: "digital";
|
|
470
|
+
power: "power";
|
|
471
|
+
ground: "ground";
|
|
472
|
+
clock: "clock";
|
|
472
473
|
usb: "usb";
|
|
473
474
|
rf: "rf";
|
|
474
|
-
clock: "clock";
|
|
475
475
|
i2c: "i2c";
|
|
476
476
|
spi: "spi";
|
|
477
477
|
uart: "uart";
|
|
@@ -525,8 +525,8 @@ export declare const CircuitIRSchema: z.ZodObject<{
|
|
|
525
525
|
board: "board";
|
|
526
526
|
net: "net";
|
|
527
527
|
interface: "interface";
|
|
528
|
-
device: "device";
|
|
529
528
|
block: "block";
|
|
529
|
+
device: "device";
|
|
530
530
|
zone: "zone";
|
|
531
531
|
}>;
|
|
532
532
|
targetRef: z.ZodOptional<z.ZodString>;
|
package/dist/config/profiles.js
CHANGED
|
@@ -3,35 +3,35 @@ export const PROFILE_DEFINITIONS = {
|
|
|
3
3
|
name: 'core',
|
|
4
4
|
label: 'Core',
|
|
5
5
|
description: 'High-confidence tools: diagnostics, EasyEDA API inventory, schematic, BOM, DRC/ERC, board layers/stackup, Gerber export',
|
|
6
|
-
approxToolCount: '
|
|
6
|
+
approxToolCount: '40',
|
|
7
7
|
isDefault: true,
|
|
8
8
|
},
|
|
9
9
|
pro: {
|
|
10
10
|
name: 'pro',
|
|
11
11
|
label: 'Pro',
|
|
12
12
|
description: 'Adds pick-and-place, PDF, netlist export for manufacturing workflows',
|
|
13
|
-
approxToolCount: '
|
|
13
|
+
approxToolCount: '43',
|
|
14
14
|
isDefault: false,
|
|
15
15
|
},
|
|
16
16
|
full: {
|
|
17
17
|
name: 'full',
|
|
18
18
|
label: 'Full',
|
|
19
19
|
description: 'Adds controlled documented EasyEDA API method calls for full runtime control without raw JavaScript execution',
|
|
20
|
-
approxToolCount: '
|
|
20
|
+
approxToolCount: '50',
|
|
21
21
|
isDefault: false,
|
|
22
22
|
},
|
|
23
23
|
dev: {
|
|
24
24
|
name: 'dev',
|
|
25
25
|
label: 'Dev',
|
|
26
26
|
description: 'Adds diagnostics probes for bridge methods and live component runtime shape inspection',
|
|
27
|
-
approxToolCount: '
|
|
27
|
+
approxToolCount: '54',
|
|
28
28
|
isDefault: false,
|
|
29
29
|
},
|
|
30
30
|
experimental: {
|
|
31
31
|
name: 'experimental',
|
|
32
32
|
label: 'Experimental',
|
|
33
33
|
description: 'MCP Apps, Tasks, simulation, autorouter, AI action plans',
|
|
34
|
-
approxToolCount: '
|
|
34
|
+
approxToolCount: '52',
|
|
35
35
|
isDefault: false,
|
|
36
36
|
},
|
|
37
37
|
};
|
package/dist/config/version.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export declare const SERVER_VERSION = "0.
|
|
1
|
+
export declare const SERVER_VERSION = "0.10.0";
|
package/dist/config/version.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export const SERVER_VERSION = '0.
|
|
1
|
+
export const SERVER_VERSION = '0.10.0'; // x-release-please-version
|
|
2
2
|
//# sourceMappingURL=version.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"version.js","sourceRoot":"","sources":["../../src/config/version.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,cAAc,GAAG,
|
|
1
|
+
{"version":3,"file":"version.js","sourceRoot":"","sources":["../../src/config/version.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,cAAc,GAAG,QAAQ,CAAC,CAAC,2BAA2B"}
|
|
@@ -28,6 +28,20 @@ export declare const NetValidationCode: {
|
|
|
28
28
|
readonly NetNamingConvention: "NET_NAMING_CONVENTION";
|
|
29
29
|
/** Net associated with AC/high-voltage lacks protective naming. */
|
|
30
30
|
readonly NetProtectedDomain: "NET_PROTECTED_DOMAIN";
|
|
31
|
+
/** Multiple actively-driven outputs or power sources are tied together. */
|
|
32
|
+
readonly NetOutputContention: "NET_OUTPUT_CONTENTION";
|
|
33
|
+
/** A signal net has inputs but no driver, pull, or passive source. */
|
|
34
|
+
readonly NetFloatingInput: "NET_FLOATING_INPUT";
|
|
35
|
+
/** A power rail has conflicting power sources/regulators. */
|
|
36
|
+
readonly NetPowerConflict: "NET_POWER_CONFLICT";
|
|
37
|
+
/** A signal net only connects passive pins and cannot be driven. */
|
|
38
|
+
readonly NetPassiveOnly: "NET_PASSIVE_ONLY";
|
|
39
|
+
/** A required power/ground pin is missing or connected to the wrong class of net. */
|
|
40
|
+
readonly NetUnpoweredDevice: "NET_UNPOWERED_DEVICE";
|
|
41
|
+
/** A device marked as requiring decoupling has no local capacitor across rail and ground. */
|
|
42
|
+
readonly NetMissingDecoupling: "NET_MISSING_DECOUPLING";
|
|
43
|
+
/** A pin expected voltage is incompatible with the connected net voltage. */
|
|
44
|
+
readonly NetVoltageMismatch: "NET_VOLTAGE_MISMATCH";
|
|
31
45
|
/** Validation could not be completed due to an internal error. */
|
|
32
46
|
readonly NetValidationInternal: "NET_VALIDATION_INTERNAL";
|
|
33
47
|
};
|
|
@@ -33,6 +33,21 @@ export const NetValidationCode = {
|
|
|
33
33
|
NetNamingConvention: 'NET_NAMING_CONVENTION',
|
|
34
34
|
/** Net associated with AC/high-voltage lacks protective naming. */
|
|
35
35
|
NetProtectedDomain: 'NET_PROTECTED_DOMAIN',
|
|
36
|
+
// ── Semantic ERC ─────────────────────────────────────────────────────
|
|
37
|
+
/** Multiple actively-driven outputs or power sources are tied together. */
|
|
38
|
+
NetOutputContention: 'NET_OUTPUT_CONTENTION',
|
|
39
|
+
/** A signal net has inputs but no driver, pull, or passive source. */
|
|
40
|
+
NetFloatingInput: 'NET_FLOATING_INPUT',
|
|
41
|
+
/** A power rail has conflicting power sources/regulators. */
|
|
42
|
+
NetPowerConflict: 'NET_POWER_CONFLICT',
|
|
43
|
+
/** A signal net only connects passive pins and cannot be driven. */
|
|
44
|
+
NetPassiveOnly: 'NET_PASSIVE_ONLY',
|
|
45
|
+
/** A required power/ground pin is missing or connected to the wrong class of net. */
|
|
46
|
+
NetUnpoweredDevice: 'NET_UNPOWERED_DEVICE',
|
|
47
|
+
/** A device marked as requiring decoupling has no local capacitor across rail and ground. */
|
|
48
|
+
NetMissingDecoupling: 'NET_MISSING_DECOUPLING',
|
|
49
|
+
/** A pin expected voltage is incompatible with the connected net voltage. */
|
|
50
|
+
NetVoltageMismatch: 'NET_VOLTAGE_MISMATCH',
|
|
36
51
|
// ── General ──────────────────────────────────────────────────────────
|
|
37
52
|
/** Validation could not be completed due to an internal error. */
|
|
38
53
|
NetValidationInternal: 'NET_VALIDATION_INTERNAL',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/net-validation/errors.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,6EAA6E;AAE7E,MAAM,CAAC,MAAM,iBAAiB,GAAG;IAC/B,wEAAwE;IAExE,gDAAgD;IAChD,WAAW,EAAE,cAAc;IAC3B,4CAA4C;IAC5C,gBAAgB,EAAE,oBAAoB;IACtC,yDAAyD;IACzD,kBAAkB,EAAE,sBAAsB;IAE1C,wEAAwE;IAExE,qCAAqC;IACrC,eAAe,EAAE,mBAAmB;IACpC,sCAAsC;IACtC,gBAAgB,EAAE,oBAAoB;IACtC,2DAA2D;IAC3D,0BAA0B,EAAE,+BAA+B;IAC3D,mDAAmD;IACnD,yBAAyB,EAAE,8BAA8B;IAEzD,wEAAwE;IAExE,wDAAwD;IACxD,yBAAyB,EAAE,8BAA8B;IAEzD,wEAAwE;IAExE,gEAAgE;IAChE,mBAAmB,EAAE,uBAAuB;IAC5C,mEAAmE;IACnE,kBAAkB,EAAE,sBAAsB;IAE1C,wEAAwE;IAExE,kEAAkE;IAClE,qBAAqB,EAAE,yBAAyB;CACxC,CAAC;AA+CX,6EAA6E;AAE7E;;GAEG;AACH,MAAM,UAAU,kBAAkB,CAChC,IAAuB,EACvB,OAAe,EACf,IAQC;IAED,OAAO;QACL,IAAI;QACJ,OAAO;QACP,QAAQ,EAAE,IAAI,EAAE,QAAQ,IAAI,OAAO;QACnC,IAAI,EAAE,IAAI,EAAE,IAAI;QAChB,OAAO,EAAE,IAAI,EAAE,OAAO;QACtB,YAAY,EAAE,IAAI,EAAE,YAAY;QAChC,GAAG,EAAE,IAAI,EAAE,GAAG;QACd,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/net-validation/errors.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,6EAA6E;AAE7E,MAAM,CAAC,MAAM,iBAAiB,GAAG;IAC/B,wEAAwE;IAExE,gDAAgD;IAChD,WAAW,EAAE,cAAc;IAC3B,4CAA4C;IAC5C,gBAAgB,EAAE,oBAAoB;IACtC,yDAAyD;IACzD,kBAAkB,EAAE,sBAAsB;IAE1C,wEAAwE;IAExE,qCAAqC;IACrC,eAAe,EAAE,mBAAmB;IACpC,sCAAsC;IACtC,gBAAgB,EAAE,oBAAoB;IACtC,2DAA2D;IAC3D,0BAA0B,EAAE,+BAA+B;IAC3D,mDAAmD;IACnD,yBAAyB,EAAE,8BAA8B;IAEzD,wEAAwE;IAExE,wDAAwD;IACxD,yBAAyB,EAAE,8BAA8B;IAEzD,wEAAwE;IAExE,gEAAgE;IAChE,mBAAmB,EAAE,uBAAuB;IAC5C,mEAAmE;IACnE,kBAAkB,EAAE,sBAAsB;IAE1C,wEAAwE;IAExE,2EAA2E;IAC3E,mBAAmB,EAAE,uBAAuB;IAC5C,sEAAsE;IACtE,gBAAgB,EAAE,oBAAoB;IACtC,6DAA6D;IAC7D,gBAAgB,EAAE,oBAAoB;IACtC,oEAAoE;IACpE,cAAc,EAAE,kBAAkB;IAClC,qFAAqF;IACrF,kBAAkB,EAAE,sBAAsB;IAC1C,6FAA6F;IAC7F,oBAAoB,EAAE,wBAAwB;IAC9C,6EAA6E;IAC7E,kBAAkB,EAAE,sBAAsB;IAE1C,wEAAwE;IAExE,kEAAkE;IAClE,qBAAqB,EAAE,yBAAyB;CACxC,CAAC;AA+CX,6EAA6E;AAE7E;;GAEG;AACH,MAAM,UAAU,kBAAkB,CAChC,IAAuB,EACvB,OAAe,EACf,IAQC;IAED,OAAO;QACL,IAAI;QACJ,OAAO;QACP,QAAQ,EAAE,IAAI,EAAE,QAAQ,IAAI,OAAO;QACnC,IAAI,EAAE,IAAI,EAAE,IAAI;QAChB,OAAO,EAAE,IAAI,EAAE,OAAO;QACtB,YAAY,EAAE,IAAI,EAAE,YAAY;QAChC,GAAG,EAAE,IAAI,EAAE,GAAG;QACd,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"}
|
|
@@ -6,5 +6,5 @@
|
|
|
6
6
|
export { NetValidationCode, netValidationIssue, netError, netWarning } from './errors.js';
|
|
7
7
|
export type { NetValidationCode as NetValidationCodeType, NetValidationIssue, NetValidationResult, } from './errors.js';
|
|
8
8
|
export { NetDomain, NET_DOMAIN_PATTERNS, NET_TYPE_EXPECTED_DOMAIN, RESERVED_NET_NAMES, REQUIRED_POWER_NETS, REQUIRED_GROUND_NETS, } from './schema.js';
|
|
9
|
-
export type { NetValidationEntry, DeviceValidationEntry, InterfaceValidationEntry, NetValidationInput, } from './schema.js';
|
|
9
|
+
export type { NetValidationEntry, NetValidationNode, DeviceValidationEntry, InterfaceValidationEntry, NetValidationInput, PinElectricalType, PinValidationMetadata, } from './schema.js';
|
|
10
10
|
export { validateNets, validateNetsOrThrow } from './validation.js';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/net-validation/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAO1F,OAAO,EACL,SAAS,EACT,mBAAmB,EACnB,wBAAwB,EACxB,kBAAkB,EAClB,mBAAmB,EACnB,oBAAoB,GACrB,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/net-validation/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAO1F,OAAO,EACL,SAAS,EACT,mBAAmB,EACnB,wBAAwB,EACxB,kBAAkB,EAClB,mBAAmB,EACnB,oBAAoB,GACrB,MAAM,aAAa,CAAC;AAWrB,OAAO,EAAE,YAAY,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC"}
|
|
@@ -66,6 +66,35 @@ export declare const NET_TYPE_EXPECTED_DOMAIN: Record<string, NetDomain[]>;
|
|
|
66
66
|
* so that validation can operate on net data from any source
|
|
67
67
|
* (CircuitIR, EasyEDA bridge, hand-authored test data).
|
|
68
68
|
*/
|
|
69
|
+
export type PinElectricalType = 'input' | 'output' | 'bidirectional' | 'passive' | 'power_input' | 'power_output' | 'power_source' | 'open_drain' | 'tri_state' | 'no_connect';
|
|
70
|
+
/** How a pin should be interpreted by semantic ERC. */
|
|
71
|
+
export interface PinValidationMetadata {
|
|
72
|
+
/** Pin number or name as it appears in net nodes. */
|
|
73
|
+
pin: string;
|
|
74
|
+
/** Human-readable pin name, e.g. VDD, GND, EN, OUT. */
|
|
75
|
+
name?: string;
|
|
76
|
+
/** Electrical type used for compatibility checks. */
|
|
77
|
+
electricalType: PinElectricalType;
|
|
78
|
+
/** Whether this pin must be connected for the device to be valid. */
|
|
79
|
+
required?: boolean;
|
|
80
|
+
/** Expected net classification for required power/ground/signal pins. */
|
|
81
|
+
expectedNetType?: 'power' | 'signal' | 'ground';
|
|
82
|
+
/** Expected nominal voltage for voltage-domain checks. */
|
|
83
|
+
expectedVoltage?: number;
|
|
84
|
+
/** Whether this pin intentionally allows no-connect. */
|
|
85
|
+
noConnectAllowed?: boolean;
|
|
86
|
+
}
|
|
87
|
+
/** A connected device pin, optionally carrying semantic pin metadata. */
|
|
88
|
+
export interface NetValidationNode {
|
|
89
|
+
deviceRef: string;
|
|
90
|
+
pin: string;
|
|
91
|
+
/** Optional per-node electrical type; device pin metadata takes precedence when both exist. */
|
|
92
|
+
electricalType?: PinElectricalType;
|
|
93
|
+
/** Optional human-readable pin name. */
|
|
94
|
+
pinName?: string;
|
|
95
|
+
/** Optional expected nominal voltage for this pin. */
|
|
96
|
+
expectedVoltage?: number;
|
|
97
|
+
}
|
|
69
98
|
export interface NetValidationEntry {
|
|
70
99
|
/** Unique net identifier. */
|
|
71
100
|
id: string;
|
|
@@ -73,11 +102,10 @@ export interface NetValidationEntry {
|
|
|
73
102
|
name: string;
|
|
74
103
|
/** Net type classification. */
|
|
75
104
|
type: 'power' | 'signal' | 'ground';
|
|
105
|
+
/** Optional nominal voltage for voltage-domain checks. */
|
|
106
|
+
voltage?: number;
|
|
76
107
|
/** Connected device pins, may be empty for floating nets. */
|
|
77
|
-
nodes:
|
|
78
|
-
deviceRef: string;
|
|
79
|
-
pin: string;
|
|
80
|
-
}>;
|
|
108
|
+
nodes: NetValidationNode[];
|
|
81
109
|
}
|
|
82
110
|
/**
|
|
83
111
|
* A minimal device representation for validation.
|
|
@@ -89,6 +117,10 @@ export interface DeviceValidationEntry {
|
|
|
89
117
|
ref: string;
|
|
90
118
|
/** Functional category for determining required pins. */
|
|
91
119
|
category?: string;
|
|
120
|
+
/** Semantic pin metadata used by ERC rules. */
|
|
121
|
+
pins?: PinValidationMetadata[];
|
|
122
|
+
/** Require at least one local capacitor between each power input rail and ground. */
|
|
123
|
+
requiresDecoupling?: boolean;
|
|
92
124
|
}
|
|
93
125
|
/**
|
|
94
126
|
* A hierarchical port / interface for cross-sheet validation.
|
|
@@ -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:
|
|
@@ -34,6 +34,13 @@ import type { NetValidationInput } from './schema.js';
|
|
|
34
34
|
* 8. Cross-sheet consistency — error if same-name interfaces have different pinouts
|
|
35
35
|
* 9. Naming convention — warning if power/ground nets have non-standard names
|
|
36
36
|
* 10. Protected domain — error if high-voltage net lacks protective naming
|
|
37
|
+
* 11. Output contention — error if multiple active outputs drive one signal
|
|
38
|
+
* 12. Floating input — warning if input net has no driver or pull
|
|
39
|
+
* 13. Power conflict — error if multiple sources drive one rail
|
|
40
|
+
* 14. Passive-only signal — warning if a signal net has only passive nodes
|
|
41
|
+
* 15. Required power pins — error if required pins are missing/miswired
|
|
42
|
+
* 16. Decoupling expectation — warning if required local decoupling is absent
|
|
43
|
+
* 17. Voltage mismatch — error if expected pin voltage conflicts with net voltage
|
|
37
44
|
*/
|
|
38
45
|
export declare function validateNets(input: NetValidationInput): NetValidationResult;
|
|
39
46
|
/**
|