easyeda-mcp-pro 0.4.0 → 0.5.2
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/README.md +68 -24
- package/dist/bom-quality/adapter.d.ts +90 -0
- package/dist/bom-quality/adapter.js +295 -0
- package/dist/bom-quality/adapter.js.map +1 -0
- package/dist/bom-quality/index.d.ts +10 -0
- package/dist/bom-quality/index.js +9 -0
- package/dist/bom-quality/index.js.map +1 -0
- package/dist/bom-quality/quality.d.ts +28 -0
- package/dist/bom-quality/quality.js +179 -0
- package/dist/bom-quality/quality.js.map +1 -0
- package/dist/bom-quality/types.d.ts +94 -0
- package/dist/bom-quality/types.js +12 -0
- package/dist/bom-quality/types.js.map +1 -0
- package/dist/bridge/manager.d.ts +41 -0
- package/dist/bridge/manager.js +333 -51
- package/dist/bridge/manager.js.map +1 -1
- package/dist/bridge/protocol.d.ts +47 -1
- package/dist/bridge/protocol.js +42 -1
- package/dist/bridge/protocol.js.map +1 -1
- package/dist/bridge/types.d.ts +6 -0
- package/dist/bridge/types.js +6 -0
- package/dist/bridge/types.js.map +1 -1
- package/dist/catalog/errors.d.ts +49 -0
- package/dist/catalog/errors.js +60 -0
- package/dist/catalog/errors.js.map +1 -0
- package/dist/catalog/index.d.ts +15 -0
- package/dist/catalog/index.js +17 -0
- package/dist/catalog/index.js.map +1 -0
- package/dist/catalog/schema.d.ts +268 -0
- package/dist/catalog/schema.js +245 -0
- package/dist/catalog/schema.js.map +1 -0
- package/dist/catalog/starter.d.ts +159 -0
- package/dist/catalog/starter.js +579 -0
- package/dist/catalog/starter.js.map +1 -0
- package/dist/catalog/validation.d.ts +48 -0
- package/dist/catalog/validation.js +263 -0
- package/dist/catalog/validation.js.map +1 -0
- package/dist/circuit/circuit-ir.d.ts +460 -0
- package/dist/circuit/circuit-ir.js +292 -0
- package/dist/circuit/circuit-ir.js.map +1 -0
- package/dist/circuit/compiler.d.ts +55 -0
- package/dist/circuit/compiler.js +197 -0
- package/dist/circuit/compiler.js.map +1 -0
- package/dist/circuit/design-intent.d.ts +94 -0
- package/dist/circuit/design-intent.js +118 -0
- package/dist/circuit/design-intent.js.map +1 -0
- package/dist/circuit/errors.d.ts +50 -0
- package/dist/circuit/errors.js +61 -0
- package/dist/circuit/errors.js.map +1 -0
- package/dist/circuit/index.d.ts +17 -0
- package/dist/circuit/index.js +18 -0
- package/dist/circuit/index.js.map +1 -0
- package/dist/circuit/types.d.ts +186 -0
- package/dist/circuit/types.js +123 -0
- package/dist/circuit/types.js.map +1 -0
- package/dist/cli/auto-setup.d.ts +1 -8
- package/dist/cli/auto-setup.js +10 -178
- package/dist/cli/auto-setup.js.map +1 -1
- package/dist/cli/client-definitions.d.ts +34 -0
- package/dist/cli/client-definitions.js +194 -0
- package/dist/cli/client-definitions.js.map +1 -0
- package/dist/cli/local-setup.js +2 -2
- package/dist/cli/local-setup.js.map +1 -1
- package/dist/config/env.d.ts +6 -1
- package/dist/config/env.js +93 -5
- package/dist/config/env.js.map +1 -1
- package/dist/config/version.d.ts +1 -1
- package/dist/config/version.js +1 -1
- package/dist/export-manifest/errors.d.ts +55 -0
- package/dist/export-manifest/errors.js +69 -0
- package/dist/export-manifest/errors.js.map +1 -0
- package/dist/export-manifest/index.d.ts +10 -0
- package/dist/export-manifest/index.js +9 -0
- package/dist/export-manifest/index.js.map +1 -0
- package/dist/export-manifest/types.d.ts +170 -0
- package/dist/export-manifest/types.js +36 -0
- package/dist/export-manifest/types.js.map +1 -0
- package/dist/export-manifest/validation.d.ts +39 -0
- package/dist/export-manifest/validation.js +298 -0
- package/dist/export-manifest/validation.js.map +1 -0
- package/dist/index.js +7 -0
- package/dist/index.js.map +1 -1
- package/dist/net-validation/errors.d.ts +89 -0
- package/dist/net-validation/errors.js +69 -0
- package/dist/net-validation/errors.js.map +1 -0
- package/dist/net-validation/fixtures.d.ts +38 -0
- package/dist/net-validation/fixtures.js +215 -0
- package/dist/net-validation/fixtures.js.map +1 -0
- package/dist/net-validation/index.d.ts +10 -0
- package/dist/net-validation/index.js +9 -0
- package/dist/net-validation/index.js.map +1 -0
- package/dist/net-validation/schema.d.ts +118 -0
- package/dist/net-validation/schema.js +140 -0
- package/dist/net-validation/schema.js.map +1 -0
- package/dist/net-validation/validation.d.ts +45 -0
- package/dist/net-validation/validation.js +369 -0
- package/dist/net-validation/validation.js.map +1 -0
- package/dist/pcb-constraints/errors.d.ts +39 -0
- package/dist/pcb-constraints/errors.js +133 -0
- package/dist/pcb-constraints/errors.js.map +1 -0
- package/dist/pcb-constraints/index.d.ts +9 -0
- package/dist/pcb-constraints/index.js +9 -0
- package/dist/pcb-constraints/index.js.map +1 -0
- package/dist/pcb-constraints/types.d.ts +102 -0
- package/dist/pcb-constraints/types.js +7 -0
- package/dist/pcb-constraints/types.js.map +1 -0
- package/dist/pcb-constraints/validation.d.ts +70 -0
- package/dist/pcb-constraints/validation.js +309 -0
- package/dist/pcb-constraints/validation.js.map +1 -0
- package/dist/server/factory.js +2 -0
- package/dist/server/factory.js.map +1 -1
- package/dist/server/transports/http.d.ts +20 -1
- package/dist/server/transports/http.js +156 -34
- package/dist/server/transports/http.js.map +1 -1
- package/dist/storage/database.d.ts +25 -0
- package/dist/storage/database.js +126 -51
- package/dist/storage/database.js.map +1 -1
- package/dist/tools/{L0_diagnostics.d.ts → L0_diagnostics_api.d.ts} +2 -2
- package/dist/tools/L0_diagnostics_api.js +152 -0
- package/dist/tools/L0_diagnostics_api.js.map +1 -0
- package/dist/tools/L0_diagnostics_core.d.ts +6 -0
- package/dist/tools/{L0_diagnostics.js → L0_diagnostics_core.js} +50 -124
- package/dist/tools/L0_diagnostics_core.js.map +1 -0
- package/dist/tools/L1_board.js +20 -4
- package/dist/tools/L1_board.js.map +1 -1
- package/dist/tools/{L1_bom.d.ts → L1_bom_core.d.ts} +2 -2
- package/dist/tools/{L1_bom.js → L1_bom_core.js} +21 -101
- package/dist/tools/L1_bom_core.js.map +1 -0
- package/dist/tools/{L1_schematic.d.ts → L1_bom_sourcing.d.ts} +2 -2
- package/dist/tools/L1_bom_sourcing.js +265 -0
- package/dist/tools/L1_bom_sourcing.js.map +1 -0
- package/dist/tools/L1_drc_erc.js +15 -3
- package/dist/tools/L1_drc_erc.js.map +1 -1
- package/dist/tools/L1_export.js +20 -4
- package/dist/tools/L1_export.js.map +1 -1
- package/dist/tools/L1_pcb_constraints.d.ts +6 -0
- package/dist/tools/L1_pcb_constraints.js +234 -0
- package/dist/tools/L1_pcb_constraints.js.map +1 -0
- package/dist/tools/L1_pcb_write.js +26 -12
- package/dist/tools/L1_pcb_write.js.map +1 -1
- package/dist/tools/L1_schematic_read.d.ts +6 -0
- package/dist/tools/{L1_schematic.js → L1_schematic_read.js} +125 -194
- package/dist/tools/L1_schematic_read.js.map +1 -0
- package/dist/tools/L1_schematic_write.d.ts +6 -0
- package/dist/tools/L1_schematic_write.js +516 -0
- package/dist/tools/L1_schematic_write.js.map +1 -0
- package/dist/tools/register.js +15 -7
- package/dist/tools/register.js.map +1 -1
- package/dist/tools/registry.d.ts +41 -7
- package/dist/tools/registry.js +95 -25
- package/dist/tools/registry.js.map +1 -1
- package/dist/tools/types.d.ts +16 -0
- package/dist/utils/logger.d.ts +1 -1
- package/dist/utils/logger.js +1 -1
- package/dist/utils/logger.js.map +1 -1
- package/dist/vendors/base-http-client.d.ts +48 -0
- package/dist/vendors/base-http-client.js +75 -0
- package/dist/vendors/base-http-client.js.map +1 -0
- package/dist/vendors/digikey/client.js +10 -19
- package/dist/vendors/digikey/client.js.map +1 -1
- package/dist/vendors/jlcpcb/client.js +41 -70
- package/dist/vendors/jlcpcb/client.js.map +1 -1
- package/dist/vendors/lcsc/client.js +5 -18
- package/dist/vendors/lcsc/client.js.map +1 -1
- package/dist/vendors/mouser/client.js +4 -12
- package/dist/vendors/mouser/client.js.map +1 -1
- package/easyeda-bridge-extension.eext +0 -0
- package/package.json +11 -10
- package/dist/tools/L0_diagnostics.js.map +0 -1
- package/dist/tools/L1_bom.js.map +0 -1
- package/dist/tools/L1_schematic.js.map +0 -1
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Net validation — error codes, structured issues, and factories.
|
|
3
|
+
*
|
|
4
|
+
* Follows the same pattern as `CircuitError` / `CatalogError`:
|
|
5
|
+
* a const-object error code enum, a structured issue interface, and
|
|
6
|
+
* factory helpers.
|
|
7
|
+
*
|
|
8
|
+
* @module
|
|
9
|
+
*/
|
|
10
|
+
export declare const NetValidationCode: {
|
|
11
|
+
/** Net has zero node connections (floating). */
|
|
12
|
+
readonly NetFloating: "NET_FLOATING";
|
|
13
|
+
/** Two or more nets share the same name. */
|
|
14
|
+
readonly NetDuplicateName: "NET_DUPLICATE_NAME";
|
|
15
|
+
/** Two different nets connect to the same device pin. */
|
|
16
|
+
readonly NetAccidentalShort: "NET_ACCIDENTAL_SHORT";
|
|
17
|
+
/** No net with type=Power exists. */
|
|
18
|
+
readonly NetMissingPower: "NET_MISSING_POWER";
|
|
19
|
+
/** No net with type=Ground exists. */
|
|
20
|
+
readonly NetMissingGround: "NET_MISSING_GROUND";
|
|
21
|
+
/** A hierarchical port (Interface) has no matching net. */
|
|
22
|
+
readonly NetMissingHierarchicalPort: "NET_MISSING_HIERARCHICAL_PORT";
|
|
23
|
+
/** A required device pin has no net connection. */
|
|
24
|
+
readonly NetUnconnectedRequiredPin: "NET_UNCONNECTED_REQUIRED_PIN";
|
|
25
|
+
/** Cross-sheet interface pin references don't match. */
|
|
26
|
+
readonly NetInconsistentCrossSheet: "NET_INCONSISTENT_CROSS_SHEET";
|
|
27
|
+
/** Net name violates analog/digital rail naming conventions. */
|
|
28
|
+
readonly NetNamingConvention: "NET_NAMING_CONVENTION";
|
|
29
|
+
/** Net associated with AC/high-voltage lacks protective naming. */
|
|
30
|
+
readonly NetProtectedDomain: "NET_PROTECTED_DOMAIN";
|
|
31
|
+
/** Validation could not be completed due to an internal error. */
|
|
32
|
+
readonly NetValidationInternal: "NET_VALIDATION_INTERNAL";
|
|
33
|
+
};
|
|
34
|
+
export type NetValidationCode = (typeof NetValidationCode)[keyof typeof NetValidationCode];
|
|
35
|
+
/**
|
|
36
|
+
* A single net validation issue (error or warning).
|
|
37
|
+
*
|
|
38
|
+
* Mirrors `CircuitValidationError`'s shape but adds fields specific
|
|
39
|
+
* to net/wire semantics: component ref, pin, net name, severity, and
|
|
40
|
+
* a human-readable remediation hint.
|
|
41
|
+
*/
|
|
42
|
+
export interface NetValidationIssue {
|
|
43
|
+
/** Machine-readable error code (e.g. "NET_FLOATING"). */
|
|
44
|
+
code: NetValidationCode;
|
|
45
|
+
/** Human-readable description of what is wrong. */
|
|
46
|
+
message: string;
|
|
47
|
+
/** Dot-notation path to the offending field (e.g. "nets[2]"). */
|
|
48
|
+
path?: string;
|
|
49
|
+
/** Whether this issue blocks validation (error) or is advisory (warning). */
|
|
50
|
+
severity: 'error' | 'warning';
|
|
51
|
+
/** Name of the offending net, if applicable. */
|
|
52
|
+
netName?: string;
|
|
53
|
+
/** Reference designator of the offending component, if applicable. */
|
|
54
|
+
componentRef?: string;
|
|
55
|
+
/** Pin number or name on the component, if applicable. */
|
|
56
|
+
pin?: string;
|
|
57
|
+
/** Actionable hint for the user on how to fix this issue. */
|
|
58
|
+
remediationHint: string;
|
|
59
|
+
/** Additional machine-readable context. */
|
|
60
|
+
details?: Record<string, unknown>;
|
|
61
|
+
}
|
|
62
|
+
export interface NetValidationResult {
|
|
63
|
+
/** True when there are zero errors (warnings are allowed). */
|
|
64
|
+
valid: boolean;
|
|
65
|
+
/** Issues that block validation (catalog / circuit is invalid). */
|
|
66
|
+
errors: NetValidationIssue[];
|
|
67
|
+
/** Issues that are advisory (catalog / circuit is valid but should be reviewed). */
|
|
68
|
+
warnings: NetValidationIssue[];
|
|
69
|
+
}
|
|
70
|
+
/**
|
|
71
|
+
* Create a single net validation issue.
|
|
72
|
+
*/
|
|
73
|
+
export declare function netValidationIssue(code: NetValidationCode, message: string, opts?: {
|
|
74
|
+
severity?: 'error' | 'warning';
|
|
75
|
+
path?: string;
|
|
76
|
+
netName?: string;
|
|
77
|
+
componentRef?: string;
|
|
78
|
+
pin?: string;
|
|
79
|
+
remediationHint?: string;
|
|
80
|
+
details?: Record<string, unknown>;
|
|
81
|
+
}): NetValidationIssue;
|
|
82
|
+
/**
|
|
83
|
+
* Convenience: create an error-severity issue.
|
|
84
|
+
*/
|
|
85
|
+
export declare function netError(code: NetValidationCode, message: string, opts?: Omit<Parameters<typeof netValidationIssue>[2], 'severity'>): NetValidationIssue;
|
|
86
|
+
/**
|
|
87
|
+
* Convenience: create a warning-severity issue.
|
|
88
|
+
*/
|
|
89
|
+
export declare function netWarning(code: NetValidationCode, message: string, opts?: Omit<Parameters<typeof netValidationIssue>[2], 'severity'>): NetValidationIssue;
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Net validation — error codes, structured issues, and factories.
|
|
3
|
+
*
|
|
4
|
+
* Follows the same pattern as `CircuitError` / `CatalogError`:
|
|
5
|
+
* a const-object error code enum, a structured issue interface, and
|
|
6
|
+
* factory helpers.
|
|
7
|
+
*
|
|
8
|
+
* @module
|
|
9
|
+
*/
|
|
10
|
+
// ── Error codes ───────────────────────────────────────────────────────────
|
|
11
|
+
export const NetValidationCode = {
|
|
12
|
+
// ── Structural errors ────────────────────────────────────────────────
|
|
13
|
+
/** Net has zero node connections (floating). */
|
|
14
|
+
NetFloating: 'NET_FLOATING',
|
|
15
|
+
/** Two or more nets share the same name. */
|
|
16
|
+
NetDuplicateName: 'NET_DUPLICATE_NAME',
|
|
17
|
+
/** Two different nets connect to the same device pin. */
|
|
18
|
+
NetAccidentalShort: 'NET_ACCIDENTAL_SHORT',
|
|
19
|
+
// ── Missing topology ─────────────────────────────────────────────────
|
|
20
|
+
/** No net with type=Power exists. */
|
|
21
|
+
NetMissingPower: 'NET_MISSING_POWER',
|
|
22
|
+
/** No net with type=Ground exists. */
|
|
23
|
+
NetMissingGround: 'NET_MISSING_GROUND',
|
|
24
|
+
/** A hierarchical port (Interface) has no matching net. */
|
|
25
|
+
NetMissingHierarchicalPort: 'NET_MISSING_HIERARCHICAL_PORT',
|
|
26
|
+
/** A required device pin has no net connection. */
|
|
27
|
+
NetUnconnectedRequiredPin: 'NET_UNCONNECTED_REQUIRED_PIN',
|
|
28
|
+
// ── Cross-sheet consistency ──────────────────────────────────────────
|
|
29
|
+
/** Cross-sheet interface pin references don't match. */
|
|
30
|
+
NetInconsistentCrossSheet: 'NET_INCONSISTENT_CROSS_SHEET',
|
|
31
|
+
// ── Naming conventions ───────────────────────────────────────────────
|
|
32
|
+
/** Net name violates analog/digital rail naming conventions. */
|
|
33
|
+
NetNamingConvention: 'NET_NAMING_CONVENTION',
|
|
34
|
+
/** Net associated with AC/high-voltage lacks protective naming. */
|
|
35
|
+
NetProtectedDomain: 'NET_PROTECTED_DOMAIN',
|
|
36
|
+
// ── General ──────────────────────────────────────────────────────────
|
|
37
|
+
/** Validation could not be completed due to an internal error. */
|
|
38
|
+
NetValidationInternal: 'NET_VALIDATION_INTERNAL',
|
|
39
|
+
};
|
|
40
|
+
// ── Factory ───────────────────────────────────────────────────────────────
|
|
41
|
+
/**
|
|
42
|
+
* Create a single net validation issue.
|
|
43
|
+
*/
|
|
44
|
+
export function netValidationIssue(code, message, opts) {
|
|
45
|
+
return {
|
|
46
|
+
code,
|
|
47
|
+
message,
|
|
48
|
+
severity: opts?.severity ?? 'error',
|
|
49
|
+
path: opts?.path,
|
|
50
|
+
netName: opts?.netName,
|
|
51
|
+
componentRef: opts?.componentRef,
|
|
52
|
+
pin: opts?.pin,
|
|
53
|
+
remediationHint: opts?.remediationHint ?? '',
|
|
54
|
+
details: opts?.details,
|
|
55
|
+
};
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* Convenience: create an error-severity issue.
|
|
59
|
+
*/
|
|
60
|
+
export function netError(code, message, opts) {
|
|
61
|
+
return netValidationIssue(code, message, { ...opts, severity: 'error' });
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* Convenience: create a warning-severity issue.
|
|
65
|
+
*/
|
|
66
|
+
export function netWarning(code, message, opts) {
|
|
67
|
+
return netValidationIssue(code, message, { ...opts, severity: 'warning' });
|
|
68
|
+
}
|
|
69
|
+
//# sourceMappingURL=errors.js.map
|
|
@@ -0,0 +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"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Net validation — sample fixture data for tests.
|
|
3
|
+
*
|
|
4
|
+
* @module
|
|
5
|
+
*/
|
|
6
|
+
import type { NetValidationEntry, DeviceValidationEntry, InterfaceValidationEntry, NetValidationInput } from './schema.js';
|
|
7
|
+
export declare const VALID_NETS: NetValidationEntry[];
|
|
8
|
+
export declare const VALID_DEVICES: DeviceValidationEntry[];
|
|
9
|
+
export declare const VALID_INPUT: NetValidationInput;
|
|
10
|
+
export declare const FLOATING_NET: NetValidationEntry[];
|
|
11
|
+
export declare const FLOATING_INPUT: NetValidationInput;
|
|
12
|
+
export declare const DUPLICATE_NAME_NETS: NetValidationEntry[];
|
|
13
|
+
export declare const DUPLICATE_NAME_INPUT: NetValidationInput;
|
|
14
|
+
export declare const SHORT_NETS: NetValidationEntry[];
|
|
15
|
+
export declare const SHORT_INPUT: NetValidationInput;
|
|
16
|
+
export declare const NO_POWER_NETS: NetValidationEntry[];
|
|
17
|
+
export declare const NO_POWER_INPUT: NetValidationInput;
|
|
18
|
+
export declare const NO_GROUND_NETS: NetValidationEntry[];
|
|
19
|
+
export declare const NO_GROUND_INPUT: NetValidationInput;
|
|
20
|
+
export declare const MISSING_PORT_INTERFACES: InterfaceValidationEntry[];
|
|
21
|
+
export declare const MISSING_PORT_NETS: NetValidationEntry[];
|
|
22
|
+
export declare const MISSING_PORT_INPUT: NetValidationInput;
|
|
23
|
+
/** Nets that avoid U1 so U1 appears unconnected. */
|
|
24
|
+
export declare const UNCONNECTED_DEVICE_NETS: NetValidationEntry[];
|
|
25
|
+
export declare const UNCONNECTED_DEVICES: DeviceValidationEntry[];
|
|
26
|
+
export declare const UNCONNECTED_DEVICE_INPUT: NetValidationInput;
|
|
27
|
+
export declare const CROSS_SHEET_INTERFACES: InterfaceValidationEntry[];
|
|
28
|
+
export declare const MISMATCHED_CROSS_SHEET_INTERFACES: InterfaceValidationEntry[];
|
|
29
|
+
export declare const CROSS_SHEET_INPUT: NetValidationInput;
|
|
30
|
+
export declare const MISMATCHED_CROSS_SHEET_INPUT: NetValidationInput;
|
|
31
|
+
export declare const BAD_POWER_NAME_NETS: NetValidationEntry[];
|
|
32
|
+
export declare const BAD_POWER_NAME_INPUT: NetValidationInput;
|
|
33
|
+
export declare const BAD_GROUND_NAME_NETS: NetValidationEntry[];
|
|
34
|
+
export declare const BAD_GROUND_NAME_INPUT: NetValidationInput;
|
|
35
|
+
export declare const HV_GENERIC_NAME_NETS: NetValidationEntry[];
|
|
36
|
+
export declare const HV_GENERIC_NAME_INPUT: NetValidationInput;
|
|
37
|
+
export declare const HV_MIXED_DOMAIN_NETS: NetValidationEntry[];
|
|
38
|
+
export declare const HV_MIXED_DOMAIN_INPUT: NetValidationInput;
|
|
@@ -0,0 +1,215 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Net validation — sample fixture data for tests.
|
|
3
|
+
*
|
|
4
|
+
* @module
|
|
5
|
+
*/
|
|
6
|
+
// ── Valid design ───────────────────────────────────────────────────────────
|
|
7
|
+
export const VALID_NETS = [
|
|
8
|
+
{
|
|
9
|
+
id: 'net-1',
|
|
10
|
+
name: '3V3',
|
|
11
|
+
type: 'power',
|
|
12
|
+
nodes: [
|
|
13
|
+
{ deviceRef: 'U1', pin: '1' },
|
|
14
|
+
{ deviceRef: 'R1', pin: '1' },
|
|
15
|
+
],
|
|
16
|
+
},
|
|
17
|
+
{
|
|
18
|
+
id: 'net-2',
|
|
19
|
+
name: 'GND',
|
|
20
|
+
type: 'ground',
|
|
21
|
+
nodes: [
|
|
22
|
+
{ deviceRef: 'U1', pin: '2' },
|
|
23
|
+
{ deviceRef: 'R1', pin: '2' },
|
|
24
|
+
{ deviceRef: 'C1', pin: '2' },
|
|
25
|
+
],
|
|
26
|
+
},
|
|
27
|
+
{
|
|
28
|
+
id: 'net-3',
|
|
29
|
+
name: 'I2C_SCL',
|
|
30
|
+
type: 'signal',
|
|
31
|
+
nodes: [
|
|
32
|
+
{ deviceRef: 'U1', pin: '3' },
|
|
33
|
+
{ deviceRef: 'U2', pin: '1' },
|
|
34
|
+
],
|
|
35
|
+
},
|
|
36
|
+
{
|
|
37
|
+
id: 'net-4',
|
|
38
|
+
name: 'I2C_SDA',
|
|
39
|
+
type: 'signal',
|
|
40
|
+
nodes: [
|
|
41
|
+
{ deviceRef: 'U1', pin: '4' },
|
|
42
|
+
{ deviceRef: 'U2', pin: '2' },
|
|
43
|
+
],
|
|
44
|
+
},
|
|
45
|
+
{
|
|
46
|
+
id: 'net-5',
|
|
47
|
+
name: 'nRST',
|
|
48
|
+
type: 'signal',
|
|
49
|
+
nodes: [
|
|
50
|
+
{ deviceRef: 'U1', pin: '5' },
|
|
51
|
+
{ deviceRef: 'U2', pin: '3' },
|
|
52
|
+
],
|
|
53
|
+
},
|
|
54
|
+
{ id: 'net-6', name: 'CLK_32K', type: 'signal', nodes: [{ deviceRef: 'U1', pin: '6' }] },
|
|
55
|
+
];
|
|
56
|
+
export const VALID_DEVICES = [
|
|
57
|
+
{ id: 'U1', ref: 'U1', category: 'microcontroller' },
|
|
58
|
+
{ id: 'U2', ref: 'U2', category: 'sensor' },
|
|
59
|
+
{ id: 'R1', ref: 'R1', category: 'passive' },
|
|
60
|
+
{ id: 'C1', ref: 'C1', category: 'passive' },
|
|
61
|
+
];
|
|
62
|
+
export const VALID_INPUT = {
|
|
63
|
+
nets: VALID_NETS,
|
|
64
|
+
devices: VALID_DEVICES,
|
|
65
|
+
};
|
|
66
|
+
// ── Floating net ───────────────────────────────────────────────────────────
|
|
67
|
+
export const FLOATING_NET = [
|
|
68
|
+
{ id: 'n1', name: '3V3', type: 'power', nodes: [{ deviceRef: 'U1', pin: '1' }] },
|
|
69
|
+
{ id: 'n2', name: 'FLOAT', type: 'signal', nodes: [] }, // ← floating
|
|
70
|
+
{ id: 'n3', name: 'GND', type: 'ground', nodes: [{ deviceRef: 'U1', pin: '2' }] },
|
|
71
|
+
];
|
|
72
|
+
export const FLOATING_INPUT = {
|
|
73
|
+
nets: FLOATING_NET,
|
|
74
|
+
};
|
|
75
|
+
// ── Duplicate name ─────────────────────────────────────────────────────────
|
|
76
|
+
export const DUPLICATE_NAME_NETS = [
|
|
77
|
+
{ id: 'n1', name: '3V3', type: 'power', nodes: [{ deviceRef: 'U1', pin: '1' }] },
|
|
78
|
+
{ id: 'n2', name: '3V3', type: 'power', nodes: [{ deviceRef: 'U2', pin: '1' }] }, // ← duplicate
|
|
79
|
+
{ id: 'n3', name: 'GND', type: 'ground', nodes: [{ deviceRef: 'U1', pin: '2' }] },
|
|
80
|
+
];
|
|
81
|
+
export const DUPLICATE_NAME_INPUT = {
|
|
82
|
+
nets: DUPLICATE_NAME_NETS,
|
|
83
|
+
};
|
|
84
|
+
// ── Accidental short ───────────────────────────────────────────────────────
|
|
85
|
+
export const SHORT_NETS = [
|
|
86
|
+
{ id: 'n1', name: 'NET_A', type: 'signal', nodes: [{ deviceRef: 'U1', pin: '1' }] },
|
|
87
|
+
{ id: 'n2', name: 'NET_B', type: 'signal', nodes: [{ deviceRef: 'U1', pin: '1' }] }, // ← same pin!
|
|
88
|
+
{ id: 'n3', name: 'GND', type: 'ground', nodes: [{ deviceRef: 'U1', pin: '2' }] },
|
|
89
|
+
];
|
|
90
|
+
export const SHORT_INPUT = {
|
|
91
|
+
nets: SHORT_NETS,
|
|
92
|
+
};
|
|
93
|
+
// ── Missing power / ground ─────────────────────────────────────────────────
|
|
94
|
+
export const NO_POWER_NETS = [
|
|
95
|
+
{ id: 'n1', name: 'SIG', type: 'signal', nodes: [{ deviceRef: 'U1', pin: '1' }] },
|
|
96
|
+
{ id: 'n2', name: 'GND', type: 'ground', nodes: [{ deviceRef: 'U1', pin: '2' }] },
|
|
97
|
+
];
|
|
98
|
+
export const NO_POWER_INPUT = { nets: NO_POWER_NETS };
|
|
99
|
+
export const NO_GROUND_NETS = [
|
|
100
|
+
{ id: 'n1', name: '3V3', type: 'power', nodes: [{ deviceRef: 'U1', pin: '1' }] },
|
|
101
|
+
{ id: 'n2', name: 'SIG', type: 'signal', nodes: [{ deviceRef: 'U1', pin: '3' }] },
|
|
102
|
+
];
|
|
103
|
+
export const NO_GROUND_INPUT = { nets: NO_GROUND_NETS };
|
|
104
|
+
// ── Missing hierarchical port ──────────────────────────────────────────────
|
|
105
|
+
export const MISSING_PORT_INTERFACES = [
|
|
106
|
+
{
|
|
107
|
+
id: 'intf-1',
|
|
108
|
+
name: 'EXTERNAL',
|
|
109
|
+
pinout: [
|
|
110
|
+
{ pin: '1', signal: 'EXT_CLK' },
|
|
111
|
+
{ pin: '2', signal: 'EXT_DATA' },
|
|
112
|
+
],
|
|
113
|
+
},
|
|
114
|
+
];
|
|
115
|
+
export const MISSING_PORT_NETS = [
|
|
116
|
+
{ id: 'n1', name: '3V3', type: 'power', nodes: [{ deviceRef: 'U1', pin: '1' }] },
|
|
117
|
+
{ id: 'n2', name: 'GND', type: 'ground', nodes: [{ deviceRef: 'U1', pin: '2' }] },
|
|
118
|
+
];
|
|
119
|
+
export const MISSING_PORT_INPUT = {
|
|
120
|
+
nets: MISSING_PORT_NETS,
|
|
121
|
+
interfaces: MISSING_PORT_INTERFACES,
|
|
122
|
+
};
|
|
123
|
+
// ── Unconnected device ─────────────────────────────────────────────────────
|
|
124
|
+
/** Nets that avoid U1 so U1 appears unconnected. */
|
|
125
|
+
export const UNCONNECTED_DEVICE_NETS = [
|
|
126
|
+
{ id: 'n1', name: '3V3', type: 'power', nodes: [{ deviceRef: 'U2', pin: '1' }] },
|
|
127
|
+
{
|
|
128
|
+
id: 'n2',
|
|
129
|
+
name: 'GND',
|
|
130
|
+
type: 'ground',
|
|
131
|
+
nodes: [
|
|
132
|
+
{ deviceRef: 'U2', pin: '2' },
|
|
133
|
+
{ deviceRef: 'R1', pin: '2' },
|
|
134
|
+
],
|
|
135
|
+
},
|
|
136
|
+
];
|
|
137
|
+
export const UNCONNECTED_DEVICES = [
|
|
138
|
+
{ id: 'R1', ref: 'R1', category: 'passive' },
|
|
139
|
+
{ id: 'U1', ref: 'U1', category: 'microcontroller' }, // ← no pin connections
|
|
140
|
+
];
|
|
141
|
+
export const UNCONNECTED_DEVICE_INPUT = {
|
|
142
|
+
nets: UNCONNECTED_DEVICE_NETS,
|
|
143
|
+
devices: UNCONNECTED_DEVICES,
|
|
144
|
+
};
|
|
145
|
+
// ── Inconsistent cross-sheet interfaces ────────────────────────────────────
|
|
146
|
+
export const CROSS_SHEET_INTERFACES = [
|
|
147
|
+
{
|
|
148
|
+
id: 'sheet1-port',
|
|
149
|
+
name: 'BUS_A',
|
|
150
|
+
pinout: [
|
|
151
|
+
{ pin: '1', signal: 'DATA' },
|
|
152
|
+
{ pin: '2', signal: 'CLK' },
|
|
153
|
+
],
|
|
154
|
+
},
|
|
155
|
+
{
|
|
156
|
+
id: 'sheet2-port',
|
|
157
|
+
name: 'BUS_A',
|
|
158
|
+
pinout: [
|
|
159
|
+
{ pin: '1', signal: 'DATA' },
|
|
160
|
+
{ pin: '2', signal: 'CLK' },
|
|
161
|
+
],
|
|
162
|
+
},
|
|
163
|
+
];
|
|
164
|
+
export const MISMATCHED_CROSS_SHEET_INTERFACES = [
|
|
165
|
+
{
|
|
166
|
+
id: 'sheet1-port',
|
|
167
|
+
name: 'BUS_A',
|
|
168
|
+
pinout: [
|
|
169
|
+
{ pin: '1', signal: 'DATA' },
|
|
170
|
+
{ pin: '2', signal: 'CLK' },
|
|
171
|
+
],
|
|
172
|
+
},
|
|
173
|
+
{
|
|
174
|
+
id: 'sheet2-port',
|
|
175
|
+
name: 'BUS_A',
|
|
176
|
+
pinout: [
|
|
177
|
+
{ pin: '1', signal: 'DATA' },
|
|
178
|
+
{ pin: '2', signal: 'STROBE' },
|
|
179
|
+
],
|
|
180
|
+
}, // ← mismatched
|
|
181
|
+
];
|
|
182
|
+
export const CROSS_SHEET_INPUT = {
|
|
183
|
+
nets: VALID_NETS,
|
|
184
|
+
interfaces: CROSS_SHEET_INTERFACES,
|
|
185
|
+
};
|
|
186
|
+
export const MISMATCHED_CROSS_SHEET_INPUT = {
|
|
187
|
+
nets: VALID_NETS,
|
|
188
|
+
interfaces: MISMATCHED_CROSS_SHEET_INTERFACES,
|
|
189
|
+
};
|
|
190
|
+
// ── Naming convention violations ───────────────────────────────────────────
|
|
191
|
+
export const BAD_POWER_NAME_NETS = [
|
|
192
|
+
{ id: 'n1', name: 'MY_RAIL', type: 'power', nodes: [{ deviceRef: 'U1', pin: '1' }] }, // ← should be like "3V3", "VCC"
|
|
193
|
+
{ id: 'n2', name: 'GND', type: 'ground', nodes: [{ deviceRef: 'U1', pin: '2' }] },
|
|
194
|
+
];
|
|
195
|
+
export const BAD_POWER_NAME_INPUT = { nets: BAD_POWER_NAME_NETS };
|
|
196
|
+
export const BAD_GROUND_NAME_NETS = [
|
|
197
|
+
{ id: 'n1', name: '3V3', type: 'power', nodes: [{ deviceRef: 'U1', pin: '1' }] },
|
|
198
|
+
{ id: 'n2', name: 'RET', type: 'ground', nodes: [{ deviceRef: 'U1', pin: '2' }] }, // ← non-standard ground name
|
|
199
|
+
];
|
|
200
|
+
export const BAD_GROUND_NAME_INPUT = { nets: BAD_GROUND_NAME_NETS };
|
|
201
|
+
// ── Protected domain violations ────────────────────────────────────────────
|
|
202
|
+
export const HV_GENERIC_NAME_NETS = [
|
|
203
|
+
{ id: 'n1', name: '3V3', type: 'power', nodes: [{ deviceRef: 'U1', pin: '1' }] },
|
|
204
|
+
{ id: 'n2', name: 'GND', type: 'ground', nodes: [{ deviceRef: 'U1', pin: '2' }] },
|
|
205
|
+
{ id: 'n3', name: 'L', type: 'signal', nodes: [{ deviceRef: 'U1', pin: '3' }] }, // ← 'L' alone is a generic name in HV context
|
|
206
|
+
];
|
|
207
|
+
export const HV_GENERIC_NAME_INPUT = { nets: HV_GENERIC_NAME_NETS };
|
|
208
|
+
// ── Mixed HV+digital domain ────────────────────────────────────────────────
|
|
209
|
+
export const HV_MIXED_DOMAIN_NETS = [
|
|
210
|
+
{ id: 'n1', name: '3V3', type: 'power', nodes: [{ deviceRef: 'U1', pin: '1' }] },
|
|
211
|
+
{ id: 'n2', name: 'GND', type: 'ground', nodes: [{ deviceRef: 'U1', pin: '2' }] },
|
|
212
|
+
{ id: 'n3', name: 'HV_CLK', type: 'signal', nodes: [{ deviceRef: 'U1', pin: '3' }] }, // ← HV + CLK = mixed domain (safety hazard)
|
|
213
|
+
];
|
|
214
|
+
export const HV_MIXED_DOMAIN_INPUT = { nets: HV_MIXED_DOMAIN_NETS };
|
|
215
|
+
//# sourceMappingURL=fixtures.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fixtures.js","sourceRoot":"","sources":["../../src/net-validation/fixtures.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Net validation — public API barrel.
|
|
3
|
+
*
|
|
4
|
+
* @module
|
|
5
|
+
*/
|
|
6
|
+
export { NetValidationCode, netValidationIssue, netError, netWarning } from './errors.js';
|
|
7
|
+
export type { NetValidationCode as NetValidationCodeType, NetValidationIssue, NetValidationResult, } from './errors.js';
|
|
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';
|
|
10
|
+
export { validateNets, validateNetsOrThrow } from './validation.js';
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Net validation — public API barrel.
|
|
3
|
+
*
|
|
4
|
+
* @module
|
|
5
|
+
*/
|
|
6
|
+
export { NetValidationCode, netValidationIssue, netError, netWarning } from './errors.js';
|
|
7
|
+
export { NetDomain, NET_DOMAIN_PATTERNS, NET_TYPE_EXPECTED_DOMAIN, RESERVED_NET_NAMES, REQUIRED_POWER_NETS, REQUIRED_GROUND_NETS, } from './schema.js';
|
|
8
|
+
export { validateNets, validateNetsOrThrow } from './validation.js';
|
|
9
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +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;AAQrB,OAAO,EAAE,YAAY,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC"}
|
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Net validation — schema types and naming convention definitions.
|
|
3
|
+
*
|
|
4
|
+
* Defines the input contract for net validation functions and the
|
|
5
|
+
* convention sets used to classify net names into analog, digital,
|
|
6
|
+
* power, ground, and high-voltage domains.
|
|
7
|
+
*
|
|
8
|
+
* @module
|
|
9
|
+
*/
|
|
10
|
+
/**
|
|
11
|
+
* Electrical domain inferred from a net name.
|
|
12
|
+
*
|
|
13
|
+
* Used by naming-convention rules to detect misclassifications
|
|
14
|
+
* (e.g. an analog signal connected to a digital rail).
|
|
15
|
+
*/
|
|
16
|
+
export declare enum NetDomain {
|
|
17
|
+
/** General-purpose analogue signal (e.g. "SENSE", "FB", "VREF"). */
|
|
18
|
+
Analog = "analog",
|
|
19
|
+
/** Digital signal, bus, or protocol (e.g. "I2C_SCL", "UART_TXD"). */
|
|
20
|
+
Digital = "digital",
|
|
21
|
+
/** Power rail or voltage supply (e.g. "3V3", "VIN", "VCC"). */
|
|
22
|
+
Power = "power",
|
|
23
|
+
/** Ground or return (e.g. "GND", "AGND", "DGND", "PGND"). */
|
|
24
|
+
Ground = "ground",
|
|
25
|
+
/** AC mains or high-voltage domain (e.g. "L", "N", "HV_BULK"). */
|
|
26
|
+
HighVoltage = "high-voltage",
|
|
27
|
+
/** Clock or timing signal (e.g. "CLK_32K", "MCO"). */
|
|
28
|
+
Clock = "clock",
|
|
29
|
+
/** Reset or control signal (e.g. "nRST", "EN", "PWR_ON"). */
|
|
30
|
+
Control = "control",
|
|
31
|
+
/** Unclassified or custom. */
|
|
32
|
+
Other = "other"
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Naming convention pattern sets used to classify a net name into a domain.
|
|
36
|
+
*
|
|
37
|
+
* Each entry is a list of **case-insensitive** substrings / regex patterns
|
|
38
|
+
* that, when matched against a net name, assign it to the corresponding
|
|
39
|
+
* {@link NetDomain}.
|
|
40
|
+
*/
|
|
41
|
+
export declare const NET_DOMAIN_PATTERNS: Record<Exclude<NetDomain, NetDomain.Other>, RegExp[]>;
|
|
42
|
+
/**
|
|
43
|
+
* Net names that are reserved for specific purposes and should not be
|
|
44
|
+
* reassigned to other signal types.
|
|
45
|
+
*/
|
|
46
|
+
export declare const RESERVED_NET_NAMES: Set<string>;
|
|
47
|
+
/**
|
|
48
|
+
* Minimum set of power nets that a complete design should contain
|
|
49
|
+
* (case-insensitive matching).
|
|
50
|
+
*/
|
|
51
|
+
export declare const REQUIRED_POWER_NETS: Set<string>;
|
|
52
|
+
/**
|
|
53
|
+
* Minimum set of ground nets that a complete design should contain.
|
|
54
|
+
*/
|
|
55
|
+
export declare const REQUIRED_GROUND_NETS: Set<string>;
|
|
56
|
+
/**
|
|
57
|
+
* Map from NetType to expected naming convention domain.
|
|
58
|
+
* A net with a given NetType should have a name matching the
|
|
59
|
+
* corresponding domain(s).
|
|
60
|
+
*/
|
|
61
|
+
export declare const NET_TYPE_EXPECTED_DOMAIN: Record<string, NetDomain[]>;
|
|
62
|
+
/**
|
|
63
|
+
* A minimal net representation for validation purposes.
|
|
64
|
+
*
|
|
65
|
+
* This is intentionally decoupled from the full CircuitIR NetSchema
|
|
66
|
+
* so that validation can operate on net data from any source
|
|
67
|
+
* (CircuitIR, EasyEDA bridge, hand-authored test data).
|
|
68
|
+
*/
|
|
69
|
+
export interface NetValidationEntry {
|
|
70
|
+
/** Unique net identifier. */
|
|
71
|
+
id: string;
|
|
72
|
+
/** Human-readable net name (e.g. "3V3", "I2C_SCL", "GND"). */
|
|
73
|
+
name: string;
|
|
74
|
+
/** Net type classification. */
|
|
75
|
+
type: 'power' | 'signal' | 'ground';
|
|
76
|
+
/** Connected device pins, may be empty for floating nets. */
|
|
77
|
+
nodes: Array<{
|
|
78
|
+
deviceRef: string;
|
|
79
|
+
pin: string;
|
|
80
|
+
}>;
|
|
81
|
+
}
|
|
82
|
+
/**
|
|
83
|
+
* A minimal device representation for validation.
|
|
84
|
+
*/
|
|
85
|
+
export interface DeviceValidationEntry {
|
|
86
|
+
/** Device identifier (matches deviceRef in net nodes). */
|
|
87
|
+
id: string;
|
|
88
|
+
/** Reference designator (e.g. "U1", "R3"). */
|
|
89
|
+
ref: string;
|
|
90
|
+
/** Functional category for determining required pins. */
|
|
91
|
+
category?: string;
|
|
92
|
+
}
|
|
93
|
+
/**
|
|
94
|
+
* A hierarchical port / interface for cross-sheet validation.
|
|
95
|
+
*/
|
|
96
|
+
export interface InterfaceValidationEntry {
|
|
97
|
+
/** Interface identifier. */
|
|
98
|
+
id: string;
|
|
99
|
+
/** Interface / port name. */
|
|
100
|
+
name: string;
|
|
101
|
+
/** Pins on this interface. */
|
|
102
|
+
pinout: Array<{
|
|
103
|
+
pin: string;
|
|
104
|
+
signal: string;
|
|
105
|
+
type?: string;
|
|
106
|
+
}>;
|
|
107
|
+
}
|
|
108
|
+
/**
|
|
109
|
+
* Complete input to the net validation function.
|
|
110
|
+
*/
|
|
111
|
+
export interface NetValidationInput {
|
|
112
|
+
/** Nets to validate. */
|
|
113
|
+
nets: NetValidationEntry[];
|
|
114
|
+
/** Optional device list for unconnected-pin checks. */
|
|
115
|
+
devices?: DeviceValidationEntry[];
|
|
116
|
+
/** Optional interface list for cross-sheet checks. */
|
|
117
|
+
interfaces?: InterfaceValidationEntry[];
|
|
118
|
+
}
|