@vessel-dsp/compiler 0.0.0-stage → 0.3.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/README.md +118 -2
- package/dist/bake.d.ts +38 -0
- package/dist/bake.d.ts.map +1 -0
- package/dist/bake.js +101 -0
- package/dist/bake.js.map +1 -0
- package/dist/bbd-clock.d.ts +171 -0
- package/dist/bbd-clock.d.ts.map +1 -0
- package/dist/bbd-clock.js +1750 -0
- package/dist/bbd-clock.js.map +1 -0
- package/dist/block-row.d.ts +51 -0
- package/dist/block-row.d.ts.map +1 -0
- package/dist/block-row.js +17 -0
- package/dist/block-row.js.map +1 -0
- package/dist/bypass.d.ts +3 -0
- package/dist/bypass.d.ts.map +1 -0
- package/dist/bypass.js +228 -0
- package/dist/bypass.js.map +1 -0
- package/dist/compile.d.ts +24 -0
- package/dist/compile.d.ts.map +1 -0
- package/dist/compile.js +348 -0
- package/dist/compile.js.map +1 -0
- package/dist/converter-scale.d.ts +14 -0
- package/dist/converter-scale.d.ts.map +1 -0
- package/dist/converter-scale.js +133 -0
- package/dist/converter-scale.js.map +1 -0
- package/dist/couple.d.ts +28 -0
- package/dist/couple.d.ts.map +1 -0
- package/dist/couple.js +567 -0
- package/dist/couple.js.map +1 -0
- package/dist/dangling-active-terminal.d.ts +47 -0
- package/dist/dangling-active-terminal.d.ts.map +1 -0
- package/dist/dangling-active-terminal.js +542 -0
- package/dist/dangling-active-terminal.js.map +1 -0
- package/dist/declared-program.d.ts +23 -0
- package/dist/declared-program.d.ts.map +1 -0
- package/dist/declared-program.js +387 -0
- package/dist/declared-program.js.map +1 -0
- package/dist/denomination.d.ts +48 -0
- package/dist/denomination.d.ts.map +1 -0
- package/dist/denomination.js +27 -0
- package/dist/denomination.js.map +1 -0
- package/dist/device-laws.d.ts +237 -0
- package/dist/device-laws.d.ts.map +1 -0
- package/dist/device-laws.js +3513 -0
- package/dist/device-laws.js.map +1 -0
- package/dist/diagnostics.d.ts +13 -0
- package/dist/diagnostics.d.ts.map +1 -0
- package/dist/diagnostics.js +19 -0
- package/dist/diagnostics.js.map +1 -0
- package/dist/emit.d.ts +8 -0
- package/dist/emit.d.ts.map +1 -0
- package/dist/emit.js +43 -0
- package/dist/emit.js.map +1 -0
- package/dist/errors.d.ts +22 -0
- package/dist/errors.d.ts.map +1 -0
- package/dist/errors.js +39 -0
- package/dist/errors.js.map +1 -0
- package/dist/firmware-class.d.ts +69 -0
- package/dist/firmware-class.d.ts.map +1 -0
- package/dist/firmware-class.js +20 -0
- package/dist/firmware-class.js.map +1 -0
- package/dist/fixtures/circuits.d.ts +1742 -0
- package/dist/fixtures/circuits.d.ts.map +1 -0
- package/dist/fixtures/circuits.js +13896 -0
- package/dist/fixtures/circuits.js.map +1 -0
- package/dist/fixtures/expected.d.ts +261 -0
- package/dist/fixtures/expected.d.ts.map +1 -0
- package/dist/fixtures/expected.js +315 -0
- package/dist/fixtures/expected.js.map +1 -0
- package/dist/fixtures/index.d.ts +4 -0
- package/dist/fixtures/index.d.ts.map +1 -0
- package/dist/fixtures/index.js +8 -0
- package/dist/fixtures/index.js.map +1 -0
- package/dist/fixtures/registry.d.ts +52 -0
- package/dist/fixtures/registry.d.ts.map +1 -0
- package/dist/fixtures/registry.js +341 -0
- package/dist/fixtures/registry.js.map +1 -0
- package/dist/generic-tube-fit.d.ts +12 -0
- package/dist/generic-tube-fit.d.ts.map +1 -0
- package/dist/generic-tube-fit.js +45 -0
- package/dist/generic-tube-fit.js.map +1 -0
- package/dist/grounded-clock-supply.d.ts +13 -0
- package/dist/grounded-clock-supply.d.ts.map +1 -0
- package/dist/grounded-clock-supply.js +45 -0
- package/dist/grounded-clock-supply.js.map +1 -0
- package/dist/identify.d.ts +50 -0
- package/dist/identify.d.ts.map +1 -0
- package/dist/identify.js +319 -0
- package/dist/identify.js.map +1 -0
- package/dist/index.d.ts +10 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +19 -0
- package/dist/index.js.map +1 -0
- package/dist/inert-controls.d.ts +15 -0
- package/dist/inert-controls.d.ts.map +1 -0
- package/dist/inert-controls.js +266 -0
- package/dist/inert-controls.js.map +1 -0
- package/dist/latch-seed.d.ts +53 -0
- package/dist/latch-seed.d.ts.map +1 -0
- package/dist/latch-seed.js +257 -0
- package/dist/latch-seed.js.map +1 -0
- package/dist/link.d.ts +7 -0
- package/dist/link.d.ts.map +1 -0
- package/dist/link.js +270 -0
- package/dist/link.js.map +1 -0
- package/dist/lower.d.ts +79 -0
- package/dist/lower.d.ts.map +1 -0
- package/dist/lower.js +1855 -0
- package/dist/lower.js.map +1 -0
- package/dist/netlist.d.ts +79 -0
- package/dist/netlist.d.ts.map +1 -0
- package/dist/netlist.js +4746 -0
- package/dist/netlist.js.map +1 -0
- package/dist/non-executable-clock-drivers.d.ts +8 -0
- package/dist/non-executable-clock-drivers.d.ts.map +1 -0
- package/dist/non-executable-clock-drivers.js +33 -0
- package/dist/non-executable-clock-drivers.js.map +1 -0
- package/dist/open-category.d.ts +98 -0
- package/dist/open-category.d.ts.map +1 -0
- package/dist/open-category.js +111 -0
- package/dist/open-category.js.map +1 -0
- package/dist/over-driven-node.d.ts +33 -0
- package/dist/over-driven-node.d.ts.map +1 -0
- package/dist/over-driven-node.js +188 -0
- package/dist/over-driven-node.js.map +1 -0
- package/dist/part-catalog.d.ts +15 -0
- package/dist/part-catalog.d.ts.map +1 -0
- package/dist/part-catalog.js +6712 -0
- package/dist/part-catalog.js.map +1 -0
- package/dist/part-number.d.ts +32 -0
- package/dist/part-number.d.ts.map +1 -0
- package/dist/part-number.js +80 -0
- package/dist/part-number.js.map +1 -0
- package/dist/partition.d.ts +7 -0
- package/dist/partition.d.ts.map +1 -0
- package/dist/partition.js +242 -0
- package/dist/partition.js.map +1 -0
- package/dist/port-full-scale.d.ts +70 -0
- package/dist/port-full-scale.d.ts.map +1 -0
- package/dist/port-full-scale.js +235 -0
- package/dist/port-full-scale.js.map +1 -0
- package/dist/pot-orientation.d.ts +114 -0
- package/dist/pot-orientation.d.ts.map +1 -0
- package/dist/pot-orientation.js +551 -0
- package/dist/pot-orientation.js.map +1 -0
- package/dist/power-domain-control.d.ts +40 -0
- package/dist/power-domain-control.d.ts.map +1 -0
- package/dist/power-domain-control.js +142 -0
- package/dist/power-domain-control.js.map +1 -0
- package/dist/proxy-declaration.d.ts +121 -0
- package/dist/proxy-declaration.d.ts.map +1 -0
- package/dist/proxy-declaration.js +50 -0
- package/dist/proxy-declaration.js.map +1 -0
- package/dist/registry.d.ts +323 -0
- package/dist/registry.d.ts.map +1 -0
- package/dist/registry.js +192 -0
- package/dist/registry.js.map +1 -0
- package/dist/sparse-schedule.d.ts +65 -0
- package/dist/sparse-schedule.d.ts.map +1 -0
- package/dist/sparse-schedule.js +421 -0
- package/dist/sparse-schedule.js.map +1 -0
- package/dist/speaker-load.d.ts +38 -0
- package/dist/speaker-load.d.ts.map +1 -0
- package/dist/speaker-load.js +97 -0
- package/dist/speaker-load.js.map +1 -0
- package/dist/stage-coverage.d.ts +21 -0
- package/dist/stage-coverage.d.ts.map +1 -0
- package/dist/stage-coverage.js +124 -0
- package/dist/stage-coverage.js.map +1 -0
- package/dist/stamp-partition.d.ts +314 -0
- package/dist/stamp-partition.d.ts.map +1 -0
- package/dist/stamp-partition.js +472 -0
- package/dist/stamp-partition.js.map +1 -0
- package/dist/supply-reference.d.ts +19 -0
- package/dist/supply-reference.d.ts.map +1 -0
- package/dist/supply-reference.js +66 -0
- package/dist/supply-reference.js.map +1 -0
- package/dist/supply-short.d.ts +32 -0
- package/dist/supply-short.d.ts.map +1 -0
- package/dist/supply-short.js +118 -0
- package/dist/supply-short.js.map +1 -0
- package/dist/supply-stamps.d.ts +51 -0
- package/dist/supply-stamps.d.ts.map +1 -0
- package/dist/supply-stamps.js +363 -0
- package/dist/supply-stamps.js.map +1 -0
- package/dist/terminal-role.d.ts +109 -0
- package/dist/terminal-role.d.ts.map +1 -0
- package/dist/terminal-role.js +46 -0
- package/dist/terminal-role.js.map +1 -0
- package/dist/terminal-roles.d.ts +59 -0
- package/dist/terminal-roles.d.ts.map +1 -0
- package/dist/terminal-roles.js +92 -0
- package/dist/terminal-roles.js.map +1 -0
- package/dist/transformer.d.ts +181 -0
- package/dist/transformer.d.ts.map +1 -0
- package/dist/transformer.js +476 -0
- package/dist/transformer.js.map +1 -0
- package/dist/types.d.ts +3157 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +11 -0
- package/dist/types.js.map +1 -0
- package/dist/unbounded-operating-point.d.ts +35 -0
- package/dist/unbounded-operating-point.d.ts.map +1 -0
- package/dist/unbounded-operating-point.js +181 -0
- package/dist/unbounded-operating-point.js.map +1 -0
- package/dist/unexecuted-region.d.ts +3 -0
- package/dist/unexecuted-region.d.ts.map +1 -0
- package/dist/unexecuted-region.js +122 -0
- package/dist/unexecuted-region.js.map +1 -0
- package/dist/unimplemented-control-role.d.ts +3 -0
- package/dist/unimplemented-control-role.d.ts.map +1 -0
- package/dist/unimplemented-control-role.js +61 -0
- package/dist/unimplemented-control-role.js.map +1 -0
- package/dist/unreachable-output.d.ts +3 -0
- package/dist/unreachable-output.d.ts.map +1 -0
- package/dist/unreachable-output.js +97 -0
- package/dist/unreachable-output.js.map +1 -0
- package/dist/unreadable-terminal-role.d.ts +67 -0
- package/dist/unreadable-terminal-role.d.ts.map +1 -0
- package/dist/unreadable-terminal-role.js +409 -0
- package/dist/unreadable-terminal-role.js.map +1 -0
- package/dist/unverified-pinout.d.ts +27 -0
- package/dist/unverified-pinout.d.ts.map +1 -0
- package/dist/unverified-pinout.js +121 -0
- package/dist/unverified-pinout.js.map +1 -0
- package/package.json +75 -5
|
@@ -0,0 +1,188 @@
|
|
|
1
|
+
// More than one ideal voltage source driving one node, which is not a circuit.
|
|
2
|
+
//
|
|
3
|
+
// An op-amp output is a **low-impedance driven node**: the device's whole job is to force a
|
|
4
|
+
// voltage there. Two of them on one node are two sources asserting two different voltages
|
|
5
|
+
// through near-zero impedance, and there is no answer — the real circuit fights itself and
|
|
6
|
+
// one part wins on current limit, while the model has no current limit to arbitrate with.
|
|
7
|
+
//
|
|
8
|
+
// ngspice says so plainly and refuses the deck: `singular matrix: check nodes ee25#branch
|
|
9
|
+
// and n15`, because two `E` elements driving one node give two rows asserting the same
|
|
10
|
+
// unknown. **This runtime does not refuse.** It gives each op-amp its own auxiliary row and
|
|
11
|
+
// solves an over-determined system to whatever `gmin` and the limiters allow, which is how
|
|
12
|
+
// `ibanez-pql` renders volts a 9 V pedal cannot reach and reports converged samples doing it.
|
|
13
|
+
// That was `1.118e13` V when this was written. Re-measured 2026-08-28 on the node its contested
|
|
14
|
+
// output feeds, the number is not a level at all — **the node never settles**:
|
|
15
|
+
//
|
|
16
|
+
// ```
|
|
17
|
+
// t=0.25s 55.3411 V t=2s 0.9281 V
|
|
18
|
+
// t=0.5s 17.7907 V t=4s -10.1509 V
|
|
19
|
+
// t=1s 5.4407 V t=8s 500.1368 V
|
|
20
|
+
// ```
|
|
21
|
+
//
|
|
22
|
+
// Which is what two integrators fighting for one output node should do: there is no steady state
|
|
23
|
+
// to find, so it wanders. **Do not quote a single figure from this packet as a level** — an
|
|
24
|
+
// earlier revision of this comment quoted `17.177 V` as "settled over 0.5 s and unchanged at 2 s",
|
|
25
|
+
// which was a harness bug (the later reading was aliased to the earlier one, so the
|
|
26
|
+
// still-moving control could not fire) and not a property of the circuit. The durable claim is
|
|
27
|
+
// the shape: unbounded excursion far outside the supply envelope, while the sample count reports
|
|
28
|
+
// converged.
|
|
29
|
+
//
|
|
30
|
+
// The pair is not always two op-amps. `boss-pq-4` puts a declared 4.5 V rail and an op-amp
|
|
31
|
+
// output on one node -- `Vv2 n24 0 DC 4.5` beside `Ee49 n24 0 TABLE {...}` -- and ngspice
|
|
32
|
+
// refuses it the same way. What matters is the *count of ideal sources on a node*, not which
|
|
33
|
+
// kinds they are, so both are counted.
|
|
34
|
+
//
|
|
35
|
+
// Measured over the pedal corpus, 2026-08-27 at `a6f5732d`:
|
|
36
|
+
//
|
|
37
|
+
// ```
|
|
38
|
+
// boss-aw-2 n23 <- two opamp stamps
|
|
39
|
+
// n26 <- five opamp stamps
|
|
40
|
+
// boss-ce-2b n16, n40, n46, n48 each <- two opamp stamps
|
|
41
|
+
// boss-dd-3b n8, n3 each <- two opamp stamps
|
|
42
|
+
// boss-pq-4 n24 <- VREF rail + IC4_VREF
|
|
43
|
+
// boss-tr-2 n3 <- a rail + one opamp stamp
|
|
44
|
+
// ibanez-pql n16 <- U2B + U2A
|
|
45
|
+
// moogerfooger-mf-102 n1 <- PLUS9 rail + U8C + U8D + U10A
|
|
46
|
+
// pigtronix-philosophers-tone n36 <- VC rail + IC4
|
|
47
|
+
// ```
|
|
48
|
+
//
|
|
49
|
+
// **Eight packets now, and the previous list is the reason this one carries its revision.** At
|
|
50
|
+
// `1ccb9839` on 2026-08-21 this list held five, and said of `boss-aw-2`, `boss-dd-3b` and
|
|
51
|
+
// `electro-harmonix-deluxe-memory-man` that all three "now refuse to compile on an unregistered
|
|
52
|
+
// IC, so their over-driven nodes are not live findings". Re-measured at the revision above, all
|
|
53
|
+
// three compile: `boss-aw-2` and `boss-dd-3b` are **live findings again**, with two over-driven
|
|
54
|
+
// nodes each, and `electro-harmonix-deluxe-memory-man` compiles carrying none. `boss-tr-2` was
|
|
55
|
+
// never on either list. `boss-ce-2b`'s fourth node reads `n48` rather than `n49`.
|
|
56
|
+
//
|
|
57
|
+
// So the list has been wrong in both directions — naming packets that had stopped reaching this
|
|
58
|
+
// stage, and omitting packets that had started reaching it again. A reader who quoted it without
|
|
59
|
+
// re-running it went looking for packets that did not compile; a later reader would have missed
|
|
60
|
+
// three that do. **An example list in a comment is a measurement with a date on it**, and a
|
|
61
|
+
// packet dropping off this list because it stopped compiling is not the same as the
|
|
62
|
+
// contradiction being resolved. Re-run before quoting:
|
|
63
|
+
// `compile(...).warnings.filter((w) => w.code === "node-driven-by-two-sources")`.
|
|
64
|
+
//
|
|
65
|
+
// Evidence is terminal-role tokens and node identity, the same as the other three warnings
|
|
66
|
+
// here. No component name, no `Description`, no part number.
|
|
67
|
+
//
|
|
68
|
+
// **A warning rather than a refusal**, matching its neighbours: the program builds and the
|
|
69
|
+
// pedal renders, and this says the rendered circuit contains a contradiction the source almost
|
|
70
|
+
// certainly did not intend. Two plausible readings stay open and this stage cannot pick
|
|
71
|
+
// between them — a transcription that merged two distinct nets into one node, or a real
|
|
72
|
+
// paralleling that the source drew faithfully — and either way the compiled circuit is
|
|
73
|
+
// over-determined, which is the reportable fact.
|
|
74
|
+
//
|
|
75
|
+
// **All of them were read against their sources on 2026-08-21, and one thing that reading found
|
|
76
|
+
// belongs here: over-determined is not the same as inconsistent.** Freeing the second source
|
|
77
|
+
// changed the render by nothing measurable on four of the five, because two ideal sources
|
|
78
|
+
// asserting the *same* voltage leave the solution alone. Only `ibanez-pql`, whose two competing
|
|
79
|
+
// devices are *different* op-amps, manufactured a level — `1.79 V` of swing against `2.48e-2`
|
|
80
|
+
// once separated. So this warning marks a real structural contradiction and says nothing about
|
|
81
|
+
// audibility, and the triage test is one program patch plus one render. See
|
|
82
|
+
// `docs/troubleshootings/the-over-driven-nodes-read-against-their-sources.md`.
|
|
83
|
+
import { blockRow, describeRow } from "./block-row.js";
|
|
84
|
+
/**
|
|
85
|
+
* Nodes driven by more than one ideal voltage source, read from the **lowered stamps**.
|
|
86
|
+
*
|
|
87
|
+
* Reading stamps rather than the netlist is the whole correctness of this rule, and a first
|
|
88
|
+
* version got it wrong. `boss-sd-1` declares two supply devices on node 14 -- a `rail` and a
|
|
89
|
+
* battery's positive terminal -- and lowering collapses them into **one** `dc-source` stamp, so
|
|
90
|
+
* the compiled circuit is not over-determined and ngspice accepts the deck. A netlist-level
|
|
91
|
+
* check flagged it anyway, reporting a redundant *declaration* as a contradiction. The stamps
|
|
92
|
+
* are what the runtime executes and what the deck is emitted from, so they are the only thing
|
|
93
|
+
* that can say whether two sources really force one unknown.
|
|
94
|
+
*
|
|
95
|
+
* Counts `dc-source` positives, `ac-source` positives, `ideal-opamp` outputs, and the
|
|
96
|
+
* `clock-driver` stamp's `vgg` output, and nothing else. The clock driver's VGG pin is an
|
|
97
|
+
* on-chip voltage-source output (`lower.ts` budgets it its own auxiliary row beside CP1 and
|
|
98
|
+
* CP2), so a declared rail on the same node is the same over-determined system as two rails.
|
|
99
|
+
* It fires on three packets today, all clock-VGG fights: canonical `boss-ce-2` v1.22
|
|
100
|
+
* (`VGG_RAIL` against the MN3101's own VGG on the bias node), `boss-ce-5`
|
|
101
|
+
* (a 7.5 V rail against the clock VGG, drawing 4.0 A of phantom supply current in the TS
|
|
102
|
+
* runtime), and `boss-bf-2` (clock VGG against an op-amp output). `boss-ce-2b`'s 2.3 A is
|
|
103
|
+
* NOT this shape -- measured, it is a D5 (1S2473) + D7 (S5500G) two-hop forward-diode path
|
|
104
|
+
* to ground, so this warning correctly stays silent there; that current is a packet defect
|
|
105
|
+
* for artifacts, and `findSupplyShorts` only sees single-hop shorts. CP1/CP2 are not counted: no packet ties a rail to a clock phase, and expanding
|
|
106
|
+
* the count without an observed case would be speculative. A transistor
|
|
107
|
+
* collector on a driven node is ordinary -- a collector is a current source behind a load
|
|
108
|
+
* resistor, not a voltage forced through near-zero impedance -- and a supply's negative end is
|
|
109
|
+
* a reference rather than a driver, so counting either would make this noise.
|
|
110
|
+
*
|
|
111
|
+
* Per block, because regions are independent solves: two sources on the same node id in
|
|
112
|
+
* different regions are different unknowns and no conflict.
|
|
113
|
+
*/
|
|
114
|
+
export function findOverDrivenNodes(program) {
|
|
115
|
+
const warnings = [];
|
|
116
|
+
for (const block of program.blocks) {
|
|
117
|
+
if (block.kind !== "mna") {
|
|
118
|
+
continue;
|
|
119
|
+
}
|
|
120
|
+
const byNode = new Map();
|
|
121
|
+
for (const stamp of block.stamps) {
|
|
122
|
+
const driver = drivenNode(stamp);
|
|
123
|
+
if (driver === null || driver.node === 0) {
|
|
124
|
+
continue;
|
|
125
|
+
}
|
|
126
|
+
byNode.set(driver.node, [
|
|
127
|
+
...(byNode.get(driver.node) ?? []),
|
|
128
|
+
driver.label,
|
|
129
|
+
]);
|
|
130
|
+
}
|
|
131
|
+
for (const [node, drivers] of byNode) {
|
|
132
|
+
if (drivers.length < 2) {
|
|
133
|
+
continue;
|
|
134
|
+
}
|
|
135
|
+
warnings.push({
|
|
136
|
+
code: "node-driven-by-two-sources",
|
|
137
|
+
device: null,
|
|
138
|
+
detail:
|
|
139
|
+
// The source node, not the row: this names a net someone has to go and look at.
|
|
140
|
+
`in block ${block.id}, ${drivers.join(" and ")} all drive node ${describeRow(block, blockRow(node))}, so ` +
|
|
141
|
+
"that many ideal voltage sources force one unknown and the system is " +
|
|
142
|
+
"over-determined: ngspice refuses such a deck as a singular matrix, while " +
|
|
143
|
+
"this runtime gives each its own auxiliary row and renders whatever the " +
|
|
144
|
+
"solve allows",
|
|
145
|
+
});
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
return warnings;
|
|
149
|
+
}
|
|
150
|
+
/**
|
|
151
|
+
* The node a stamp forces the voltage of and a label naming it, or `null` when it forces none.
|
|
152
|
+
*
|
|
153
|
+
* The label is the stamp kind and its auxiliary index, because a stamp carries no device id —
|
|
154
|
+
* so this is the most specific thing that can be said about which element is in conflict.
|
|
155
|
+
*/
|
|
156
|
+
function drivenNode(stamp) {
|
|
157
|
+
switch (stamp.kind) {
|
|
158
|
+
case "dc-source":
|
|
159
|
+
return {
|
|
160
|
+
node: stamp.positive,
|
|
161
|
+
label: `dc-source#${stamp.sourceIndex}`,
|
|
162
|
+
};
|
|
163
|
+
// An AC source forces its node just as firmly as a DC one; only the value moves. Two of
|
|
164
|
+
// them on a node -- or one beside a rail -- is the same over-determined system, and a
|
|
165
|
+
// mains inlet declared twice is exactly the shape a transcription produces.
|
|
166
|
+
case "ac-source":
|
|
167
|
+
return {
|
|
168
|
+
node: stamp.positive,
|
|
169
|
+
label: `ac-source#${stamp.sourceIndex}`,
|
|
170
|
+
};
|
|
171
|
+
case "ideal-opamp":
|
|
172
|
+
return {
|
|
173
|
+
node: stamp.output,
|
|
174
|
+
label: `ideal-opamp#${stamp.sourceIndex}`,
|
|
175
|
+
};
|
|
176
|
+
// The clock driver's VGG pin is a voltage-source output like the rails above: the
|
|
177
|
+
// lowering gives it its own auxiliary row, and a declared rail on the same node fights
|
|
178
|
+
// it for the unknown. See the file header for the two packets that do this today.
|
|
179
|
+
case "clock-driver":
|
|
180
|
+
return {
|
|
181
|
+
node: stamp.vgg,
|
|
182
|
+
label: `clock-driver-vgg#${stamp.sourceIndex}`,
|
|
183
|
+
};
|
|
184
|
+
default:
|
|
185
|
+
return null;
|
|
186
|
+
}
|
|
187
|
+
}
|
|
188
|
+
//# sourceMappingURL=over-driven-node.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"over-driven-node.js","sourceRoot":"","sources":["../src/over-driven-node.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import type { PartRegistry } from "./registry";
|
|
2
|
+
export declare const zenerCatalogPartIds: ReadonlySet<string>;
|
|
3
|
+
/**
|
|
4
|
+
* Every part id whose `fet` entry refines the gate term only, folded for comparison.
|
|
5
|
+
* `report-part-store-drift.ts` keys its channel-field exclusion on this set -- a catalog
|
|
6
|
+
* product -- rather than on the registry row, so a gate-only entry's avowed class channel
|
|
7
|
+
* is never graded against the database's beta/lambda/Vp the way a transcribed channel
|
|
8
|
+
* would be. Mirrors `zenerCatalogPartIds` above.
|
|
9
|
+
*/
|
|
10
|
+
export declare const gateOnlyFetPartIds: ReadonlySet<string>;
|
|
11
|
+
/**
|
|
12
|
+
* The catalog the corpus-facing scripts inject.
|
|
13
|
+
*/
|
|
14
|
+
export declare const pedalPartCatalog: PartRegistry;
|
|
15
|
+
//# sourceMappingURL=part-catalog.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"part-catalog.d.ts","sourceRoot":"","sources":["../src/part-catalog.ts"],"names":[],"mappings":"AAgCA,OAAO,KAAK,EAAa,YAAY,EAAE,MAAM,YAAY,CAAC;AAkM1D,eAAO,MAAM,mBAAmB,EAAE,WAAW,CAAC,MAAM,CAEnD,CAAC;AAk8MF;;;;;;GAMG;AACH,eAAO,MAAM,kBAAkB,EAAE,WAAW,CAAC,MAAM,CAAuB,CAAC;AAE3E;;GAEG;AACH,eAAO,MAAM,gBAAgB,EAAE,YAA0B,CAAC"}
|