@vessel-dsp/compiler 0.3.0 → 0.5.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 +4 -1
- package/dist/compile.d.ts.map +1 -1
- package/dist/compile.js +44 -0
- package/dist/compile.js.map +1 -1
- package/dist/device-laws.d.ts.map +1 -1
- package/dist/device-laws.js +12 -1
- package/dist/device-laws.js.map +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +5 -0
- package/dist/index.js.map +1 -1
- package/dist/lower.d.ts.map +1 -1
- package/dist/lower.js +4 -0
- package/dist/lower.js.map +1 -1
- package/dist/netlist.d.ts +22 -0
- package/dist/netlist.d.ts.map +1 -1
- package/dist/netlist.js +97 -5
- package/dist/netlist.js.map +1 -1
- package/dist/part-catalog.d.ts +12 -0
- package/dist/part-catalog.d.ts.map +1 -1
- package/dist/part-catalog.js +220 -1
- package/dist/part-catalog.js.map +1 -1
- package/dist/registry.d.ts +12 -0
- package/dist/registry.d.ts.map +1 -1
- package/dist/registry.js +31 -0
- package/dist/registry.js.map +1 -1
- package/dist/sparse-schedule.d.ts +51 -0
- package/dist/sparse-schedule.d.ts.map +1 -1
- package/dist/sparse-schedule.js +220 -0
- package/dist/sparse-schedule.js.map +1 -1
- package/dist/types.d.ts +47 -1
- package/dist/types.d.ts.map +1 -1
- package/package.json +1 -1
package/dist/part-catalog.d.ts
CHANGED
|
@@ -1,5 +1,17 @@
|
|
|
1
1
|
import type { PartRegistry } from "./registry";
|
|
2
2
|
export declare const zenerCatalogPartIds: ReadonlySet<string>;
|
|
3
|
+
/** One datasheet-stated gain-bandwidth product and the printed row it was transcribed from. */
|
|
4
|
+
export type OpampGainBandwidthRow = {
|
|
5
|
+
readonly partIds: readonly string[];
|
|
6
|
+
readonly hertz: number;
|
|
7
|
+
readonly source: string;
|
|
8
|
+
};
|
|
9
|
+
export declare const opampGainBandwidthDatasheet: readonly OpampGainBandwidthRow[];
|
|
10
|
+
/** Op-amp ids this catalog holds whose datasheet states no TYP gain-bandwidth figure, and why. They stay `null`. */
|
|
11
|
+
export declare const opampGainBandwidthAbsent: ReadonlyArray<{
|
|
12
|
+
readonly partIds: readonly string[];
|
|
13
|
+
readonly reason: string;
|
|
14
|
+
}>;
|
|
3
15
|
/**
|
|
4
16
|
* Every part id whose `fet` entry refines the gate term only, folded for comparison.
|
|
5
17
|
* `report-part-store-drift.ts` keys its channel-field exclusion on this set -- a catalog
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"part-catalog.d.ts","sourceRoot":"","sources":["../src/part-catalog.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"part-catalog.d.ts","sourceRoot":"","sources":["../src/part-catalog.ts"],"names":[],"mappings":"AA0CA,OAAO,KAAK,EAAa,YAAY,EAAE,MAAM,YAAY,CAAC;AAkM1D,eAAO,MAAM,mBAAmB,EAAE,WAAW,CAAC,MAAM,CAEnD,CAAC;AA+8MF,+FAA+F;AAC/F,MAAM,MAAM,qBAAqB,GAAG;IACnC,QAAQ,CAAC,OAAO,EAAE,SAAS,MAAM,EAAE,CAAC;IACpC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CACxB,CAAC;AAEF,eAAO,MAAM,2BAA2B,EAAE,SAAS,qBAAqB,EAwFvE,CAAC;AAEF,oHAAoH;AACpH,eAAO,MAAM,wBAAwB,EAAE,aAAa,CAAC;IACpD,QAAQ,CAAC,OAAO,EAAE,SAAS,MAAM,EAAE,CAAC;IACpC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CACxB,CAuDA,CAAC;AAwEF;;;;;;GAMG;AACH,eAAO,MAAM,kBAAkB,EAAE,WAAW,CAAC,MAAM,CAAuB,CAAC;AAE3E;;GAEG;AACH,eAAO,MAAM,gBAAgB,EAAE,YAE9B,CAAC"}
|
package/dist/part-catalog.js
CHANGED
|
@@ -29,6 +29,16 @@
|
|
|
29
29
|
// The one thing this file needs from an op-amp datasheet is **open-loop gain**. `ideal-opamp` takes
|
|
30
30
|
// `openLoopGain` plus rails, and the rails are the pedal's rather than the part's, so a dual op-amp
|
|
31
31
|
// is a complete model from one published number and its pinout.
|
|
32
|
+
//
|
|
33
|
+
// **Gain-bandwidth product is the second figure, and it has its own table** (`opampGainBandwidthDatasheet`
|
|
34
|
+
// below) rather than a field on each entry, because one entry here often covers parts whose datasheets
|
|
35
|
+
// print different products (the TL072/NE5532/LM358 entry is one law over three datasheets). The TYP column
|
|
36
|
+
// is transcribed ("typical" here is that datasheet's own TYP column for that part, not a generic typical
|
|
37
|
+
// value), never MIN or MAX, never a graph read by eye, never a registry or curated-record number.
|
|
38
|
+
// A part whose datasheet prints no TYP gain-bandwidth row is listed in `opampGainBandwidthAbsent` with the
|
|
39
|
+
// reason and gets no figure, so its stamp is `null` and the compile names it (`opamp-gain-bandwidth-default`).
|
|
40
|
+
// Matching is by exact folded part id, as everywhere in this file: an id the datasheet does not print is not
|
|
41
|
+
// covered because a sibling is.
|
|
32
42
|
import { foldPartId } from "./registry.js";
|
|
33
43
|
/**
|
|
34
44
|
* An op-amp section as the registry states it: the part's own gain, and no rails.
|
|
@@ -287,12 +297,18 @@ const entries = [
|
|
|
287
297
|
// 100 dB is 10^(100/20) = 100,000, which is what the part record's "100 k" states in the other
|
|
288
298
|
// unit. `boss-ce-2b` says `NJM4558DD`; the datasheet's own numbers differ from it only in
|
|
289
299
|
// package/rank suffix and are listed alongside.
|
|
300
|
+
// `JRC4558D` is the one knowingly non-printed id here: the Nisshinbo sheet prints NJM4558D,
|
|
301
|
+
// not JRC4558D, and the identification of JRC4558D as the NJR/JRC marking of the NJM4558D
|
|
302
|
+
// rests on `parts/op-amps/JRC4558D.md` ("NJR/JRC version. Same datasheet specs as NJM4558"),
|
|
303
|
+
// not on this sheet. It is carried anyway per owner decision 2026-10-15, because a real
|
|
304
|
+
// Boss SD-1 specimen carries a chip marked "JRC 4558D" and three corpus packets name it.
|
|
290
305
|
// **Pin labels corrected and role groups added 2026-09-02 (W2).** The pinout read `OUT_B, IN_B_MINUS, IN_B_PLUS, VEE, IN_A_PLUS, IN_A_MINUS, OUT_A, VCC` -- the datasheet's A and B swapped. Electrically it made no difference, because both sections are the same `ideal-opamp` law and each section's triple was internally consistent, so this is a documentation correction: the positions are physical DIP-8 pins either way and the `sections` indices are unchanged.
|
|
291
306
|
// The role groups carry **only** the pin-numbered spellings, deliberately. Generic aliases (`noninverting`, `out`) would let one declared role satisfy two different groups -- A's and B's -- and `matchesTerminalRoles` would then identify any 5-terminal section as this whole package. Pin-numbered tokens are unambiguous per position. `boss-dm-3`'s `IC1` is the only corpus device declaring a 4558 as an 8-pin package rather than as sections.
|
|
292
307
|
{
|
|
293
308
|
"partIds": [
|
|
294
309
|
"NJM4558DD",
|
|
295
310
|
"NJM4558D",
|
|
311
|
+
"JRC4558D",
|
|
296
312
|
"NJM4558M",
|
|
297
313
|
"NJM4558E",
|
|
298
314
|
"NJM4558V",
|
|
@@ -6697,6 +6713,207 @@ const entries = [
|
|
|
6697
6713
|
gateScaleVolts: 0.06,
|
|
6698
6714
|
}),
|
|
6699
6715
|
];
|
|
6716
|
+
export const opampGainBandwidthDatasheet = [
|
|
6717
|
+
{
|
|
6718
|
+
partIds: ["NJM4558DD", "NJM4558D", "JRC4558D", "NJM4558M", "NJM4558E", "NJM4558V", "NJM4558L", "NJM4558"],
|
|
6719
|
+
hertz: 3e6,
|
|
6720
|
+
source: "NJM4558/datasheets/nisshinbo-njm4558.pdf (Nisshinbo NJM4558, date code 20250303) p2, ELECTRICAL " +
|
|
6721
|
+
"CHARACTERISTICS (V+/V-=+-15V, Ta=25C): 'Gain Bandwidth Product | GB | MIN - | TYP 3 | MAX - | MHz'. " +
|
|
6722
|
+
"One column for every suffix; the D rank changes the noise row only. " +
|
|
6723
|
+
"JRC4558D is not a printed id in this sheet: it is the NJR/JRC marking of the NJM4558D per " +
|
|
6724
|
+
"parts/op-amps/JRC4558D.md ('NJR/JRC version. Same datasheet specs as NJM4558'; GBP 3 M), included per " +
|
|
6725
|
+
"owner decision 2026-10-15 because a Boss SD-1 specimen carries a chip marked 'JRC 4558D' and three " +
|
|
6726
|
+
"corpus packets name JRC4558D. Secondary only: the 1980s JRC databook scan prints the part as NJM4558D " +
|
|
6727
|
+
"under the JRC logo (p2-98).",
|
|
6728
|
+
},
|
|
6729
|
+
{
|
|
6730
|
+
partIds: ["RC4558", "RC4558P", "RC4558D"],
|
|
6731
|
+
hertz: 4e6,
|
|
6732
|
+
source: "RC4558/datasheets/rc4558-ti.pdf and RC4558P/datasheets/rc4558p-ti.pdf (TI SLOS073H, rev Oct 2024; the " +
|
|
6733
|
+
"two are identical through p35) 5.5 p6, VCC+-=+-15V, TA=25C, RL=2k: 'GBW | Gain-bandwidth product | " +
|
|
6734
|
+
"f = 10kHz | TYP 4 | MHz'. Rev G printed 3 MHz; this copy (Rev H) changed it to 4.",
|
|
6735
|
+
},
|
|
6736
|
+
{
|
|
6737
|
+
partIds: ["TL061", "TL061CP", "TL061CN", "TL062", "TL062C", "TL062CP", "TL062CN"],
|
|
6738
|
+
hertz: 1e6,
|
|
6739
|
+
source: "TL062/datasheets/tl062.pdf (TI SLOS078N, rev Aug 2023) Table 6.7 p8 (the same row and value in Tables " +
|
|
6740
|
+
"6.8 p9 and 6.9 p10): 'B1 | Unity-gain bandwidth | RL = 10k, TA = 25C | TYP 1 | MHz' in every grade column.",
|
|
6741
|
+
},
|
|
6742
|
+
{
|
|
6743
|
+
partIds: ["TL071CP", "TL072CP", "TL082CP"],
|
|
6744
|
+
hertz: 5.25e6,
|
|
6745
|
+
source: "TL072/datasheets/tl072.pdf and TL071/datasheets/tl071.pdf (byte-identical; TI SLOS080W, rev Jul 2025) " +
|
|
6746
|
+
"5.8 p15, VS=+-15V, TA=25C: 'GBW | Gain-bandwidth product | All other devices | TYP 5.25 | MHz' (the row " +
|
|
6747
|
+
"'All NS and PS packages; All TL07xM devices' is TYP 3). TL082CP: TL082/datasheets/tl082.pdf (SLOS081O, " +
|
|
6748
|
+
"rev Sep 2025) 5.8 p14, the same two rows; its Rev N entry p29: 'Increased gain bandwidth of all " +
|
|
6749
|
+
"non-NS/non-PS packages and non-TL08xM devices from 3 MHz to 5.25 MHz'. A -CP part is a PDIP: neither an " +
|
|
6750
|
+
"NS/PS package nor an M device, so the 'all other devices' row applies.",
|
|
6751
|
+
},
|
|
6752
|
+
{
|
|
6753
|
+
partIds: ["NE5532", "NE5532P", "NE5532D"],
|
|
6754
|
+
hertz: 12e6,
|
|
6755
|
+
source: "NE5532/datasheets/ne5532.pdf (TI SLOS075K, rev Dec 2025) 5.5 p4, VCC+-=+-15V, TA=25C: 'B1 | Unity-gain " +
|
|
6756
|
+
"bandwidth | TYP 12 | MHz' (p1 Features: '12MHz Typ'; Rev K p11: 'Changed ... from 10MHz to 12MHz typ'). " +
|
|
6757
|
+
"The same document's prose, 6.3.1 p6 and 7.1.2.1 p8, still says 10 MHz; the characteristics table is taken.",
|
|
6758
|
+
},
|
|
6759
|
+
{
|
|
6760
|
+
partIds: ["LM358", "LM358N", "LM358P"],
|
|
6761
|
+
hertz: 0.7e6,
|
|
6762
|
+
source: "LM358/datasheets/lm358-ti.pdf (TI SLOS068AB, rev Oct 2024) 5.7 p10 (LM358, LM358A), VS=5V, TA=25C: " +
|
|
6763
|
+
"'GBW | Gain bandwidth product | TYP 0.7 | MHz'. The B/BA versions (5.5 p6) are TYP 1.2 and are different " +
|
|
6764
|
+
"part ids; the only PDIP orderables printed are LM358P and LM358AP.",
|
|
6765
|
+
},
|
|
6766
|
+
{
|
|
6767
|
+
partIds: ["M5218AL", "M5218AP", "M5218AFP"],
|
|
6768
|
+
hertz: 7e6,
|
|
6769
|
+
source: "5218/datasheets/mitsubishi-m5218.pdf (Mitsubishi M5218AL/P/FP, no document number or date; image scan) " +
|
|
6770
|
+
"p2 (folio 2-468), Ta=25C, Vcc=+-15V: 'fT | Gain bandwidth product | TYP 7 | MHz' (p1 Features: " +
|
|
6771
|
+
"'fT=7MHz(typ.)'). The sheet is the A grade; the plain M5218L, P and FP ids are not on it.",
|
|
6772
|
+
},
|
|
6773
|
+
{
|
|
6774
|
+
partIds: ["TL022", "TL022C", "TL022CP", "TL022CD", "TL022CN"],
|
|
6775
|
+
hertz: 0.5e6,
|
|
6776
|
+
source: "TL022/datasheets/ti-tl022.pdf (TI SLOS076, rev Sep 1990) p3, VCC+-=+-15V, TA=25C: 'B1 | Unity-gain " +
|
|
6777
|
+
"bandwidth | TL022C TYP 0.5 | TL022M TYP 0.5 | MHz'.",
|
|
6778
|
+
},
|
|
6779
|
+
{
|
|
6780
|
+
partIds: ["OP07CP", "OP07DP", "OP07DN"],
|
|
6781
|
+
hertz: 0.6e6,
|
|
6782
|
+
source: "OP07/datasheets/op07-ti.pdf (TI SLOS099H, rev Mar 2023) 6.5 p6, TA=25C, VS=+-15V, RL=2k, FREQUENCY " +
|
|
6783
|
+
"RESPONSE: 'Unity gain bandwidth | MIN 0.4 | TYP 0.6 | MHz'; footnote (1): the listed specifications apply " +
|
|
6784
|
+
"to OP07C and OP07D. The row has no package split.",
|
|
6785
|
+
},
|
|
6786
|
+
{
|
|
6787
|
+
partIds: ["NE5534", "NJM5534", "NJM5534D", "NJM5534M"],
|
|
6788
|
+
hertz: 10e6,
|
|
6789
|
+
source: "NJM5534D/datasheets/NE5534_TI.pdf (TI SLOS070D, rev Nov 2014) 7.5 p5, VCC+-=+-15V, TA=25C: 'B1 | " +
|
|
6790
|
+
"Unity-gain bandwidth | CC = 22 pF, CL = 100 pF | TYP 10 | MHz'; and njrc-njm5534d-page-2.png (New Japan " +
|
|
6791
|
+
"Radio NJM5534, folio 4-236): 'Gain Bandwidth Product | GB | CC=22pF, CL=100pF | TYP 10 | MHz'. Both state " +
|
|
6792
|
+
"the figure with a 22 pF compensation capacitor.",
|
|
6793
|
+
},
|
|
6794
|
+
];
|
|
6795
|
+
/** Op-amp ids this catalog holds whose datasheet states no TYP gain-bandwidth figure, and why. They stay `null`. */
|
|
6796
|
+
export const opampGainBandwidthAbsent = [
|
|
6797
|
+
{
|
|
6798
|
+
partIds: ["uPC4558C", "uPC4558G2", "uPC4558"],
|
|
6799
|
+
reason: "UPC4558/datasheets/renesas-upc258-upc4558.pdf (Renesas R03DS0145EJ0200 Rev 2.00) prints no gain-bandwidth " +
|
|
6800
|
+
"row: the p3 electrical characteristics list slew rate (1.0 V/us) and no GB/GBW/fT/B1. The p4 'AV vs. f' " +
|
|
6801
|
+
"graph reaches 0 dB near 1.5 MHz by eye, which is not a printed figure. The registry's 3 MHz has no " +
|
|
6802
|
+
"support in this sheet.",
|
|
6803
|
+
},
|
|
6804
|
+
{
|
|
6805
|
+
partIds: ["RC4558C", "4558"],
|
|
6806
|
+
reason: "RC4558C is not an orderable printed in SLOS073H, and '4558' is a generic name no datasheet owns.",
|
|
6807
|
+
},
|
|
6808
|
+
{
|
|
6809
|
+
partIds: ["TL071", "TL071CN", "TL072", "TL072CN", "TL072IP", "TL072D", "TL082"],
|
|
6810
|
+
reason: "The TL07x/TL08x GBW row splits on package and grade (TYP 3 MHz for NS/PS packages and M grades, TYP 5.25 " +
|
|
6811
|
+
"for all other devices). These ids do not state, or the datasheet does not print for them, which row " +
|
|
6812
|
+
"applies.",
|
|
6813
|
+
},
|
|
6814
|
+
{
|
|
6815
|
+
partIds: ["LF353", "LF353N", "LF353M", "LM741", "UA741", "uA741", "TA7504S", "TA7504", "MC33178", "MC33178P", "MC33178D", "BA718"],
|
|
6816
|
+
reason: "No vendored datasheet.",
|
|
6817
|
+
},
|
|
6818
|
+
{
|
|
6819
|
+
partIds: ["CA1458", "CA1458E", "CA1458T"],
|
|
6820
|
+
reason: "The datasheet this file cites for open-loop gain (Harris File Number 531.2) is not vendored in the " +
|
|
6821
|
+
"artifacts library, so no GBW row can be quoted.",
|
|
6822
|
+
},
|
|
6823
|
+
{
|
|
6824
|
+
partIds: [
|
|
6825
|
+
"M5218A", "M5218L", "M5218P", "M5218FP", "M5218",
|
|
6826
|
+
"M5216AL", "M5216AP", "M5216AFP", "M5216A", "M5216L", "M5216P", "M5216FP", "M5216",
|
|
6827
|
+
"M5281AL", "M5281AP", "M5281AFP", "M5281A", "M5281L", "M5281P", "M5281FP", "M5281",
|
|
6828
|
+
],
|
|
6829
|
+
reason: "The vendored Mitsubishi sheet is the M5218AL/P/FP document; the plain M5218 L/P/FP, the bare 'A' and " +
|
|
6830
|
+
"'M5218' ids are not printed on it, and M5216/M5281 appear in no vendored datasheet.",
|
|
6831
|
+
},
|
|
6832
|
+
{
|
|
6833
|
+
partIds: ["M5223L", "M5223P", "M5223FP", "M5223"],
|
|
6834
|
+
reason: "M5223AL/datasheets/m5223al-page-2.png has no gain-bandwidth row; its 'Voltage Gain vs Frequency Response' " +
|
|
6835
|
+
"graph reaches 0 dB near 1 MHz at VCC=15 V and near 2 MHz at VCC=30 V by eye.",
|
|
6836
|
+
},
|
|
6837
|
+
{
|
|
6838
|
+
partIds: ["OP07"],
|
|
6839
|
+
reason: "The OP07 sheet's electrical characteristics apply to OP07C and OP07D only; the bare id has no column.",
|
|
6840
|
+
},
|
|
6841
|
+
{
|
|
6842
|
+
partIds: ["TL022CP2", "AK4552VT", "AK4552", "AK4552VT13", "AK4552VT8"],
|
|
6843
|
+
reason: "Not an op-amp datasheet part: a converter or macro shell modelled with an op-amp section.",
|
|
6844
|
+
},
|
|
6845
|
+
];
|
|
6846
|
+
/**
|
|
6847
|
+
* The catalog's op-amp entries with each datasheet product stamped onto the sections of exactly the ids
|
|
6848
|
+
* it covers. An entry whose ids have different products (or none) is split into one entry per product,
|
|
6849
|
+
* keeping every other field, so no id changes behaviour except by gaining its own figure.
|
|
6850
|
+
*
|
|
6851
|
+
* Loud on any mismatch: a row or absent id the catalog holds no op-amp entry for, an id in both lists, or
|
|
6852
|
+
* an id in two rows is a table error and throws at load rather than being silently skipped.
|
|
6853
|
+
*/
|
|
6854
|
+
function withDatasheetGainBandwidth(base) {
|
|
6855
|
+
const rowOf = new Map();
|
|
6856
|
+
for (const row of opampGainBandwidthDatasheet) {
|
|
6857
|
+
for (const id of row.partIds) {
|
|
6858
|
+
const folded = foldPartId(id);
|
|
6859
|
+
if (rowOf.has(folded))
|
|
6860
|
+
throw new Error(`gain-bandwidth table names ${id} twice`);
|
|
6861
|
+
rowOf.set(folded, row);
|
|
6862
|
+
}
|
|
6863
|
+
}
|
|
6864
|
+
const absent = new Set();
|
|
6865
|
+
for (const { partIds } of opampGainBandwidthAbsent) {
|
|
6866
|
+
for (const id of partIds) {
|
|
6867
|
+
const folded = foldPartId(id);
|
|
6868
|
+
if (rowOf.has(folded))
|
|
6869
|
+
throw new Error(`${id} is both given a gain-bandwidth figure and listed absent`);
|
|
6870
|
+
absent.add(folded);
|
|
6871
|
+
}
|
|
6872
|
+
}
|
|
6873
|
+
const seen = new Set();
|
|
6874
|
+
const out = [];
|
|
6875
|
+
for (const entry of base) {
|
|
6876
|
+
const sections = entry.model.kind === "sections" ? entry.model.sections : null;
|
|
6877
|
+
const isOpamp = sections !== null && sections.length > 0 && sections.every((section) => section.law.kind === "ideal-opamp");
|
|
6878
|
+
if (!isOpamp || sections === null || entry.model.kind !== "sections") {
|
|
6879
|
+
out.push(entry);
|
|
6880
|
+
continue;
|
|
6881
|
+
}
|
|
6882
|
+
const groups = new Map();
|
|
6883
|
+
for (const id of entry.partIds) {
|
|
6884
|
+
const folded = foldPartId(id);
|
|
6885
|
+
seen.add(folded);
|
|
6886
|
+
const row = rowOf.get(folded) ?? null;
|
|
6887
|
+
const group = groups.get(row);
|
|
6888
|
+
if (group === undefined)
|
|
6889
|
+
groups.set(row, [id]);
|
|
6890
|
+
else
|
|
6891
|
+
group.push(id);
|
|
6892
|
+
}
|
|
6893
|
+
const model = entry.model;
|
|
6894
|
+
for (const [row, partIds] of groups) {
|
|
6895
|
+
if (row === null) {
|
|
6896
|
+
out.push(groups.size === 1 ? entry : { ...entry, partIds });
|
|
6897
|
+
continue;
|
|
6898
|
+
}
|
|
6899
|
+
out.push({
|
|
6900
|
+
...entry,
|
|
6901
|
+
partIds,
|
|
6902
|
+
model: {
|
|
6903
|
+
...model,
|
|
6904
|
+
sections: model.sections.map((section) => section.law.kind === "ideal-opamp"
|
|
6905
|
+
? { ...section, law: { ...section.law, gainBandwidthHz: row.hertz } }
|
|
6906
|
+
: section),
|
|
6907
|
+
},
|
|
6908
|
+
});
|
|
6909
|
+
}
|
|
6910
|
+
}
|
|
6911
|
+
for (const folded of [...rowOf.keys(), ...absent]) {
|
|
6912
|
+
if (!seen.has(folded))
|
|
6913
|
+
throw new Error(`gain-bandwidth table names ${folded}, which no op-amp entry holds`);
|
|
6914
|
+
}
|
|
6915
|
+
return out;
|
|
6916
|
+
}
|
|
6700
6917
|
/**
|
|
6701
6918
|
* Every part id whose `fet` entry refines the gate term only, folded for comparison.
|
|
6702
6919
|
* `report-part-store-drift.ts` keys its channel-field exclusion on this set -- a catalog
|
|
@@ -6708,5 +6925,7 @@ export const gateOnlyFetPartIds = new Set(["2sk30a"]);
|
|
|
6708
6925
|
/**
|
|
6709
6926
|
* The catalog the corpus-facing scripts inject.
|
|
6710
6927
|
*/
|
|
6711
|
-
export const pedalPartCatalog = {
|
|
6928
|
+
export const pedalPartCatalog = {
|
|
6929
|
+
entries: withDatasheetGainBandwidth(entries),
|
|
6930
|
+
};
|
|
6712
6931
|
//# sourceMappingURL=part-catalog.js.map
|