@vessel-dsp/compiler 0.18.0 → 0.18.1

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.
Files changed (45) hide show
  1. package/dist/compile.d.ts.map +1 -1
  2. package/dist/compile.js +26 -13
  3. package/dist/compile.js.map +1 -1
  4. package/dist/device-laws.d.ts.map +1 -1
  5. package/dist/device-laws.js +83 -4
  6. package/dist/device-laws.js.map +1 -1
  7. package/dist/latch-seed.d.ts +7 -6
  8. package/dist/latch-seed.d.ts.map +1 -1
  9. package/dist/latch-seed.js +199 -31
  10. package/dist/latch-seed.js.map +1 -1
  11. package/dist/lower.d.ts.map +1 -1
  12. package/dist/lower.js +145 -0
  13. package/dist/lower.js.map +1 -1
  14. package/dist/netlist.d.ts.map +1 -1
  15. package/dist/netlist.js +16 -0
  16. package/dist/netlist.js.map +1 -1
  17. package/dist/part-catalog.d.ts +21 -0
  18. package/dist/part-catalog.d.ts.map +1 -1
  19. package/dist/part-catalog.js +750 -21
  20. package/dist/part-catalog.js.map +1 -1
  21. package/dist/partition.d.ts.map +1 -1
  22. package/dist/partition.js +5 -0
  23. package/dist/partition.js.map +1 -1
  24. package/dist/registry-data/index.d.ts +1 -0
  25. package/dist/registry-data/index.d.ts.map +1 -1
  26. package/dist/registry-data/index.js +3 -0
  27. package/dist/registry-data/index.js.map +1 -1
  28. package/dist/registry-data/poweramp.d.ts +10 -0
  29. package/dist/registry-data/poweramp.d.ts.map +1 -0
  30. package/dist/registry-data/poweramp.js +191 -0
  31. package/dist/registry-data/poweramp.js.map +1 -0
  32. package/dist/registry-data/schema.d.ts +2 -0
  33. package/dist/registry-data/schema.d.ts.map +1 -1
  34. package/dist/registry-data/schema.js +22 -0
  35. package/dist/registry-data/schema.js.map +1 -1
  36. package/dist/registry.d.ts +89 -1
  37. package/dist/registry.d.ts.map +1 -1
  38. package/dist/registry.js +148 -0
  39. package/dist/registry.js.map +1 -1
  40. package/dist/types.d.ts +75 -0
  41. package/dist/types.d.ts.map +1 -1
  42. package/dist/unverified-pinout.d.ts.map +1 -1
  43. package/dist/unverified-pinout.js +8 -1
  44. package/dist/unverified-pinout.js.map +1 -1
  45. package/package.json +2 -2
@@ -28,10 +28,11 @@
28
28
  const LATCH_SEED_VOLTS = 0.65;
