@vessel-dsp/compiler 0.8.0 → 0.9.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/compile.d.ts.map +1 -1
- package/dist/compile.js +46 -0
- package/dist/compile.js.map +1 -1
- package/dist/device-laws.d.ts +20 -0
- package/dist/device-laws.d.ts.map +1 -1
- package/dist/device-laws.js +185 -17
- package/dist/device-laws.js.map +1 -1
- package/dist/diagnostics.d.ts +1 -1
- package/dist/diagnostics.d.ts.map +1 -1
- package/dist/diagnostics.js +1 -1
- package/dist/diagnostics.js.map +1 -1
- package/dist/fixtures/circuits.d.ts +29 -4
- package/dist/fixtures/circuits.d.ts.map +1 -1
- package/dist/fixtures/circuits.js +145 -4
- package/dist/fixtures/circuits.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/latch-seed.d.ts +76 -14
- package/dist/latch-seed.d.ts.map +1 -1
- package/dist/latch-seed.js +184 -41
- package/dist/latch-seed.js.map +1 -1
- package/dist/lower.d.ts.map +1 -1
- package/dist/lower.js +33 -14
- package/dist/lower.js.map +1 -1
- package/dist/netlist.d.ts.map +1 -1
- package/dist/netlist.js +96 -3
- package/dist/netlist.js.map +1 -1
- package/dist/part-catalog.d.ts.map +1 -1
- package/dist/part-catalog.js +130 -15
- package/dist/part-catalog.js.map +1 -1
- package/dist/partition.js +4 -4
- package/dist/partition.js.map +1 -1
- package/dist/registry-data/bjt.d.ts.map +1 -1
- package/dist/registry-data/bjt.js +318 -1
- package/dist/registry-data/bjt.js.map +1 -1
- package/dist/registry-data/index.d.ts.map +1 -1
- package/dist/registry-data/index.js +8 -4
- package/dist/registry-data/index.js.map +1 -1
- package/dist/registry-data/jfet.d.ts.map +1 -1
- package/dist/registry-data/jfet.js +163 -0
- package/dist/registry-data/jfet.js.map +1 -1
- package/dist/types.d.ts +110 -5
- package/dist/types.d.ts.map +1 -1
- package/package.json +1 -1
package/dist/latch-seed.js
CHANGED
|
@@ -27,6 +27,145 @@
|
|
|
27
27
|
*/
|
|
28
28
|
const LATCH_SEED_VOLTS = 0.65;
|
|
29
29
|
export function findBistableLatches(netlist) {
|
|
30
|
+
const rails = detectorRails(netlist);
|
|
31
|
+
const pairs = candidatePairs(netlist, rails);
|
|
32
|
+
const latches = [];
|
|
33
|
+
for (const pair of pairs) {
|
|
34
|
+
const assessed = assessLatchSides(netlist, rails, pair.a, pair.b);
|
|
35
|
+
const bypassControls = (netlist.controls ?? []).filter((c) => c.role === "bypass");
|
|
36
|
+
let controlId = bypassControls.length === 1 ? (bypassControls[0]?.id ?? null) : null;
|
|
37
|
+
if (controlId === null) {
|
|
38
|
+
for (const dev of netlist.devices) {
|
|
39
|
+
if (dev.kind === "switch" && dev.control !== null) {
|
|
40
|
+
controlId = dev.control;
|
|
41
|
+
break;
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
latches.push({
|
|
46
|
+
controlId,
|
|
47
|
+
onWhenEngagedBase: assessed.onMember.base,
|
|
48
|
+
offWhenEngagedBase: assessed.offMember.base,
|
|
49
|
+
emitter: pair.a.emitter,
|
|
50
|
+
onWhenEngagedCollector: assessed.onMember.collector,
|
|
51
|
+
offWhenEngagedCollector: assessed.offMember.collector,
|
|
52
|
+
onWhenEngagedTransistorId: assessed.onMember.id,
|
|
53
|
+
offWhenEngagedTransistorId: assessed.offMember.id,
|
|
54
|
+
sideProvenance: assessed.sideProvenance,
|
|
55
|
+
});
|
|
56
|
+
}
|
|
57
|
+
return latches;
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* Latches where the connectivity derivation and the effect-status LED disagree about
|
|
61
|
+
* the engaged side. The detector keeps the connectivity answer; this names the
|
|
62
|
+
* conflict for the diagnostic, one item per latch.
|
|
63
|
+
*/
|
|
64
|
+
export function findLatchLedDisagreements(netlist) {
|
|
65
|
+
const rails = detectorRails(netlist);
|
|
66
|
+
const out = [];
|
|
67
|
+
for (const pair of candidatePairs(netlist, rails)) {
|
|
68
|
+
const assessed = assessLatchSides(netlist, rails, pair.a, pair.b);
|
|
69
|
+
if (assessed.sideProvenance === "connectivity" &&
|
|
70
|
+
assessed.ledVote !== null &&
|
|
71
|
+
assessed.ledVote.member.id !== assessed.onMember.id) {
|
|
72
|
+
out.push({
|
|
73
|
+
onWhenEngagedTransistorId: assessed.onMember.id,
|
|
74
|
+
ledOnTransistorId: assessed.ledVote.member.id,
|
|
75
|
+
ledId: assessed.ledVote.ledId,
|
|
76
|
+
ledPolarity: assessed.ledVote.polarity,
|
|
77
|
+
});
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
return out;
|
|
81
|
+
}
|
|
82
|
+
/**
|
|
83
|
+
* Which side is ON when engaged. Precedence is derivation order, not confidence
|
|
84
|
+
* blending: connectivity first, then the effect-status LED, then the floor.
|
|
85
|
+
*
|
|
86
|
+
* - **Connectivity.** The member whose collector gates the effect path is OFF when
|
|
87
|
+
* engaged, so the ON side is the other member.
|
|
88
|
+
* - **Effect-status LED.** A CHECK LED is lit when the pedal is engaged, so the
|
|
89
|
+
* member the LED indicates is the ON side — but only where connectivity refused.
|
|
90
|
+
* Where both speak and they disagree, connectivity stands and
|
|
91
|
+
* `findLatchLedDisagreements` reports it; that path never reaches a silent choice.
|
|
92
|
+
* - **Fallback.** The pre-fix assignment (lower base id) exactly, so fallback
|
|
93
|
+
* programs stay byte-identical; the provenance admits the name is a stable choice
|
|
94
|
+
* rather than a derived fact.
|
|
95
|
+
*/
|
|
96
|
+
function assessLatchSides(netlist, rails, a, b) {
|
|
97
|
+
const effectGateBaseNode = effectGatingBase(netlist, rails, a, b);
|
|
98
|
+
const ledVote = ledIndicatedOnMember(netlist, a, b);
|
|
99
|
+
if (effectGateBaseNode !== null) {
|
|
100
|
+
const offMember = effectGateBaseNode === a.base ? a : b;
|
|
101
|
+
const onMember = effectGateBaseNode === a.base ? b : a;
|
|
102
|
+
return { onMember, offMember, sideProvenance: "connectivity", ledVote };
|
|
103
|
+
}
|
|
104
|
+
if (ledVote !== null) {
|
|
105
|
+
const onMember = ledVote.member;
|
|
106
|
+
const offMember = ledVote.member.id === a.id ? b : a;
|
|
107
|
+
return { onMember, offMember, sideProvenance: "effect-status-led", ledVote };
|
|
108
|
+
}
|
|
109
|
+
const fallbackBase = Math.min(a.base, b.base);
|
|
110
|
+
const onMember = fallbackBase === a.base ? a : b;
|
|
111
|
+
const offMember = fallbackBase === a.base ? b : a;
|
|
112
|
+
return { onMember, offMember, sideProvenance: "fallback", ledVote };
|
|
113
|
+
}
|
|
114
|
+
/**
|
|
115
|
+
* The latch member an effect-status LED indicates as ON when engaged, or `null`.
|
|
116
|
+
*
|
|
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.
|
|
123
|
+
*/
|
|
124
|
+
function ledIndicatedOnMember(netlist, a, b) {
|
|
125
|
+
const leds = netlist.effectStatusLeds ?? [];
|
|
126
|
+
const votes = [];
|
|
127
|
+
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
|
+
});
|
|
136
|
+
}
|
|
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" });
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
if (votes.length === 0) {
|
|
144
|
+
return null;
|
|
145
|
+
}
|
|
146
|
+
const first = votes[0];
|
|
147
|
+
if (votes.every((vote) => vote.member.id === first.member.id)) {
|
|
148
|
+
return first;
|
|
149
|
+
}
|
|
150
|
+
return null;
|
|
151
|
+
}
|
|
152
|
+
/**
|
|
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.
|
|
156
|
+
*/
|
|
157
|
+
function cathodeRelation(netlist, cathode, collector) {
|
|
158
|
+
if (cathode === collector) {
|
|
159
|
+
return "direct";
|
|
160
|
+
}
|
|
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);
|
|
166
|
+
}
|
|
167
|
+
/** This detector's rail set: ground plus every asserted supply node. */
|
|
168
|
+
function detectorRails(netlist) {
|
|
30
169
|
const rails = new Set([0]);
|
|
31
170
|
for (const device of netlist.devices) {
|
|
32
171
|
if (device.kind === "voltage-source" || device.kind === "rail") {
|
|
@@ -35,6 +174,14 @@ export function findBistableLatches(netlist) {
|
|
|
35
174
|
}
|
|
36
175
|
}
|
|
37
176
|
}
|
|
177
|
+
return rails;
|
|
178
|
+
}
|
|
179
|
+
/**
|
|
180
|
+
* Candidate cross-coupled pairs: the four structural requirements (a direct resistor
|
|
181
|
+
* each way, a shared emitter, no rails on collectors or bases, exclusivity), without
|
|
182
|
+
* any side assignment.
|
|
183
|
+
*/
|
|
184
|
+
function candidatePairs(netlist, rails) {
|
|
38
185
|
const transistors = netlist.devices.flatMap((device) => {
|
|
39
186
|
if (device.kind !== "bjt") {
|
|
40
187
|
return [];
|
|
@@ -81,57 +228,53 @@ export function findBistableLatches(netlist) {
|
|
|
81
228
|
appearances.set(member.id, (appearances.get(member.id) ?? 0) + 1);
|
|
82
229
|
}
|
|
83
230
|
}
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
const
|
|
96
|
-
|
|
97
|
-
if (controlId === null) {
|
|
98
|
-
for (const dev of netlist.devices) {
|
|
99
|
-
if (dev.kind === "switch" && dev.control !== null) {
|
|
100
|
-
controlId = dev.control;
|
|
101
|
-
break;
|
|
102
|
-
}
|
|
103
|
-
}
|
|
104
|
-
}
|
|
105
|
-
latches.push({
|
|
106
|
-
controlId,
|
|
107
|
-
engagedBase: engaged.base,
|
|
108
|
-
bypassedBase: bypassed.base,
|
|
109
|
-
emitter: pair.a.emitter,
|
|
110
|
-
engagedCollector: engaged.collector,
|
|
111
|
-
bypassedCollector: bypassed.collector,
|
|
112
|
-
engagedTransistorId: engaged.id,
|
|
113
|
-
bypassedTransistorId: bypassed.id,
|
|
114
|
-
});
|
|
231
|
+
return pairs.filter((pair) => [pair.a, pair.b].every((m) => (appearances.get(m.id) ?? 0) <= 1));
|
|
232
|
+
}
|
|
233
|
+
/**
|
|
234
|
+
* An LED's anode or cathode node by role token, or `null` when the role is absent or
|
|
235
|
+
* repeated. Reads the folded name token first and the declared role second: both are
|
|
236
|
+
* typed terminal statements, and either may carry the `anode`/`cathode` word the
|
|
237
|
+
* source filed.
|
|
238
|
+
*/
|
|
239
|
+
export function ledTerminalNode(device, role) {
|
|
240
|
+
const named = device.identity.terminalRoles.flatMap((candidate, index) => candidate === role ? [index] : []);
|
|
241
|
+
if (named.length === 1) {
|
|
242
|
+
const node = device.nodes[named[0]];
|
|
243
|
+
return node === undefined ? null : node;
|
|
115
244
|
}
|
|
116
|
-
|
|
245
|
+
const declared = device.identity.declaredTerminalRoles.flatMap((candidate, index) => (candidate === role ? [index] : []));
|
|
246
|
+
if (declared.length === 1) {
|
|
247
|
+
const node = device.nodes[declared[0]];
|
|
248
|
+
return node === undefined ? null : node;
|
|
249
|
+
}
|
|
250
|
+
return null;
|
|
117
251
|
}
|
|
118
252
|
export function findLatchSeeds(netlist) {
|
|
119
253
|
const latches = findBistableLatches(netlist);
|
|
120
254
|
const seeds = [];
|
|
121
255
|
const seeded = new Set();
|
|
122
256
|
for (const latch of latches) {
|
|
123
|
-
if (seeded.has(latch.
|
|
257
|
+
if (seeded.has(latch.onWhenEngagedBase)) {
|
|
124
258
|
continue;
|
|
125
259
|
}
|
|
126
|
-
seeded.add(latch.
|
|
127
|
-
seeds.push({ node: latch.
|
|
260
|
+
seeded.add(latch.onWhenEngagedBase);
|
|
261
|
+
seeds.push({ node: latch.onWhenEngagedBase, volts: LATCH_SEED_VOLTS });
|
|
128
262
|
}
|
|
129
263
|
return seeds;
|
|
130
264
|
}
|
|
131
265
|
/**
|
|
132
|
-
* Which member
|
|
266
|
+
* Which member's collector gates the effect FET's gate, or `null` when that is not
|
|
133
267
|
* derivable from connectivity.
|
|
134
268
|
*
|
|
269
|
+
* This is the rule the old spine's `discrete-bypass-latch.ts` paid for, with the
|
|
270
|
+
* polarity corrected: the member found here is **off** when the pedal is engaged, not
|
|
271
|
+
* on. A collector pulled LOW (transistor ON) pulls the FET gate it steers low through
|
|
272
|
+
* the steering diode and turns that FET OFF — so the transistor whose collector
|
|
273
|
+
* carries the effect path must sit HIGH (off) for the effect to conduct, and the seed
|
|
274
|
+
* and the steering stamps belong to the *other* member. The pre-fix code seeded and
|
|
275
|
+
* steered this member instead, which is why the three derived latches in the corpus
|
|
276
|
+
* (`boss-sd-1`, `boss-ce-2`, `boss-dm-2`) rendered bypass at engaged control.
|
|
277
|
+
*
|
|
135
278
|
* Ported from the old spine's `discrete-bypass-latch.ts`, whose rule this repository already
|
|
136
279
|
* paid for: a latch's side is a control fact, and the two questions that decide it are which
|
|
137
280
|
* switches each collector gates, and which of those switch paths carries the audio the user
|
|
@@ -150,7 +293,7 @@ export function findLatchSeeds(netlist) {
|
|
|
150
293
|
*
|
|
151
294
|
* Both floods are blocked by rails, the same exclusion the rest of this file makes.
|
|
152
295
|
*/
|
|
153
|
-
function
|
|
296
|
+
function effectGatingBase(netlist, rails, a, b) {
|
|
154
297
|
const dcEdges = edgesOf(netlist, ["resistor", "diode"]);
|
|
155
298
|
const switches = netlist.devices.flatMap((switching) => {
|
|
156
299
|
if (switching.kind !== "jfet" && switching.kind !== "mosfet") {
|
|
@@ -198,12 +341,12 @@ function engagedBase(netlist, rails, a, b) {
|
|
|
198
341
|
const reached = flood(found.drain, audioEdges, rails);
|
|
199
342
|
return controlNodes.some((node) => reached.has(node));
|
|
200
343
|
});
|
|
201
|
-
const
|
|
202
|
-
const
|
|
203
|
-
if (
|
|
344
|
+
const gatingA = reachesAControl(gatedA);
|
|
345
|
+
const gatingB = reachesAControl(gatedB);
|
|
346
|
+
if (gatingA === gatingB) {
|
|
204
347
|
return null;
|
|
205
348
|
}
|
|
206
|
-
return
|
|
349
|
+
return gatingA ? a.base : b.base;
|
|
207
350
|
}
|
|
208
351
|
/** Undirected two-terminal edges of the given kinds; a pot contributes one per terminal pair. */
|
|
209
352
|
function edgesOf(netlist, kinds) {
|
package/dist/latch-seed.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"latch-seed.js","sourceRoot":"","sources":["../src/latch-seed.ts"],"names":[],"mappings":"AAAA,qDAAqD;AACrD,EAAE;AACF,qFAAqF;AACrF,sFAAsF;AACtF,wFAAwF;AACxF,yFAAyF;AACzF,2FAA2F;AAC3F,iDAAiD;AACjD,EAAE;AACF,0FAA0F;AAC1F,4FAA4F;AAC5F,4FAA4F;AAC5F,yFAAyF;AACzF,mFAAmF;AACnF,EAAE;AACF,sFAAsF;AACtF,gFAAgF;AAChF,qFAAqF;AACrF,uBAAuB;AAIvB;;;;;;;GAOG;AACH,MAAM,gBAAgB,GAAG,IAAI,CAAC;AAkD9B,MAAM,UAAU,mBAAmB,CAClC,OAAgG;IAEhG,MAAM,KAAK,GAAG,IAAI,GAAG,CAAS,CAAC,CAAC,CAAC,CAAC,CAAC;IACnC,KAAK,MAAM,MAAM,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;QACtC,IAAI,MAAM,CAAC,IAAI,KAAK,gBAAgB,IAAI,MAAM,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;YAChE,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC;gBACjC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YACjB,CAAC;QACF,CAAC;IACF,CAAC;IAED,MAAM,WAAW,GAAG,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,EAAE;QACtD,IAAI,MAAM,CAAC,IAAI,KAAK,KAAK,EAAE,CAAC;YAC3B,OAAO,EAAE,CAAC;QACX,CAAC;QACD,MAAM,SAAS,GAAG,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;QAChD,MAAM,IAAI,GAAG,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QACtC,MAAM,OAAO,GAAG,QAAQ,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;QAC5C,IAAI,SAAS,KAAK,IAAI,IAAI,IAAI,KAAK,IAAI,IAAI,OAAO,KAAK,IAAI,EAAE,CAAC;YAC7D,OAAO,EAAE,CAAC;QACX,CAAC;QACD,+EAA+E;QAC/E,IAAI,KAAK,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;YAC7C,OAAO,EAAE,CAAC;QACX,CAAC;QACD,OAAO,CAAC,EAAE,EAAE,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC;IAC9D,CAAC,CAAC,CAAC;IAEH,MAAM,cAAc,GAAG,CAAC,CAAS,EAAE,CAAS,EAAW,EAAE,CACxD,CAAC,KAAK,CAAC;QACP,OAAO,CAAC,OAAO,CAAC,IAAI,CACnB,CAAC,MAAM,EAAE,EAAE,CACV,MAAM,CAAC,IAAI,KAAK,UAAU;YAC1B,MAAM,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC;YACzB,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC;YACxB,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CACzB,CAAC;IAEH,MAAM,KAAK,GAAyD,EAAE,CAAC;IACvE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,WAAW,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;QAChD,KAAK,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,WAAW,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;YACpD,MAAM,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC;YACzB,MAAM,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC;YACzB,IAAI,CAAC,KAAK,SAAS,IAAI,CAAC,KAAK,SAAS,EAAE,CAAC;gBACxC,SAAS;YACV,CAAC;YACD,IAAI,CAAC,CAAC,OAAO,KAAK,CAAC,CAAC,OAAO,EAAE,CAAC;gBAC7B,SAAS;YACV,CAAC;YACD,IACC,CAAC,cAAc,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,IAAI,CAAC;gBACpC,CAAC,cAAc,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,IAAI,CAAC,EACnC,CAAC;gBACF,SAAS;YACV,CAAC;YACD,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;QACtB,CAAC;IACF,CAAC;IAED,kFAAkF;IAClF,MAAM,WAAW,GAAG,IAAI,GAAG,EAAkB,CAAC;IAC9C,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QAC1B,KAAK,MAAM,MAAM,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;YACvC,WAAW,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC,WAAW,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;QACnE,CAAC;IACF,CAAC;IAED,MAAM,OAAO,GAAoB,EAAE,CAAC;IACpC,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QAC1B,IACC,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,EAC7D,CAAC;YACF,SAAS;QACV,CAAC;QACD,qFAAqF;QACrF,oFAAoF;QACpF,MAAM,eAAe,GACpB,WAAW,CAAC,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC;YAC1C,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,IAAI,CAAY,CAAC;QAEhD,MAAM,OAAO,GAAG,eAAe,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;QAClE,MAAM,QAAQ,GAAG,eAAe,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;QAEnE,MAAM,cAAc,GAAG,CAAC,OAAO,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC,MAAM,CACrD,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,QAAQ,CAC1B,CAAC;QACF,IAAI,SAAS,GACZ,cAAc,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE,EAAE,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;QAEtE,IAAI,SAAS,KAAK,IAAI,EAAE,CAAC;YACxB,KAAK,MAAM,GAAG,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;gBACnC,IAAI,GAAG,CAAC,IAAI,KAAK,QAAQ,IAAI,GAAG,CAAC,OAAO,KAAK,IAAI,EAAE,CAAC;oBACnD,SAAS,GAAG,GAAG,CAAC,OAAO,CAAC;oBACxB,MAAM;gBACP,CAAC;YACF,CAAC;QACF,CAAC;QAED,OAAO,CAAC,IAAI,CAAC;YACZ,SAAS;YACT,WAAW,EAAE,OAAO,CAAC,IAAI;YACzB,YAAY,EAAE,QAAQ,CAAC,IAAI;YAC3B,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC,OAAO;YACvB,gBAAgB,EAAE,OAAO,CAAC,SAAS;YACnC,iBAAiB,EAAE,QAAQ,CAAC,SAAS;YACrC,mBAAmB,EAAE,OAAO,CAAC,EAAE;YAC/B,oBAAoB,EAAE,QAAQ,CAAC,EAAE;SACjC,CAAC,CAAC;IACJ,CAAC;IACD,OAAO,OAAO,CAAC;AAChB,CAAC;AAED,MAAM,UAAU,cAAc,CAC7B,OAAgB;IAEhB,MAAM,OAAO,GAAG,mBAAmB,CAAC,OAAO,CAAC,CAAC;IAC7C,MAAM,KAAK,GAAyB,EAAE,CAAC;IACvC,MAAM,MAAM,GAAG,IAAI,GAAG,EAAU,CAAC;IACjC,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;QAC7B,IAAI,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,WAAW,CAAC,EAAE,CAAC;YACnC,SAAS;QACV,CAAC;QACD,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;QAC9B,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,KAAK,CAAC,WAAW,EAAE,KAAK,EAAE,gBAAgB,EAAE,CAAC,CAAC;IAClE,CAAC;IACD,OAAO,KAAK,CAAC;AACd,CAAC;AAWD;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,SAAS,WAAW,CACnB,OAAiC,EACjC,KAA0B,EAC1B,CAAa,EACb,CAAa;IAEb,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC,CAAC;IACxD,MAAM,QAAQ,GAAG,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,SAAS,EAAE,EAAE;QACtD,IAAI,SAAS,CAAC,IAAI,KAAK,MAAM,IAAI,SAAS,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;YAC9D,OAAO,EAAE,CAAC;QACX,CAAC;QACD,MAAM,IAAI,GAAG,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;QACzC,MAAM,KAAK,GAAG,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;QAC3C,OAAO,IAAI,KAAK,IAAI,IAAI,KAAK,KAAK,IAAI;YACrC,CAAC,CAAC,EAAE;YACJ,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,MAAM,CAAC,SAAS,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;IAChD,CAAC,CAAC,CAAC;IAEH,MAAM,OAAO,GAAG,CAAC,SAAiB,EAAqB,EAAE;QACxD,MAAM,OAAO,GAAG,KAAK,CAAC,SAAS,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC;QACjD,OAAO,QAAQ;aACb,MAAM,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;aAClD,GAAG,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,CAAC,EAAE,CAAC;aAChC,IAAI,EAAE,CAAC;IACV,CAAC,CAAC;IACF,MAAM,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;IACpC,MAAM,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;IACpC,yFAAyF;IACzF,sCAAsC;IACtC,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAChD,OAAO,IAAI,CAAC;IACb,CAAC;IACD,yEAAyE;IACzE,IACC,MAAM,CAAC,MAAM,KAAK,MAAM,CAAC,MAAM;QAC/B,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,KAAK,EAAE,EAAE,CAAC,EAAE,KAAK,MAAM,CAAC,KAAK,CAAC,CAAC,EAChD,CAAC;QACF,OAAO,IAAI,CAAC;IACb,CAAC;IAED,MAAM,SAAS,GAAG,IAAI,GAAG,CAAC,CAAC,GAAG,MAAM,EAAE,GAAG,MAAM,CAAC,CAAC,CAAC;IAClD,MAAM,UAAU,GAAG,OAAO,CAAC,OAAO,EAAE;QACnC,UAAU;QACV,WAAW;QACX,UAAU;QACV,eAAe;KACf,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;IAC7C,0FAA0F;IAC1F,MAAM,YAAY,GAAG,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,EAAE,CACvD,MAAM,CAAC,OAAO,KAAK,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAC3C,CAAC;IAEF,MAAM,eAAe,GAAG,CAAC,KAAwB,EAAW,EAAE,CAC7D,KAAK,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,EAAE;QACvB,MAAM,KAAK,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,CAAC,EAAE,KAAK,QAAQ,CAAC,CAAC;QACtE,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;YACzB,OAAO,KAAK,CAAC;QACd,CAAC;QACD,MAAM,OAAO,GAAG,KAAK,CAAC,KAAK,CAAC,KAAK,EAAE,UAAU,EAAE,KAAK,CAAC,CAAC;QACtD,OAAO,YAAY,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC;IACvD,CAAC,CAAC,CAAC;IAEJ,MAAM,QAAQ,GAAG,eAAe,CAAC,MAAM,CAAC,CAAC;IACzC,MAAM,QAAQ,GAAG,eAAe,CAAC,MAAM,CAAC,CAAC;IACzC,IAAI,QAAQ,KAAK,QAAQ,EAAE,CAAC;QAC3B,OAAO,IAAI,CAAC;IACb,CAAC;IACD,OAAO,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;AACnC,CAAC;AAED,iGAAiG;AACjG,SAAS,OAAO,CACf,OAAiC,EACjC,KAAgC;IAEhC,MAAM,MAAM,GAAG,IAAI,GAAG,CAAS,KAAK,CAAC,CAAC;IACtC,MAAM,KAAK,GAAW,EAAE,CAAC;IACzB,KAAK,MAAM,MAAM,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;QACtC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC;YAC9B,SAAS;QACV,CAAC;QACD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;YACjD,KAAK,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;gBACrD,MAAM,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;gBAC1B,MAAM,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;gBAC1B,IAAI,CAAC,KAAK,SAAS,IAAI,CAAC,KAAK,SAAS,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;oBACnD,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;gBAC7C,CAAC;YACF,CAAC;QACF,CAAC;IACF,CAAC;IACD,OAAO,KAAK,CAAC;AACd,CAAC;AAED,sDAAsD;AACtD,SAAS,KAAK,CACb,KAAa,EACb,KAAsB,EACtB,OAA4B;IAE5B,IAAI,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;QACxB,OAAO,IAAI,GAAG,EAAE,CAAC;IAClB,CAAC;IACD,MAAM,IAAI,GAAG,IAAI,GAAG,CAAS,CAAC,KAAK,CAAC,CAAC,CAAC;IACtC,MAAM,KAAK,GAAa,CAAC,KAAK,CAAC,CAAC;IAChC,OAAO,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACzB,MAAM,IAAI,GAAG,KAAK,CAAC,GAAG,EAAY,CAAC;QACnC,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YAC1B,MAAM,KAAK,GAAG,IAAI,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;YACzE,IAAI,KAAK,KAAK,IAAI,IAAI,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;gBAC7D,SAAS;YACV,CAAC;YACD,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;YAChB,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACnB,CAAC;IACF,CAAC;IACD,OAAO,IAAI,CAAC;AACb,CAAC;AAED,sFAAsF;AACtF,SAAS,QAAQ,CAAC,MAAc,EAAE,IAAY;IAC7C,MAAM,KAAK,GAAG,MAAM,CAAC,QAAQ,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,SAAS,EAAE,KAAK,EAAE,EAAE,CACxE,SAAS,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CACjC,CAAC;IACF,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACxB,OAAO,IAAI,CAAC;IACb,CAAC;IACD,MAAM,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAW,CAAC,CAAC;IAC9C,OAAO,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;AACzC,CAAC"}
|
|
1
|
+
{"version":3,"file":"latch-seed.js","sourceRoot":"","sources":["../src/latch-seed.ts"],"names":[],"mappings":"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"}
|
package/dist/lower.d.ts.map
CHANGED
|
@@ -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,
|
|
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,CAgwCP;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
|
@@ -16,7 +16,7 @@
|
|
|
16
16
|
// The result is that one lowered program is valid at every sample rate and every knob
|
|
17
17
|
// position, which is what makes rate independence testable: compile once, run at two
|
|
18
18
|
// rates, and the outputs must match.
|
|
19
|
-
import { SWITCH_ON_OHMS } from "./device-laws.js";
|
|
19
|
+
import { invalidLdrTableReason, SWITCH_ON_OHMS } from "./device-laws.js";
|
|
20
20
|
import { findBistableLatches, findLatchSeeds, } from "./latch-seed.js";
|
|
21
21
|
import { computeSparseSchedule } from "./sparse-schedule.js";
|
|
22
22
|
import { computeStampPartition, remapStampNodes, shouldEliminate, stampControl, stampNeedsNewton, } from "./stamp-partition.js";
|
|
@@ -236,10 +236,10 @@ invertingInputNodes = new Set(), acOutputDistance = new Map()) {
|
|
|
236
236
|
// latch sets (boss-dm-3) never reach this branch.
|
|
237
237
|
const latchNodes = new Set();
|
|
238
238
|
for (const latch of latches) {
|
|
239
|
-
latchNodes.add(latch.
|
|
240
|
-
latchNodes.add(latch.
|
|
241
|
-
latchNodes.add(latch.
|
|
242
|
-
latchNodes.add(latch.
|
|
239
|
+
latchNodes.add(latch.onWhenEngagedCollector);
|
|
240
|
+
latchNodes.add(latch.offWhenEngagedCollector);
|
|
241
|
+
latchNodes.add(latch.onWhenEngagedBase);
|
|
242
|
+
latchNodes.add(latch.offWhenEngagedBase);
|
|
243
243
|
}
|
|
244
244
|
if (device.nodes.length > 2 &&
|
|
245
245
|
device.nodes.some((node) => latchNodes.has(node))) {
|
|
@@ -886,6 +886,10 @@ invertingInputNodes = new Set(), acOutputDistance = new Map()) {
|
|
|
886
886
|
ldrB === undefined) {
|
|
887
887
|
throw new Error(`optocoupler ${device.id} requires 4 terminals: anode, cathode, ldrA, ldrB`);
|
|
888
888
|
}
|
|
889
|
+
const tableReason = invalidLdrTableReason(law.ldrTableCurrentAmps, law.ldrTableOhms);
|
|
890
|
+
if (tableReason !== null) {
|
|
891
|
+
throw new LoweringError(`optocoupler ${device.id} has an invalid LDR table: ${tableReason}`, device.id);
|
|
892
|
+
}
|
|
889
893
|
stamps.push({
|
|
890
894
|
kind: "optocoupler",
|
|
891
895
|
ledAnode,
|
|
@@ -898,6 +902,13 @@ invertingInputNodes = new Set(), acOutputDistance = new Map()) {
|
|
|
898
902
|
ldrMaxOhms: law.ldrMaxOhms,
|
|
899
903
|
ldrPowerLawCoefficientOhms: law.ldrPowerLawCoefficientOhms,
|
|
900
904
|
ldrPowerLawExponent: law.ldrPowerLawExponent,
|
|
905
|
+
...(law.ldrTableCurrentAmps !== undefined &&
|
|
906
|
+
law.ldrTableOhms !== undefined
|
|
907
|
+
? {
|
|
908
|
+
ldrTableCurrentAmps: [...law.ldrTableCurrentAmps],
|
|
909
|
+
ldrTableOhms: [...law.ldrTableOhms],
|
|
910
|
+
}
|
|
911
|
+
: {}),
|
|
901
912
|
});
|
|
902
913
|
break;
|
|
903
914
|
}
|
|
@@ -1115,18 +1126,26 @@ invertingInputNodes = new Set(), acOutputDistance = new Map()) {
|
|
|
1115
1126
|
// A seed belongs to the region that holds the node, and regions are disjoint.
|
|
1116
1127
|
const regionNodes = new Set(region.nodes);
|
|
1117
1128
|
const operatingPointSeeds = latchSeeds.filter((seed) => regionNodes.has(seed.node));
|
|
1118
|
-
// Complementary collector-steering switch stamps for bistable flip-flops
|
|
1119
|
-
//
|
|
1120
|
-
//
|
|
1121
|
-
//
|
|
1122
|
-
//
|
|
1129
|
+
// Complementary collector-steering switch stamps for bistable flip-flops.
|
|
1130
|
+
//
|
|
1131
|
+
// Polarity, measured 2026-10-23: the member whose collector gates the effect FET
|
|
1132
|
+
// (`offWhenEngaged`) sits HIGH (off) when the pedal is engaged, so the effect FET's
|
|
1133
|
+
// gate sits high and the effect conducts; the other member (`onWhenEngaged`) sits
|
|
1134
|
+
// LOW (on). A collector held LOW forces its own transistor ON through the
|
|
1135
|
+
// cross-coupling (the opposite base follows the held collector down, the opposite
|
|
1136
|
+
// collector rises, the held transistor's base rises), so at control >= 0.5
|
|
1137
|
+
// (engaged) the `onWhenEngaged` collector is pulled to the emitter (100 ohm) and
|
|
1138
|
+
// at < 0.5 the `offWhenEngaged` collector is. The pre-fix code pulled the
|
|
1139
|
+
// effect-gating collector low at engaged instead, which turns the effect FET OFF:
|
|
1140
|
+
// `boss-sd-1` at bypass control 1 rendered dry (−0.73 dB, THD 0.02 %, effect FET
|
|
1141
|
+
// off) and at 0 rendered the effect (+5.3 dB, THD 11.8 %).
|
|
1123
1142
|
for (const latch of latches) {
|
|
1124
1143
|
if (latch.controlId !== null &&
|
|
1125
|
-
regionNodes.has(latch.
|
|
1126
|
-
regionNodes.has(latch.
|
|
1144
|
+
regionNodes.has(latch.onWhenEngagedCollector) &&
|
|
1145
|
+
regionNodes.has(latch.offWhenEngagedCollector)) {
|
|
1127
1146
|
stamps.push({
|
|
1128
1147
|
kind: "switch",
|
|
1129
|
-
a: latch.
|
|
1148
|
+
a: latch.onWhenEngagedCollector,
|
|
1130
1149
|
b: latch.emitter,
|
|
1131
1150
|
control: latch.controlId,
|
|
1132
1151
|
onOhms: 100,
|
|
@@ -1134,7 +1153,7 @@ invertingInputNodes = new Set(), acOutputDistance = new Map()) {
|
|
|
1134
1153
|
});
|
|
1135
1154
|
stamps.push({
|
|
1136
1155
|
kind: "switch",
|
|
1137
|
-
a: latch.
|
|
1156
|
+
a: latch.offWhenEngagedCollector,
|
|
1138
1157
|
b: latch.emitter,
|
|
1139
1158
|
control: latch.controlId,
|
|
1140
1159
|
onOhms: 1e8,
|