@huaqiu/dsh-hqsch 0.4.8
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/LICENSE +21 -0
- package/README.md +43 -0
- package/cordis.patch.yml +13 -0
- package/lib/index.d.mts +98 -0
- package/lib/index.mjs +159 -0
- package/package.json +40 -0
- package/skills/hqsch-scenario-b/AGENTS.md +209 -0
- package/skills/hqsch-scenario-b/CLAUDE.md +209 -0
- package/skills/hqsch-scenario-b/INSTALL.md +140 -0
- package/skills/hqsch-scenario-b/SKILL.md +107 -0
- package/skills/hqsch-scenario-b/SYSTEM-PROMPT.md +209 -0
- package/skills/hqsch-scenario-b/docs/circuit-pattern-layout.md +304 -0
- package/skills/hqsch-scenario-b/docs/editing-a-circuit.md +167 -0
- package/skills/hqsch-scenario-b/docs/part-search.md +244 -0
- package/skills/hqsch-scenario-b/docs/placement-conventions.md +714 -0
- package/skills/hqsch-scenario-b/docs/property-conventions.md +225 -0
- package/skills/hqsch-scenario-b/docs/quickstart.md +99 -0
- package/skills/hqsch-scenario-b/docs/reading-a-circuit.md +317 -0
- package/skills/hqsch-scenario-b/docs/rpc/canvas-auto-connect-objects-by-id.md +98 -0
- package/skills/hqsch-scenario-b/docs/rpc/canvas-delete-objects-by-ids.md +94 -0
- package/skills/hqsch-scenario-b/docs/rpc/canvas-find-object-by-property.md +101 -0
- package/skills/hqsch-scenario-b/docs/rpc/canvas-list-wire-segments.md +94 -0
- package/skills/hqsch-scenario-b/docs/rpc/canvas-mirror-objects-by-ids.md +96 -0
- package/skills/hqsch-scenario-b/docs/rpc/canvas-rotate-objects-by-ids.md +94 -0
- package/skills/hqsch-scenario-b/docs/rpc/canvas-set-object-property.md +99 -0
- package/skills/hqsch-scenario-b/docs/rpc/canvas-zoom-all.md +92 -0
- package/skills/hqsch-scenario-b/docs/rpc/find-find-object.md +96 -0
- package/skills/hqsch-scenario-b/docs/rpc/kernel-get-snapshot.md +104 -0
- package/skills/hqsch-scenario-b/docs/rpc/netlist-get-active-page-net-list.md +87 -0
- package/skills/hqsch-scenario-b/docs/rpc/netlist-get-port-pairing.md +34 -0
- package/skills/hqsch-scenario-b/docs/rpc/obj-place-place-pin-stub-wire-and-net-alias.md +114 -0
- package/skills/hqsch-scenario-b/docs/rpc/pattern-layout-apply-circuit-pattern.md +125 -0
- package/skills/hqsch-scenario-b/docs/rpc/pattern-layout-get-page-occupancy.md +100 -0
- package/skills/hqsch-scenario-b/docs/rpc/pattern-layout-list-circuit-patterns.md +97 -0
- package/skills/hqsch-scenario-b/docs/rpc/placement-list-part-libraries.md +94 -0
- package/skills/hqsch-scenario-b/docs/rpc/placement-list-symbol-libraries.md +94 -0
- package/skills/hqsch-scenario-b/docs/rpc/placement-place-kicad-symbol.md +105 -0
- package/skills/hqsch-scenario-b/docs/rpc/placement-place-part-from-library.md +106 -0
- package/skills/hqsch-scenario-b/docs/rpc/placement-place-symbol-from-library.md +108 -0
- package/skills/hqsch-scenario-b/docs/rpc/project-get-active-project.md +96 -0
- package/skills/hqsch-scenario-b/docs/rpc/project-list-open-projects.md +99 -0
- package/skills/hqsch-scenario-b/docs/rpc-availability.md +97 -0
- package/skills/hqsch-scenario-b/docs/rpc-index/canvas.md +81 -0
- package/skills/hqsch-scenario-b/docs/rpc-index/find.md +36 -0
- package/skills/hqsch-scenario-b/docs/rpc-index/kernel.md +36 -0
- package/skills/hqsch-scenario-b/docs/rpc-index/netlist.md +38 -0
- package/skills/hqsch-scenario-b/docs/rpc-index/obj-place.md +76 -0
- package/skills/hqsch-scenario-b/docs/rpc-index/pattern-layout.md +38 -0
- package/skills/hqsch-scenario-b/docs/rpc-index/placement.md +48 -0
- package/skills/hqsch-scenario-b/docs/rpc-index/project.md +47 -0
- package/skills/hqsch-scenario-b/docs/serialization.md +60 -0
- package/skills/hqsch-scenario-b/docs/skill-dependencies.md +93 -0
- package/skills/hqsch-scenario-b/skill.json +13 -0
- package/skills/hqsch-scenario-b/template/package.json +16 -0
- package/skills/hqsch-scenario-b/template/scripts/edit-property-by-ref.ts +44 -0
- package/skills/hqsch-scenario-b/template/scripts/fix-designators.ts +52 -0
- package/skills/hqsch-scenario-b/template/scripts/hello.ts +46 -0
- package/skills/hqsch-scenario-b/template/scripts/read-circuit.ts +357 -0
- package/skills/hqsch-scenario-b/template/scripts/replace-part-by-ref.ts +44 -0
- package/skills/hqsch-scenario-b/template/scripts/rewire-pin-by-ref.ts +42 -0
- package/skills/hqsch-scenario-b/template/tsconfig.json +11 -0
- package/src/config.ts +25 -0
- package/src/index.ts +186 -0
- package/src/paths.ts +48 -0
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: canvas-zoom-all
|
|
3
|
+
metadata:
|
|
4
|
+
category: canvas
|
|
5
|
+
service: CanvasOpsService
|
|
6
|
+
method: ZoomAll
|
|
7
|
+
rpcKind: unary
|
|
8
|
+
description: >-
|
|
9
|
+
Zoom All via CanvasOpsService.ZoomAll
|
|
10
|
+
version: 0.1.0
|
|
11
|
+
vendor: Huaqiu Electronics
|
|
12
|
+
tags:
|
|
13
|
+
- eda
|
|
14
|
+
- huaqiu
|
|
15
|
+
- canvas
|
|
16
|
+
entry: "@huaqiu/hqeda"
|
|
17
|
+
manifest: "@huaqiu/hqeda/skill.json"
|
|
18
|
+
inputSchema:
|
|
19
|
+
name: CanvasContextRequestSchema
|
|
20
|
+
namespace: HqServicesV1CanvasOpsService
|
|
21
|
+
---
|
|
22
|
+
|
|
23
|
+
# Zoom All
|
|
24
|
+
|
|
25
|
+
Zoom All via CanvasOpsService.ZoomAll
|
|
26
|
+
|
|
27
|
+
## Overview
|
|
28
|
+
|
|
29
|
+
This skill provides access to the **`CanvasOpsService.ZoomAll`** RPC method on the Huaqiu EDA engine. It is part of the **canvas** domain and executes against the `canvasOps` client.
|
|
30
|
+
|
|
31
|
+
| Property | Value |
|
|
32
|
+
| --- | --- |
|
|
33
|
+
| Skill ID | `canvas-zoom-all` |
|
|
34
|
+
| Service | `CanvasOpsService` |
|
|
35
|
+
| Method | `ZoomAll` |
|
|
36
|
+
| Transport | Unary (unary) |
|
|
37
|
+
| Domain | canvas |
|
|
38
|
+
| Request type | `CanvasContextRequest` |
|
|
39
|
+
| Response type | `SuccessResponse` |
|
|
40
|
+
|
|
41
|
+
## Parameters
|
|
42
|
+
|
|
43
|
+
| Name | Type | Required | Repeated | Description |
|
|
44
|
+
| --- | --- | --- | --- | --- |
|
|
45
|
+
| `context` | `ProjectContext` | no | no | — |
|
|
46
|
+
|
|
47
|
+
## Response
|
|
48
|
+
|
|
49
|
+
Returns a `SuccessResponse` message with the following fields:
|
|
50
|
+
|
|
51
|
+
| Name | Type | Repeated | Description |
|
|
52
|
+
| --- | --- | --- | --- |
|
|
53
|
+
| `success` | `boolean` | no | — |
|
|
54
|
+
|
|
55
|
+
## Response Example
|
|
56
|
+
|
|
57
|
+
Representative response structure (field values are placeholders):
|
|
58
|
+
|
|
59
|
+
```json
|
|
60
|
+
{
|
|
61
|
+
"success": false
|
|
62
|
+
}
|
|
63
|
+
```
|
|
64
|
+
|
|
65
|
+
## Prerequisites
|
|
66
|
+
|
|
67
|
+
- [project-get-active-project](../../project/get-active-project/SKILL.md) — Discover the active project before building project-scoped context.
|
|
68
|
+
|
|
69
|
+
See also [skill-dependencies.md](../../references/skill-dependencies.md) for common workflows.
|
|
70
|
+
|
|
71
|
+
## How to Use
|
|
72
|
+
|
|
73
|
+
Execute via the HQ EDA skill runtime with a connected `EditorClient`. See [quickstart.md](../../references/quickstart.md) for the full `listEditors` → `connect` → `getSkill` → `execute` chain.
|
|
74
|
+
|
|
75
|
+
```typescript
|
|
76
|
+
import { getSkill, toJsonString } from "@huaqiu/hqeda";
|
|
77
|
+
|
|
78
|
+
const skill = getSkill("canvas-zoom-all");
|
|
79
|
+
const result = await skill.execute({ client }, {
|
|
80
|
+
context: "<ProjectContext via client.createProjectContext('my-project')>",
|
|
81
|
+
});
|
|
82
|
+
console.log(toJsonString(result, { prettySpaces: 2 }));
|
|
83
|
+
```
|
|
84
|
+
|
|
85
|
+
Serialize responses with `toJsonString()` — see [serialization.md](../../references/serialization.md).
|
|
86
|
+
|
|
87
|
+
## Related Skills
|
|
88
|
+
|
|
89
|
+
- Other **canvas** skills: [`canvas/`](../)
|
|
90
|
+
- Full index: [All EDA skills](../../SKILL.md)
|
|
91
|
+
- Install: `npx skills add Huaqiu-Electronics/skills --path eda/canvas/zoom-all`
|
|
92
|
+
|
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: find-find-object
|
|
3
|
+
metadata:
|
|
4
|
+
category: find
|
|
5
|
+
service: FindService
|
|
6
|
+
method: FindObject
|
|
7
|
+
rpcKind: unary
|
|
8
|
+
description: >-
|
|
9
|
+
Find Object via FindService.FindObject
|
|
10
|
+
version: 0.1.0
|
|
11
|
+
vendor: Huaqiu Electronics
|
|
12
|
+
tags:
|
|
13
|
+
- eda
|
|
14
|
+
- huaqiu
|
|
15
|
+
- find
|
|
16
|
+
entry: "@huaqiu/hqeda"
|
|
17
|
+
manifest: "@huaqiu/hqeda/skill.json"
|
|
18
|
+
inputSchema:
|
|
19
|
+
name: FindObjectRequestSchema
|
|
20
|
+
namespace: HqServicesV1FindService
|
|
21
|
+
---
|
|
22
|
+
|
|
23
|
+
# Find Object
|
|
24
|
+
|
|
25
|
+
Find Object via FindService.FindObject
|
|
26
|
+
|
|
27
|
+
## Overview
|
|
28
|
+
|
|
29
|
+
This skill provides access to the **`FindService.FindObject`** RPC method on the Huaqiu EDA engine. It is part of the **find** domain and executes against the `find` client.
|
|
30
|
+
|
|
31
|
+
| Property | Value |
|
|
32
|
+
| --- | --- |
|
|
33
|
+
| Skill ID | `find-find-object` |
|
|
34
|
+
| Service | `FindService` |
|
|
35
|
+
| Method | `FindObject` |
|
|
36
|
+
| Transport | Unary (unary) |
|
|
37
|
+
| Domain | find |
|
|
38
|
+
| Request type | `FindObjectRequest` |
|
|
39
|
+
| Response type | `FindObjectResponse` |
|
|
40
|
+
|
|
41
|
+
## Parameters
|
|
42
|
+
|
|
43
|
+
| Name | Type | Required | Repeated | Description |
|
|
44
|
+
| --- | --- | --- | --- | --- |
|
|
45
|
+
| `context` | `EditorContext` | no | no | — |
|
|
46
|
+
| `findOptionUrl` | `string` | yes | no | — |
|
|
47
|
+
| `showDock` | `boolean` | yes | no | — |
|
|
48
|
+
|
|
49
|
+
## Response
|
|
50
|
+
|
|
51
|
+
Returns a `FindObjectResponse` message with the following fields:
|
|
52
|
+
|
|
53
|
+
| Name | Type | Repeated | Description |
|
|
54
|
+
| --- | --- | --- | --- |
|
|
55
|
+
| `success` | `boolean` | no | — |
|
|
56
|
+
|
|
57
|
+
## Response Example
|
|
58
|
+
|
|
59
|
+
Representative response structure (field values are placeholders):
|
|
60
|
+
|
|
61
|
+
```json
|
|
62
|
+
{
|
|
63
|
+
"success": false
|
|
64
|
+
}
|
|
65
|
+
```
|
|
66
|
+
|
|
67
|
+
## Prerequisites
|
|
68
|
+
|
|
69
|
+
- [project-get-active-project](../../project/get-active-project/SKILL.md) — Discover the active project before building project-scoped context.
|
|
70
|
+
|
|
71
|
+
See also [skill-dependencies.md](../../references/skill-dependencies.md) for common workflows.
|
|
72
|
+
|
|
73
|
+
## How to Use
|
|
74
|
+
|
|
75
|
+
Execute via the HQ EDA skill runtime with a connected `EditorClient`. See [quickstart.md](../../references/quickstart.md) for the full `listEditors` → `connect` → `getSkill` → `execute` chain.
|
|
76
|
+
|
|
77
|
+
```typescript
|
|
78
|
+
import { getSkill, toJsonString } from "@huaqiu/hqeda";
|
|
79
|
+
|
|
80
|
+
const skill = getSkill("find-find-object");
|
|
81
|
+
const result = await skill.execute({ client }, {
|
|
82
|
+
context: "<ProjectContext via client.createProjectContext('my-project')>",
|
|
83
|
+
findOptionUrl: "example",
|
|
84
|
+
showDock: false,
|
|
85
|
+
});
|
|
86
|
+
console.log(toJsonString(result, { prettySpaces: 2 }));
|
|
87
|
+
```
|
|
88
|
+
|
|
89
|
+
Serialize responses with `toJsonString()` — see [serialization.md](../../references/serialization.md).
|
|
90
|
+
|
|
91
|
+
## Related Skills
|
|
92
|
+
|
|
93
|
+
- Other **find** skills: [`find/`](../)
|
|
94
|
+
- Full index: [All EDA skills](../../SKILL.md)
|
|
95
|
+
- Install: `npx skills add Huaqiu-Electronics/skills --path eda/find/find-object`
|
|
96
|
+
|
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: kernel-get-snapshot
|
|
3
|
+
metadata:
|
|
4
|
+
category: kernel
|
|
5
|
+
service: KernelService
|
|
6
|
+
method: GetSnapshot
|
|
7
|
+
rpcKind: unary
|
|
8
|
+
description: >-
|
|
9
|
+
Get Snapshot via KernelService.GetSnapshot
|
|
10
|
+
version: 0.1.0
|
|
11
|
+
vendor: Huaqiu Electronics
|
|
12
|
+
tags:
|
|
13
|
+
- eda
|
|
14
|
+
- huaqiu
|
|
15
|
+
- kernel
|
|
16
|
+
entry: "@huaqiu/hqeda"
|
|
17
|
+
manifest: "@huaqiu/hqeda/skill.json"
|
|
18
|
+
inputSchema:
|
|
19
|
+
name: GetSnapshotRequestSchema
|
|
20
|
+
namespace: HqServicesV1KernelService
|
|
21
|
+
---
|
|
22
|
+
|
|
23
|
+
# Get Snapshot
|
|
24
|
+
|
|
25
|
+
Get Snapshot via KernelService.GetSnapshot
|
|
26
|
+
|
|
27
|
+
## Overview
|
|
28
|
+
|
|
29
|
+
This skill provides access to the **`KernelService.GetSnapshot`** RPC method on the Huaqiu EDA engine. It is part of the **kernel** domain and executes against the `kernel` client.
|
|
30
|
+
|
|
31
|
+
| Property | Value |
|
|
32
|
+
| --- | --- |
|
|
33
|
+
| Skill ID | `kernel-get-snapshot` |
|
|
34
|
+
| Service | `KernelService` |
|
|
35
|
+
| Method | `GetSnapshot` |
|
|
36
|
+
| Transport | Unary (unary) |
|
|
37
|
+
| Domain | kernel |
|
|
38
|
+
| Request type | `GetSnapshotRequest` |
|
|
39
|
+
| Response type | `GetSnapshotResponse` |
|
|
40
|
+
|
|
41
|
+
## Parameters
|
|
42
|
+
|
|
43
|
+
| Name | Type | Required | Repeated | Description |
|
|
44
|
+
| --- | --- | --- | --- | --- |
|
|
45
|
+
| `context` | `ProjectContext` | no | no | — |
|
|
46
|
+
| `atRevision` | `bigint` | yes | no | — |
|
|
47
|
+
|
|
48
|
+
## Response
|
|
49
|
+
|
|
50
|
+
Returns a `GetSnapshotResponse` message with the following fields:
|
|
51
|
+
|
|
52
|
+
| Name | Type | Repeated | Description |
|
|
53
|
+
| --- | --- | --- | --- |
|
|
54
|
+
| `snapshot` | `KernelSnapshot` | no | — |
|
|
55
|
+
|
|
56
|
+
## Usage Examples
|
|
57
|
+
|
|
58
|
+
### get kernel snapshot for a discovered project
|
|
59
|
+
|
|
60
|
+
```json
|
|
61
|
+
{
|
|
62
|
+
"context": "<ProjectContext via client.createProjectContext('my-project')>"
|
|
63
|
+
}
|
|
64
|
+
```
|
|
65
|
+
|
|
66
|
+
## Response Example
|
|
67
|
+
|
|
68
|
+
Representative response structure (field values are placeholders):
|
|
69
|
+
|
|
70
|
+
```json
|
|
71
|
+
{
|
|
72
|
+
"snapshot": {}
|
|
73
|
+
}
|
|
74
|
+
```
|
|
75
|
+
|
|
76
|
+
## Prerequisites
|
|
77
|
+
|
|
78
|
+
- [project-get-active-project](../../project/get-active-project/SKILL.md) — Discover the active project before building project-scoped context.
|
|
79
|
+
|
|
80
|
+
See also [skill-dependencies.md](../../references/skill-dependencies.md) for common workflows.
|
|
81
|
+
|
|
82
|
+
## How to Use
|
|
83
|
+
|
|
84
|
+
Execute via the HQ EDA skill runtime with a connected `EditorClient`. See [quickstart.md](../../references/quickstart.md) for the full `listEditors` → `connect` → `getSkill` → `execute` chain.
|
|
85
|
+
|
|
86
|
+
```typescript
|
|
87
|
+
import { getSkill, toJsonString } from "@huaqiu/hqeda";
|
|
88
|
+
|
|
89
|
+
const skill = getSkill("kernel-get-snapshot");
|
|
90
|
+
const result = await skill.execute({ client }, {
|
|
91
|
+
context: "<ProjectContext via client.createProjectContext('my-project')>",
|
|
92
|
+
atRevision: "0",
|
|
93
|
+
});
|
|
94
|
+
console.log(toJsonString(result, { prettySpaces: 2 }));
|
|
95
|
+
```
|
|
96
|
+
|
|
97
|
+
Serialize responses with `toJsonString()` — see [serialization.md](../../references/serialization.md).
|
|
98
|
+
|
|
99
|
+
## Related Skills
|
|
100
|
+
|
|
101
|
+
- Other **kernel** skills: [`kernel/`](../)
|
|
102
|
+
- Full index: [All EDA skills](../../SKILL.md)
|
|
103
|
+
- Install: `npx skills add Huaqiu-Electronics/skills --path eda/kernel/get-snapshot`
|
|
104
|
+
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: netlist-get-active-page-net-list
|
|
3
|
+
metadata:
|
|
4
|
+
category: netlist
|
|
5
|
+
service: NetListService
|
|
6
|
+
method: GetActivePageNetList
|
|
7
|
+
rpcKind: unary
|
|
8
|
+
description: >-
|
|
9
|
+
/ Gets the netlist for the currently active schematic page (real-time canvas state).
|
|
10
|
+
version: 0.1.0
|
|
11
|
+
vendor: Huaqiu Electronics
|
|
12
|
+
tags:
|
|
13
|
+
- eda
|
|
14
|
+
- huaqiu
|
|
15
|
+
- netlist
|
|
16
|
+
entry: "@huaqiu/hqeda"
|
|
17
|
+
manifest: "@huaqiu/hqeda/skill.json"
|
|
18
|
+
inputSchema:
|
|
19
|
+
name: EmptySchema
|
|
20
|
+
namespace: ProtobufWkt
|
|
21
|
+
---
|
|
22
|
+
|
|
23
|
+
# Get Active Page Net List
|
|
24
|
+
|
|
25
|
+
/ Gets the netlist for the currently active schematic page (real-time canvas state).
|
|
26
|
+
|
|
27
|
+
## Overview
|
|
28
|
+
|
|
29
|
+
This skill provides access to the **`NetListService.GetActivePageNetList`** RPC method on the Huaqiu EDA engine. It is part of the **netlist** domain and executes against the `netList` client.
|
|
30
|
+
|
|
31
|
+
| Property | Value |
|
|
32
|
+
| --- | --- |
|
|
33
|
+
| Skill ID | `netlist-get-active-page-net-list` |
|
|
34
|
+
| Service | `NetListService` |
|
|
35
|
+
| Method | `GetActivePageNetList` |
|
|
36
|
+
| Transport | Unary (unary) |
|
|
37
|
+
| Domain | netlist |
|
|
38
|
+
| Request type | `Empty` |
|
|
39
|
+
| Response type | `GetNetListResponse` |
|
|
40
|
+
|
|
41
|
+
## Response
|
|
42
|
+
|
|
43
|
+
Returns a `GetNetListResponse` message with the following fields:
|
|
44
|
+
|
|
45
|
+
| Name | Type | Repeated | Description |
|
|
46
|
+
| --- | --- | --- | --- |
|
|
47
|
+
| `result` | `{
|
|
48
|
+
/**
|
|
49
|
+
* / Schematic netlist data.
|
|
50
|
+
*
|
|
51
|
+
* @generated from field: hq.ir.schematic.v1.SchematicNetlist netlist = 1;
|
|
52
|
+
*/
|
|
53
|
+
value: SchematicNetlist;
|
|
54
|
+
case: "netlist";
|
|
55
|
+
}` | no | — |
|
|
56
|
+
|
|
57
|
+
## Response Example
|
|
58
|
+
|
|
59
|
+
Representative response structure (field values are placeholders):
|
|
60
|
+
|
|
61
|
+
```json
|
|
62
|
+
{
|
|
63
|
+
"result": {}
|
|
64
|
+
}
|
|
65
|
+
```
|
|
66
|
+
|
|
67
|
+
## How to Use
|
|
68
|
+
|
|
69
|
+
Execute via the HQ EDA skill runtime with a connected `EditorClient`. See [quickstart.md](../../references/quickstart.md) for the full `listEditors` → `connect` → `getSkill` → `execute` chain.
|
|
70
|
+
|
|
71
|
+
```typescript
|
|
72
|
+
import { getSkill, toJsonString } from "@huaqiu/hqeda";
|
|
73
|
+
|
|
74
|
+
const skill = getSkill("netlist-get-active-page-net-list");
|
|
75
|
+
const result = await skill.execute({ client }, {
|
|
76
|
+
});
|
|
77
|
+
console.log(toJsonString(result, { prettySpaces: 2 }));
|
|
78
|
+
```
|
|
79
|
+
|
|
80
|
+
Serialize responses with `toJsonString()` — see [serialization.md](../../references/serialization.md).
|
|
81
|
+
|
|
82
|
+
## Related Skills
|
|
83
|
+
|
|
84
|
+
- Other **netlist** skills: [`netlist/`](../)
|
|
85
|
+
- Full index: [All EDA skills](../../SKILL.md)
|
|
86
|
+
- Install: `npx skills add Huaqiu-Electronics/skills --path eda/netlist/get-active-page-net-list`
|
|
87
|
+
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: netlist-get-port-pairing
|
|
3
|
+
metadata:
|
|
4
|
+
category: netlist
|
|
5
|
+
service: NetListService
|
|
6
|
+
method: GetPortPairing
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
# netList.GetPortPairing
|
|
10
|
+
|
|
11
|
+
Returns every cross-page / cross-occurrence Port and Off-page pairing that
|
|
12
|
+
`VxPstxnetNew::ReadFromDesign` has already merged onto the same design net.
|
|
13
|
+
|
|
14
|
+
## Why
|
|
15
|
+
|
|
16
|
+
`GetProjectNetList` only exposes pin↔net. Agents cannot see that `/TYPE-C`
|
|
17
|
+
`USB_D+` and `/ESP32-C3FH4` `GPIO18` are the same net without guessing.
|
|
18
|
+
This RPC exposes the pairing and the merge rule.
|
|
19
|
+
|
|
20
|
+
## Call
|
|
21
|
+
|
|
22
|
+
```typescript
|
|
23
|
+
const res = await client.netList.getPortPairing({});
|
|
24
|
+
```
|
|
25
|
+
|
|
26
|
+
## Rules (from net connectivity + ReadFromDesign)
|
|
27
|
+
|
|
28
|
+
| Rule | Source | When |
|
|
29
|
+
| --- | --- | --- |
|
|
30
|
+
| `BY_NAME` | MergePageNet | Same Off-page / Port name within schematic folder |
|
|
31
|
+
| `BY_HIERARCHY` | ConnectBlockPinAndPort | Parent block pin = `occPath_portName`; parent wires can join different child port names |
|
|
32
|
+
| `BY_GLOBAL` | MergeDesignNet | Design-wide Power / Global name intersection |
|
|
33
|
+
|
|
34
|
+
There is **no byGuid** rule.
|
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: obj-place-place-pin-stub-wire-and-net-alias
|
|
3
|
+
metadata:
|
|
4
|
+
category: obj-place
|
|
5
|
+
service: ObjPlaceService
|
|
6
|
+
method: PlacePinStubWireAndNetAlias
|
|
7
|
+
rpcKind: unary
|
|
8
|
+
description: >-
|
|
9
|
+
Pin stub wire + net alias: detect existing wire, extend stub with collision avoidance, place alias; single undo step.
|
|
10
|
+
version: 0.1.0
|
|
11
|
+
vendor: Huaqiu Electronics
|
|
12
|
+
tags:
|
|
13
|
+
- eda
|
|
14
|
+
- huaqiu
|
|
15
|
+
- obj-place
|
|
16
|
+
entry: "@huaqiu/hqeda"
|
|
17
|
+
manifest: "@huaqiu/hqeda/skill.json"
|
|
18
|
+
inputSchema:
|
|
19
|
+
name: PlacePinStubWireAndNetAliasRequestSchema
|
|
20
|
+
namespace: HqServicesV1ObjPlaceService
|
|
21
|
+
---
|
|
22
|
+
|
|
23
|
+
# Place Pin Stub Wire And Net Alias
|
|
24
|
+
|
|
25
|
+
Pin stub wire + net alias: detect existing wire, extend stub with collision avoidance, place alias; single undo step.
|
|
26
|
+
|
|
27
|
+
## Overview
|
|
28
|
+
|
|
29
|
+
This skill provides access to the **`ObjPlaceService.PlacePinStubWireAndNetAlias`** RPC method on the Huaqiu EDA engine. It is part of the **obj-place** domain and executes against the `objPlace` client.
|
|
30
|
+
|
|
31
|
+
| Property | Value |
|
|
32
|
+
| --- | --- |
|
|
33
|
+
| Skill ID | `obj-place-place-pin-stub-wire-and-net-alias` |
|
|
34
|
+
| Service | `ObjPlaceService` |
|
|
35
|
+
| Method | `PlacePinStubWireAndNetAlias` |
|
|
36
|
+
| Transport | Unary (unary) |
|
|
37
|
+
| Domain | obj-place |
|
|
38
|
+
| Request type | `PlacePinStubWireAndNetAliasRequest` |
|
|
39
|
+
| Response type | `PlacePinStubWireAndNetAliasResponse` |
|
|
40
|
+
|
|
41
|
+
## Parameters
|
|
42
|
+
|
|
43
|
+
| Name | Type | Required | Repeated | Description |
|
|
44
|
+
| --- | --- | --- | --- | --- |
|
|
45
|
+
| `context` | `ProjectContext` | no | no | — |
|
|
46
|
+
| `objectId` | `bigint` | yes | no | part/symbol canvas id |
|
|
47
|
+
| `pinNum` | `number` | yes | no | pin_num or pin_name (one required) |
|
|
48
|
+
| `pinName` | `string` | yes | no | — |
|
|
49
|
+
| `netName` | `string` | yes | no | — |
|
|
50
|
+
| `snapToGrid` | `boolean` | yes | no | default true |
|
|
51
|
+
| `initialStubLength` | `bigint` | yes | no | default 30 |
|
|
52
|
+
| `stubExtendStep` | `bigint` | yes | no | default 10 |
|
|
53
|
+
| `maxStubLength` | `bigint` | yes | no | default 300 |
|
|
54
|
+
|
|
55
|
+
## Response
|
|
56
|
+
|
|
57
|
+
Returns a `PlacePinStubWireAndNetAliasResponse` message with the following fields:
|
|
58
|
+
|
|
59
|
+
| Name | Type | Repeated | Description |
|
|
60
|
+
| --- | --- | --- | --- |
|
|
61
|
+
| `success` | `boolean` | no | — |
|
|
62
|
+
| `message` | `string` | no | — |
|
|
63
|
+
| `wireObjectId` | `bigint` | no | 0 = no new stub |
|
|
64
|
+
| `netAliasObjectId` | `bigint` | no | — |
|
|
65
|
+
| `aliasPos` | `Vector2i64` | no | external display, Y down |
|
|
66
|
+
| `stubLengthUsed` | `bigint` | no | actual stub length (ext) |
|
|
67
|
+
| `usedExistingWire` | `boolean` | no | — |
|
|
68
|
+
|
|
69
|
+
## Response Example
|
|
70
|
+
|
|
71
|
+
Representative response structure (field values are placeholders):
|
|
72
|
+
|
|
73
|
+
```json
|
|
74
|
+
{
|
|
75
|
+
"success": false,
|
|
76
|
+
"message": "example",
|
|
77
|
+
"wireObjectId": "123456789",
|
|
78
|
+
"netAliasObjectId": "123456789",
|
|
79
|
+
"aliasPos": {},
|
|
80
|
+
"stubLengthUsed": "0",
|
|
81
|
+
"usedExistingWire": false
|
|
82
|
+
}
|
|
83
|
+
```
|
|
84
|
+
|
|
85
|
+
## Prerequisites
|
|
86
|
+
|
|
87
|
+
- [project-get-active-project](../../project/get-active-project/SKILL.md) — Discover the active project before building project-scoped context.
|
|
88
|
+
|
|
89
|
+
See also [skill-dependencies.md](../../references/skill-dependencies.md) for common workflows.
|
|
90
|
+
|
|
91
|
+
## How to Use
|
|
92
|
+
|
|
93
|
+
Execute via the HQ EDA skill runtime with a connected `EditorClient`. See [quickstart.md](../../references/quickstart.md) for the full `listEditors` → `connect` → `getSkill` → `execute` chain.
|
|
94
|
+
|
|
95
|
+
```typescript
|
|
96
|
+
import { getSkill, toJsonString } from "@huaqiu/hqeda";
|
|
97
|
+
|
|
98
|
+
const skill = getSkill("obj-place-place-pin-stub-wire-and-net-alias");
|
|
99
|
+
const result = await skill.execute({ client }, {
|
|
100
|
+
context: "<ProjectContext via client.createProjectContext('my-project')>",
|
|
101
|
+
objectId: "123456789",
|
|
102
|
+
pinNum: 0,
|
|
103
|
+
});
|
|
104
|
+
console.log(toJsonString(result, { prettySpaces: 2 }));
|
|
105
|
+
```
|
|
106
|
+
|
|
107
|
+
Serialize responses with `toJsonString()` — see [serialization.md](../../references/serialization.md).
|
|
108
|
+
|
|
109
|
+
## Related Skills
|
|
110
|
+
|
|
111
|
+
- Other **obj-place** skills: [`obj-place/`](../)
|
|
112
|
+
- Full index: [All EDA skills](../../SKILL.md)
|
|
113
|
+
- Install: `npx skills add Huaqiu-Electronics/skills --path eda/obj-place/place-pin-stub-wire-and-net-alias`
|
|
114
|
+
|
|
@@ -0,0 +1,125 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: pattern-layout-apply-circuit-pattern
|
|
3
|
+
metadata:
|
|
4
|
+
category: pattern-layout
|
|
5
|
+
service: PatternLayoutService
|
|
6
|
+
method: ApplyCircuitPattern
|
|
7
|
+
rpcKind: unary
|
|
8
|
+
description: >-
|
|
9
|
+
Lay out and wire one circuit pattern. plan_only = true is the dry-run.
|
|
10
|
+
version: 0.1.0
|
|
11
|
+
vendor: Huaqiu Electronics
|
|
12
|
+
tags:
|
|
13
|
+
- eda
|
|
14
|
+
- huaqiu
|
|
15
|
+
- pattern-layout
|
|
16
|
+
entry: "@huaqiu/hqeda"
|
|
17
|
+
manifest: "@huaqiu/hqeda/skill.json"
|
|
18
|
+
inputSchema:
|
|
19
|
+
name: ApplyCircuitPatternRequestSchema
|
|
20
|
+
namespace: HqServicesV1PatternLayoutService
|
|
21
|
+
---
|
|
22
|
+
|
|
23
|
+
# Apply Circuit Pattern
|
|
24
|
+
|
|
25
|
+
Lay out and wire one circuit pattern. plan_only = true is the dry-run.
|
|
26
|
+
|
|
27
|
+
## Overview
|
|
28
|
+
|
|
29
|
+
This skill provides access to the **`PatternLayoutService.ApplyCircuitPattern`** RPC method on the Huaqiu EDA engine. It is part of the **pattern-layout** domain and executes against the `patternLayout` client.
|
|
30
|
+
|
|
31
|
+
| Property | Value |
|
|
32
|
+
| --- | --- |
|
|
33
|
+
| Skill ID | `pattern-layout-apply-circuit-pattern` |
|
|
34
|
+
| Service | `PatternLayoutService` |
|
|
35
|
+
| Method | `ApplyCircuitPattern` |
|
|
36
|
+
| Transport | Unary (unary) |
|
|
37
|
+
| Domain | pattern-layout |
|
|
38
|
+
| Request type | `ApplyCircuitPatternRequest` |
|
|
39
|
+
| Response type | `ApplyCircuitPatternResponse` |
|
|
40
|
+
|
|
41
|
+
## Parameters
|
|
42
|
+
|
|
43
|
+
| Name | Type | Required | Repeated | Description |
|
|
44
|
+
| --- | --- | --- | --- | --- |
|
|
45
|
+
| `context` | `ProjectContext` | no | no | — |
|
|
46
|
+
| `pattern` | `CircuitPatternId` | yes | no | — |
|
|
47
|
+
| `roles` | `PatternRoleBinding[]` | no | yes | — |
|
|
48
|
+
| `anchor` | `Vector2i64` | no | no | External display coordinate; the exact meaning per pattern is documented in
|
|
49
|
+
CircuitPatternDescriptor.anchor_semantics. |
|
|
50
|
+
| `orientation` | `PatternOrientation` | yes | no | — |
|
|
51
|
+
| `routeMode` | `PatternRouteMode` | yes | no | — |
|
|
52
|
+
| `powerMode` | `PatternPowerMode` | yes | no | — |
|
|
53
|
+
| `options` | `{ [key: string]: string }` | yes | no | Pattern-specific knobs; legal keys come from CircuitPatternDescriptor.options. |
|
|
54
|
+
| `planOnly` | `boolean` | yes | no | Dry-run: compute the plan and the conflicts, touch nothing. |
|
|
55
|
+
| `ignoreAreaConflict` | `boolean` | yes | no | — |
|
|
56
|
+
|
|
57
|
+
## Response
|
|
58
|
+
|
|
59
|
+
Returns a `ApplyCircuitPatternResponse` message with the following fields:
|
|
60
|
+
|
|
61
|
+
| Name | Type | Repeated | Description |
|
|
62
|
+
| --- | --- | --- | --- |
|
|
63
|
+
| `status` | `PatternStatus` | no | — |
|
|
64
|
+
| `message` | `string` | no | — |
|
|
65
|
+
| `placements` | `PatternObjectPlacement[]` | yes | — |
|
|
66
|
+
| `connections` | `PatternConnectionResult[]` | yes | — |
|
|
67
|
+
| `createdObjectIds` | `bigint[]` | yes | Newly created wires / power symbols / net aliases. |
|
|
68
|
+
| `occupiedBox` | `Box2i64` | no | Final footprint including wires and power symbols (external coordinates).
|
|
69
|
+
Callers should book-keep this and avoid the area for later placements. |
|
|
70
|
+
| `conflictingObjectIds` | `bigint[]` | yes | Objects intersecting occupied_box; use them to pick another anchor. |
|
|
71
|
+
|
|
72
|
+
## Response Example
|
|
73
|
+
|
|
74
|
+
Representative response structure (field values are placeholders):
|
|
75
|
+
|
|
76
|
+
```json
|
|
77
|
+
{
|
|
78
|
+
"status": {},
|
|
79
|
+
"message": "example",
|
|
80
|
+
"placements": [
|
|
81
|
+
{}
|
|
82
|
+
],
|
|
83
|
+
"connections": [
|
|
84
|
+
{}
|
|
85
|
+
],
|
|
86
|
+
"createdObjectIds": [
|
|
87
|
+
"123456789"
|
|
88
|
+
],
|
|
89
|
+
"occupiedBox": {},
|
|
90
|
+
"conflictingObjectIds": [
|
|
91
|
+
"123456789"
|
|
92
|
+
]
|
|
93
|
+
}
|
|
94
|
+
```
|
|
95
|
+
|
|
96
|
+
## Prerequisites
|
|
97
|
+
|
|
98
|
+
- [project-get-active-project](../../project/get-active-project/SKILL.md) — Discover the active project before building project-scoped context.
|
|
99
|
+
|
|
100
|
+
See also [skill-dependencies.md](../../references/skill-dependencies.md) for common workflows.
|
|
101
|
+
|
|
102
|
+
## How to Use
|
|
103
|
+
|
|
104
|
+
Execute via the HQ EDA skill runtime with a connected `EditorClient`. See [quickstart.md](../../references/quickstart.md) for the full `listEditors` → `connect` → `getSkill` → `execute` chain.
|
|
105
|
+
|
|
106
|
+
```typescript
|
|
107
|
+
import { getSkill, toJsonString } from "@huaqiu/hqeda";
|
|
108
|
+
|
|
109
|
+
const skill = getSkill("pattern-layout-apply-circuit-pattern");
|
|
110
|
+
const result = await skill.execute({ client }, {
|
|
111
|
+
context: "<ProjectContext via client.createProjectContext('my-project')>",
|
|
112
|
+
pattern: {},
|
|
113
|
+
roles: [{}],
|
|
114
|
+
});
|
|
115
|
+
console.log(toJsonString(result, { prettySpaces: 2 }));
|
|
116
|
+
```
|
|
117
|
+
|
|
118
|
+
Serialize responses with `toJsonString()` — see [serialization.md](../../references/serialization.md).
|
|
119
|
+
|
|
120
|
+
## Related Skills
|
|
121
|
+
|
|
122
|
+
- Other **pattern-layout** skills: [`pattern-layout/`](../)
|
|
123
|
+
- Full index: [All EDA skills](../../SKILL.md)
|
|
124
|
+
- Install: `npx skills add Huaqiu-Electronics/skills --path eda/pattern-layout/apply-circuit-pattern`
|
|
125
|
+
|