29
29
  export function findBistableLatches(netlist) {
30
30
  const rails = detectorRails(netlist);
31
+ const floodRails = latchFloodRails(netlist, rails);
31
32
  const pairs = candidatePairs(netlist, rails);
32
33
  const latches = [];
33
34
  for (const pair of pairs) {
34
- const assessed = assessLatchSides(netlist, rails, pair.a, pair.b);
35
+ const assessed = assessLatchSides(netlist, floodRails, pair.a, pair.b);
35
36
  const bypassControls = (netlist.controls ?? []).filter((c) => c.role === "bypass");
36
37
  let controlId = bypassControls.length === 1 ? (bypassControls[0]?.id ?? null) : null;
37
38
  if (controlId === null) {
@@ -63,9 +64,10 @@ export function findBistableLatches(netlist) {
63
64
  */
64
65
  export function findLatchLedDisagreements(netlist) {
65
66
  const rails = detectorRails(netlist);
67
+ const floodRails = latchFloodRails(netlist, rails);
66
68
  const out = [];
67
69
  for (const pair of candidatePairs(netlist, rails)) {
68
- const assessed = assessLatchSides(netlist, rails, pair.a, pair.b);
70
+ const assessed = assessLatchSides(netlist, floodRails, pair.a, pair.b);
69
71
  if (assessed.sideProvenance === "connectivity" &&
70
72
  assessed.ledVote !== null &&
71
73
  assessed.ledVote.member.id !== assessed.onMember.id) {
@@ -114,29 +116,58 @@ function assessLatchSides(netlist, rails, a, b) {
114
116
  /**
115
117
  * The latch member an effect-status LED indicates as ON when engaged, or `null`.
116
118
  *
117
- * One unanimous vote wins: every LED whose terminal sits on a latch collector names
118
- * the member lit in the effect state (cathode on a collector: lit when LOW, so that
119
- * member; anode directly on a collector: lit when HIGH, so the other member), and
120
- * conflicting or absent votes are no evidence rather than a tie-break. Matching is
121
- * by the panel record's exact component id (already resolved to terminals by stage 1)
122
- * and the typed `led` kind it carried — never by name or description text.
119
+ * One unanimous vote wins: every LED terminal chain that reaches a latch collector
120
+ * names the member lit in the effect state (a cathode-side chain: lit when that
121
+ * collector is LOW, so that member; an anode-side chain: lit when it is HIGH, so
122
+ * the other member), and conflicting or absent votes are no evidence rather than a
123
+ * tie-break. Matching is by the panel record's exact component id (already resolved
124
+ * to terminals by stage 1) and the typed `led` kind it carried — never by name or
125
+ * description text.
126
+ *
127
+ * A chain is a pure series branch between the LED terminal and the collector: every
128
+ * link is a two-terminal resistor or diode, and every interior node joins exactly
129
+ * two device terminals (no branch). The LED device itself is never a link — a walk
130
+ * through it would join the anode side to the cathode side and manufacture a vote
131
+ * for every packet. An anode-side chain of exactly one resistor is not a vote
132
+ * (the shared-supply-plus-loads shape above); a direct anode hit still is.
123
133
  */
124
134
  function ledIndicatedOnMember(netlist, a, b) {
125
135
  const leds = netlist.effectStatusLeds ?? [];
126
136
  const votes = [];
127
137
  for (const led of leds) {
128
- for (const member of [a, b]) {
129
- const cathode = cathodeRelation(netlist, led.cathode, member.collector);
130
- if (cathode !== null) {
131
- votes.push({
132
- member,
133
- ledId: led.id,
134
- polarity: cathode === "direct" ? "cathode-direct" : "cathode-1R",
135
- });
138
+ const chainsTo = (terminal, member) => {
139
+ const start = terminal === "anode" ? led.anode : led.cathode;
140
+ if (start === member.collector) {
141
+ return [[]];
136
142
  }
137
- else if (led.anode === member.collector) {
138
- const other = member.id === a.id ? b : a;
139
- votes.push({ member: other, ledId: led.id, polarity: "anode-direct" });
143
+ return ledSeriesChains(netlist, led.id, start, member.collector);
144
+ };
145
+ for (const member of [a, b]) {
146
+ for (const terminal of ["cathode", "anode"]) {
147
+ for (const path of chainsTo(terminal, member)) {
148
+ if (terminal === "cathode") {
149
+ votes.push({
150
+ member,
151
+ ledId: led.id,
152
+ polarity: path.length === 0
153
+ ? "cathode-direct"
154
+ : path.length === 1 && isSingleResistor(netlist, path)
155
+ ? "cathode-1R"
156
+ : "cathode-chain",
157
+ });
158
+ }
159
+ else {
160
+ if (path.length === 1 && isSingleResistor(netlist, path)) {
161
+ continue;
162
+ }
163
+ const other = member.id === a.id ? b : a;
164
+ votes.push({
165
+ member: other,
166
+ ledId: led.id,
167
+ polarity: path.length === 0 ? "anode-direct" : "anode-chain",
168
+ });
169
+ }
170
+ }
140
171
  }
141
172
  }
142
173
  }
@@ -149,22 +180,102 @@ function ledIndicatedOnMember(netlist, a, b) {
149
180
  }
150
181
  return null;
151
182
  }
183
+ /** Whether a chain path is a single resistor link. */
184
+ function isSingleResistor(netlist, path) {
185
+ if (path.length !== 1) {
186
+ return false;
187
+ }
188
+ const link = netlist.devices.find((device) => String(device.id) === path[0]);
189
+ return link?.kind === "resistor";
190
+ }
152
191
  /**
153
- * How an LED cathode reaches a latch collector: `direct` on the node, the id of the
154
- * single resistor joining them, or `null`. Resistors only — a shared supply node is
155
- * not a branch, and neither is anything else.
192
+ * Series device-id paths from a node to a target over two-terminal resistors and
193
+ * diodes, excluding one device id (the LED being evaluated). Every interior node
194
+ * must join exactly two device terminals across the whole netlist — a branch, a
195
+ * ground return, a transistor terminal or an IC pin on the way disqualifies the
196
+ * run. The start node is an endpoint and exempt; the target is an endpoint and
197
+ * exempt. Revisits are refused, so every walk terminates.
198
+ *
199
+ * Diode orientation is deliberately not checked. The typed diode law cannot tell
200
+ * an undeclared zener from an ordinary diode: `boss-oc-2`'s `D2` is an RD5.1
201
+ * zener sitting in reverse in the CHECK branch, known as a zener only by its part
202
+ * number (which this detector must not read), with `parameters` empty and the
203
+ * plain diode source type. Refusing a reverse diode on absence of evidence would
204
+ * refuse that real branch, and a declared `breakdownVolts` would admit it anyway,
205
+ * so no orientation test can ever block a link. The no-branch, unanimity and
206
+ * precedence rules carry the specificity instead.
156
207
  */
157
- function cathodeRelation(netlist, cathode, collector) {
158
- if (cathode === collector) {
159
- return "direct";
208
+ function ledSeriesChains(netlist, excludedId, start, target) {
209
+ const adjacency = new Map();
210
+ for (const device of netlist.devices) {
211
+ if (String(device.id) === excludedId) {
212
+ continue;
213
+ }
214
+ if ((device.kind !== "resistor" && device.kind !== "diode") ||
215
+ device.nodes.length !== 2) {
216
+ continue;
217
+ }
218
+ const from = device.nodes[0];
219
+ const to = device.nodes[1];
220
+ if (from === undefined || to === undefined || from === to) {
221
+ continue;
222
+ }
223
+ for (const [a, b] of [
224
+ [from, to],
225
+ [to, from],
226
+ ]) {
227
+ const links = adjacency.get(a);
228
+ if (links === undefined) {
229
+ adjacency.set(a, [{ to: b, id: String(device.id) }]);
230
+ }
231
+ else {
232
+ links.push({ to: b, id: String(device.id) });
233
+ }
234
+ }
160
235
  }
161
- const link = netlist.devices.find((device) => device.kind === "resistor" &&
162
- device.nodes.length === 2 &&
163
- ((device.nodes[0] === cathode && device.nodes[1] === collector) ||
164
- (device.nodes[0] === collector && device.nodes[1] === cathode)));
165
- return link === undefined ? null : String(link.id);
236
+ const degree = (node) => {
237
+ let count = 0;
238
+ for (const device of netlist.devices) {
239
+ for (const terminal of device.nodes) {
240
+ if (terminal === node) {
241
+ count += 1;
242
+ }
243
+ }
244
+ }
245
+ return count;
246
+ };
247
+ const out = [];
248
+ const walk = (node, path, visited) => {
249
+ for (const link of adjacency.get(node) ?? []) {
250
+ if (visited.has(link.to)) {
251
+ continue;
252
+ }
253
+ // An interior node is a series joint or the walk ends here: anything
254
+ // with more or fewer than two terminals is a branch, not a chain.
255
+ if (link.to !== target && degree(link.to) !== 2) {
256
+ continue;
257
+ }
258
+ if (link.to === target) {
259
+ out.push([...path, link.id]);
260
+ continue;
261
+ }
262
+ visited.add(link.to);
263
+ walk(link.to, [...path, link.id], visited);
264
+ visited.delete(link.to);
265
+ }
266
+ };
267
+ walk(start, [], new Set([start]));
268
+ return out;
166
269
  }
167
- /** This detector's rail set: ground plus every asserted supply node. */
270
+ /** This detector's rail set: ground plus every asserted supply node.
271
+ *
272
+ * This is the structural set, and it is also what decides latch candidacy
273
+ * (requirement 3 below): a collector or base sitting on one of these is supply,
274
+ * not state. It deliberately does NOT include diode-joined nodes — a base with
275
+ * a clamp diode to ground is still a state node (`boss-ds-1`'s `Q4` base, node
276
+ * 37, via `D7`), and promoting it would un-find a real latch. The flood view is
277
+ * `latchFloodRails`.
278
+ */
168
279
  function detectorRails(netlist) {
169
280
  const rails = new Set([0]);
170
281
  for (const device of netlist.devices) {
@@ -176,6 +287,63 @@ function detectorRails(netlist) {
176
287
  }
177
288
  return rails;
178
289
  }
290
+ /**
291
+ * The rail set the gate-steering floods are blocked at: the structural rails
292
+ * plus every node a single diode joins to one of those.
293
+ *
294
+ * A reverse-polarity protection diode puts the whole board supply one diode from
295
+ * the inlet rail, and the DC flood must treat that node as supply rather than
296
+ * as a route: measured on `boss-oc-2`, node 7 sits behind `D1` (S5500G) off the
297
+ * rail node 60, so both collectors flood through their load resistors (`R22`,
298
+ * `R23`) into node 7, down the bias divider (`R46`) to the 4.5 V node 2, and
299
+ * out to every JFET gate — both sides then "gate the same switches" and the
300
+ * rule refuses a latch whose real gate paths (`Q5` collector → `R28` → `D4` →
301
+ * `Q3` gate; `Q6` collector → `R30` → `D5` → `Q4` gate) are one switch each.
302
+ * Blocking node 7 leaves each collector reaching only its own switch.
303
+ *
304
+ * Two deliberate limits. One hop only: a longer diode string is a signal path
305
+ * (steering, clamping, detection), not supply distribution, and stopping the
306
+ * flood there could hide a real gate. Effect-status indicators excluded: an LED
307
+ * terminates on supply but is a load, not distribution, and its far node can sit
308
+ * inside latch or LED networks rather than on a rail.
309
+ *
310
+ * The candidate not taken is stopping the flood at the shared load-resistor top
311
+ * (a node both collectors reach through one resistor each): on this corpus every
312
+ * such node is already a rail or is diode-joined to one (`boss-oc-2` node 7,
313
+ * `boss-ds-1` node 5, `boss-hm-2` node 71, `boss-mt-2` node 1, the rest already
314
+ * rails), so the diode rule is strictly more general here.
315
+ *
316
+ * This set is flood-blocking only. Candidacy (`candidatePairs`) keeps the
317
+ * structural set: the expansion can mark small-signal clamp nodes — `boss-ds-1`'s
318
+ * `Q4` base (node 37) sits behind its base-ground clamp `D7` — and a clamped
319
+ * state node is still a state node. Blocking such a node in a flood only shrinks
320
+ * reachability (worst case a refusal, the safe direction); promoting it to a
321
+ * rail would un-find the latch outright.
322
+ */
323
+ function latchFloodRails(netlist, rails) {
324
+ const flood = new Set(rails);
325
+ const indicators = new Set((netlist.effectStatusLeds ?? []).map((led) => led.id));
326
+ for (const device of netlist.devices) {
327
+ if (device.kind !== "diode" || device.nodes.length !== 2) {
328
+ continue;
329
+ }
330
+ if (indicators.has(device.id)) {
331
+ continue;
332
+ }
333
+ const from = device.nodes[0];
334
+ const to = device.nodes[1];
335
+ if (from === undefined || to === undefined || from === to) {
336
+ continue;
337
+ }
338
+ if (rails.has(from) && !rails.has(to)) {
339
+ flood.add(to);
340
+ }
341
+ else if (rails.has(to) && !rails.has(from)) {
342
+ flood.add(from);
343
+ }
344
+ }
345
+ return flood;
346
+ }
179
347
  /**
180
348
  * Candidate cross-coupled pairs: the four structural requirements (a direct resistor
181
349
  * each way, a shared emitter, no rails on collectors or bases, exclusivity), without
@@ -1 +1 @@
1
- {"version":3,"file":"latch-seed.js","sourceRoot":"","sources":["../src/latch-seed.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"latch-seed.js","sourceRoot":"","sources":["../src/latch-seed.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"lower.d.ts","sourceRoot":"","sources":["../src/lower.ts"],"names":[],"mappings":"AAqBA,OAAO,EAGN,KAAK,aAAa,EAClB,MAAM,cAAc,CAAC;AAUtB,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,KAAK,EACX,KAAK,EACL,MAAM,EACN,YAAY,EACZ,MAAM,EACN,kBAAkB,EAClB,YAAY,EACZ,MAAM,EACN,KAAK,EACL,MAAM,SAAS,CAAC;AAkBjB,OAAO,EACN,wBAAwB,EACxB,mBAAmB,EACnB,sBAAsB,EACtB,oBAAoB,EACpB,YAAY,EACZ,cAAc,GACd,MAAM,mBAAmB,CAAC;AAE3B,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAIzC,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAEjD,wBAAgB,WAAW,CAC1B,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,YAAY,EACnB,SAAS,EAAE,MAAM,EACjB,UAAU,EAAE,MAAM;AAClB;;;GAGG;AACH,UAAU,GAAE,SAAS,kBAAkB,EAAO,EAC9C,OAAO,GAAE,SAAS,aAAa,EAAO;AACtC;;;;;GAKG;AACH,aAAa,GAAE,WAAW,CAAC,MAAM,EAAE,MAAM,CAAa;AACtD;;;;GAIG;AACH,kBAAkB,GAAE,WAAW,CAAC,MAAM,EAAE,MAAM,CAAa;AAC3D;;;;GAIG;AACH,mBAAmB,GAAE,WAAW,CAAC,MAAM,EAAE,MAAM,CAAa;AAC5D;;;;;GAKG;AACH,mBAAmB,GAAE,WAAW,CAAC,MAAM,CAAa,EACpD,gBAAgB,GAAE,WAAW,CAAC,MAAM,EAAE,MAAM,CAAa,GACvD,KAAK,CAw1CP;AAED;;;;;;;;GAQG;AACH,wBAAgB,cAAc,CAC7B,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE;IAAE,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAA;CAAE,CAAC,EAC/C,IAAI,EAAE,MAAM,GACV,MAAM,GAAG,IAAI,CAGf;AAED;;;;;;GAMG;AACH,wBAAgB,kBAAkB,CACjC,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE;IAAE,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAA;CAAE,CAAC,EAC/C,KAAK,EAAE,KAAK,GACV,KAAK,CAEP;AAGD,wBAAgB,KAAK,CACpB,YAAY,EAAE,YAAY,EAC1B,KAAK,EAAE,YAAY,GACjB,SAAS,KAAK,EAAE,CAwBlB;AA2TD;;;;;;GAMG;AACH,eAAO,MAAM,gCAAgC,IAAI,CAAC;AAqYlD;;;;;;;GAOG;AACH,wBAAgB,kBAAkB,CACjC,MAAM,EAAE,MAAM,GACZ,UAAU,GAAG,OAAO,GAAG,mBAAmB,CAK5C"}
1
+ {"version":3,"file":"lower.d.ts","sourceRoot":"","sources":["../src/lower.ts"],"names":[],"mappings":"AAqBA,OAAO,EAGN,KAAK,aAAa,EAClB,MAAM,cAAc,CAAC;AAUtB,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,KAAK,EACX,KAAK,EACL,MAAM,EACN,YAAY,EACZ,MAAM,EACN,kBAAkB,EAClB,YAAY,EACZ,MAAM,EACN,KAAK,EACL,MAAM,SAAS,CAAC;AAkBjB,OAAO,EACN,wBAAwB,EACxB,mBAAmB,EACnB,sBAAsB,EACtB,oBAAoB,EACpB,YAAY,EACZ,cAAc,GACd,MAAM,mBAAmB,CAAC;AAE3B,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAIzC,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAYjD,wBAAgB,WAAW,CAC1B,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,YAAY,EACnB,SAAS,EAAE,MAAM,EACjB,UAAU,EAAE,MAAM;AAClB;;;GAGG;AACH,UAAU,GAAE,SAAS,kBAAkB,EAAO,EAC9C,OAAO,GAAE,SAAS,aAAa,EAAO;AACtC;;;;;GAKG;AACH,aAAa,GAAE,WAAW,CAAC,MAAM,EAAE,MAAM,CAAa;AACtD;;;;GAIG;AACH,kBAAkB,GAAE,WAAW,CAAC,MAAM,EAAE,MAAM,CAAa;AAC3D;;;;GAIG;AACH,mBAAmB,GAAE,WAAW,CAAC,MAAM,EAAE,MAAM,CAAa;AAC5D;;;;;GAKG;AACH,mBAAmB,GAAE,WAAW,CAAC,MAAM,CAAa,EACpD,gBAAgB,GAAE,WAAW,CAAC,MAAM,EAAE,MAAM,CAAa,GACvD,KAAK,CAw+CP;AAED;;;;;;;;GAQG;AACH,wBAAgB,cAAc,CAC7B,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE;IAAE,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAA;CAAE,CAAC,EAC/C,IAAI,EAAE,MAAM,GACV,MAAM,GAAG,IAAI,CAGf;AAED;;;;;;GAMG;AACH,wBAAgB,kBAAkB,CACjC,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE;IAAE,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAA;CAAE,CAAC,EAC/C,KAAK,EAAE,KAAK,GACV,KAAK,CAEP;AAGD,wBAAgB,KAAK,CACpB,YAAY,EAAE,YAAY,EAC1B,KAAK,EAAE,YAAY,GACjB,SAAS,KAAK,EAAE,CAwBlB;AA2TD;;;;;;GAMG;AACH,eAAO,MAAM,gCAAgC,IAAI,CAAC;AAqYlD;;;;;;;GAOG;AACH,wBAAgB,kBAAkB,CACjC,MAAM,EAAE,MAAM,GACZ,UAAU,GAAG,OAAO,GAAG,mBAAmB,CAK5C"}
package/dist/lower.js CHANGED
@@ -29,6 +29,15 @@ import { opampInvertingInputNodes, opampInputDistances, opampOutputAcDistances,
29
29
  export { opampInvertingInputNodes, opampInputDistances, opampOutputAcDistances, opampOutputDistances, potTerminals, quietDistances, } from "./pot-orientation.js";
30
30
  export { LoweringError } from "./errors.js";
31
31
  export { stampControl } from "./stamp-partition.js";
32
+ /**
33
+ * The transconductance of each power-amp input branch, in siemens: a house
34
+ * idealization, identical for every row, not a part figure. The closed-loop gain
35
+ * tends to 2*Rfb/Re as GM -> infinity with a relative error of order 1/(GM*Re)
36
+ * (under 0.01 dB at 100 S even at the smallest degeneration, 150 ohms), so the
37
+ * value only has to be large, never exact; the gain-bandwidth sweep in
38
+ * `packages/compiler/tests/power-amp.test.ts` measures the dependence.
39
+ */
40
+ const POWER_AMP_TRANSCONDUCTANCE = 100;
32
41
  export function lowerRegion(region, lawed, inputNode, outputNode,
33
42
  /**
34
43
  * Computed once by `lower` rather than per region: the rule is a pairwise scan over
@@ -1144,6 +1153,142 @@ invertingInputNodes = new Set(), acOutputDistance = new Map()) {
1144
1153
  stateCount += 2;
1145
1154
  break;
1146
1155
  }
1156
+ case "power-amp": {
1157
+ // An LM386-style fixed-gain power amp, built from the printed resistor
1158
+ // network around two idealized transconductance branches. Terminal order
1159
+ // is the entry's canonical pin order (1 GAIN, 2 IN-, 3 IN+, 4 GND, 5 OUT,
1160
+ // 6 VS, 7 BYPASS, 8 GAIN), guaranteed by the sections expansion, which
1161
+ // binds by role or by the pinout check and refuses anything else by name.
1162
+ const [p1, p2m, p3p, pgnd, pout, pvs, pbyp, p8] = device.nodes;
1163
+ if (p1 === undefined ||
1164
+ p2m === undefined ||
1165
+ p3p === undefined ||
1166
+ pgnd === undefined ||
1167
+ pout === undefined ||
1168
+ pvs === undefined ||
1169
+ pbyp === undefined ||
1170
+ p8 === undefined) {
1171
+ throw new LoweringError(`power-amp ${device.id} requires eight terminals: gain1, inverting, noninverting, gnd, out, vcc, bypass, gain8`, device.id);
1172
+ }
1173
+ for (const [name, value] of [
1174
+ ["feedbackOhms", law.feedbackOhms],
1175
+ ["gainSetOhms", law.gainSetOhms],
1176
+ ["degenerationOhms", law.degenerationOhms],
1177
+ ["inputShuntOhms", law.inputShuntOhms],
1178
+ ["bypassUpperOhms", law.bypassUpperOhms],
1179
+ ]) {
1180
+ if (!(typeof value === "number" && Number.isFinite(value) && value > 0)) {
1181
+ throw new LoweringError(`power-amp ${device.id} has a non-positive ${name}: ${String(value)}`, device.id);
1182
+ }
1183
+ }
1184
+ // Small-signal derivation. Nodes: P1 (pin 1), P8 (pin 8), E (the
1185
+ // minus-side emitter node, private), L (the single-ended load node,
1186
+ // private). Two transconductance branches in series with the emitters,
1187
+ // so the printed degeneration network carries the signal current --
1188
+ // a high-impedance input pair would drop nothing across it and the
1189
+ // gain could never switch with the pin-1-to-8 impedance:
1190
+ // I_A (Vs -> P1) = GM * (V3 - VP1), I_B (L -> E) = GM * (V2 - VE).
1191
+ // KCL at P1, E, P8 and L (S = 1/Rgs + Y18, Gd = 1/Rdeg, Re the series
1192
+ // total Rdeg + Rgs‖Z18, follower V5 = VL), in the GM -> infinity limit
1193
+ // where the branch inputs vanish (VP1 -> V3, VE -> V2):
1194
+ // V8 = (V3*S + V2*Gd) / (S + Gd),
1195
+ // VL = -Rth * (I_B - I_A | differential) = +Rth * Vd / Re for pin-3
1196
+ // drive and -Rth * Vd / Re for pin-2 drive, with Rth = 2*Rfb.
1197
+ // Hence Av(Z18) = +2*Rfb/Re (pin 3) and -2*Rfb/Re (pin 2), exact: 20/200
1198
+ // on the printed points (2*15k/1500, 2*15k/150). Finite GM leaves a
1199
+ // relative error of order 1/(GM*Re), under 0.01 dB at GM = 100 S even at
1200
+ // the smallest degeneration (150 ohms); the gain-bandwidth sweep in
1201
+ // `packages/compiler/tests/power-amp.test.ts` measures the GM dependence.
1202
+ // Rth is stamped as a Thevenin pair (4*Rfb to Vs and to ground): the AC
1203
+ // load is 2*Rfb to AC ground either way, and the DC point centers on
1204
+ // Vs/2, which is what the sheet's self-centering output claim states.
1205
+ // The upper bypass resistor (Vs to pin 7) is stamped as printed; its lower
1206
+ // half terminates on an unmodeled internal bias node, so pin 7 reads Vs
1207
+ // instead of Vs/2 -- no stamp reads pin 7, and the external bypass
1208
+ // capacitor still AC-grounds it in every application circuit.
1209
+ const emitterMinus = allocateInternalNode();
1210
+ const load = allocateInternalNode();
1211
+ const rfb = law.feedbackOhms;
1212
+ const rgs = law.gainSetOhms;
1213
+ const rdeg = law.degenerationOhms;
1214
+ const theveninEach = 4 * rfb;
1215
+ stamps.push({
1216
+ kind: "conductance",
1217
+ a: p2m,
1218
+ b: pgnd,
1219
+ siemens: 1 / law.inputShuntOhms,
1220
+ });
1221
+ stamps.push({
1222
+ kind: "conductance",
1223
+ a: p3p,
1224
+ b: pgnd,
1225
+ siemens: 1 / law.inputShuntOhms,
1226
+ });
1227
+ stamps.push({
1228
+ kind: "conductance",
1229
+ a: p1,
1230
+ b: p8,
1231
+ siemens: 1 / rgs,
1232
+ });
1233
+ stamps.push({
1234
+ kind: "conductance",
1235
+ a: p8,
1236
+ b: emitterMinus,
1237
+ siemens: 1 / rdeg,
1238
+ });
1239
+ stamps.push({
1240
+ kind: "conductance",
1241
+ a: pout,
1242
+ b: p1,
1243
+ siemens: 1 / rfb,
1244
+ });
1245
+ stamps.push({
1246
+ kind: "conductance",
1247
+ a: pvs,
1248
+ b: pbyp,
1249
+ siemens: 1 / law.bypassUpperOhms,
1250
+ });
1251
+ stamps.push({
1252
+ kind: "vccs",
1253
+ outP: pvs,
1254
+ outN: p1,
1255
+ inP: p3p,
1256
+ inN: p1,
1257
+ transconductance: POWER_AMP_TRANSCONDUCTANCE,
1258
+ });
1259
+ stamps.push({
1260
+ kind: "vccs",
1261
+ outP: load,
1262
+ outN: emitterMinus,
1263
+ inP: p2m,
1264
+ inN: emitterMinus,
1265
+ transconductance: POWER_AMP_TRANSCONDUCTANCE,
1266
+ });
1267
+ stamps.push({
1268
+ kind: "conductance",
1269
+ a: load,
1270
+ b: pvs,
1271
+ siemens: 1 / theveninEach,
1272
+ });
1273
+ stamps.push({
1274
+ kind: "conductance",
1275
+ a: load,
1276
+ b: GROUND,
1277
+ siemens: 1 / theveninEach,
1278
+ });
1279
+ stamps.push({
1280
+ kind: "ideal-opamp",
1281
+ plus: load,
1282
+ minus: pout,
1283
+ output: pout,
1284
+ sourceIndex: auxCount++,
1285
+ railHigh: law.railHigh,
1286
+ railLow: law.railLow,
1287
+ openLoopGain: law.openLoopGain,
1288
+ gainBandwidthHz: law.gainBandwidthHz ?? null,
1289
+ });
1290
+ break;
1291
+ }
1147
1292
  case "comparator": {
1148
1293
  const plus = device.nodes[0];
1149
1294
  const minus = device.nodes[1];