@vessel-dsp/compiler 0.18.0 → 0.19.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.
Files changed (53) hide show
  1. package/dist/compile.d.ts.map +1 -1
  2. package/dist/compile.js +67 -24
  3. package/dist/compile.js.map +1 -1
  4. package/dist/device-laws.d.ts +12 -0
  5. package/dist/device-laws.d.ts.map +1 -1
  6. package/dist/device-laws.js +108 -4
  7. package/dist/device-laws.js.map +1 -1
  8. package/dist/fixtures/circuits.d.ts +22 -0
  9. package/dist/fixtures/circuits.d.ts.map +1 -1
  10. package/dist/fixtures/circuits.js +54 -0
  11. package/dist/fixtures/circuits.js.map +1 -1
  12. package/dist/latch-seed.d.ts +7 -6
  13. package/dist/latch-seed.d.ts.map +1 -1
  14. package/dist/latch-seed.js +199 -31
  15. package/dist/latch-seed.js.map +1 -1
  16. package/dist/link.d.ts.map +1 -1
  17. package/dist/link.js +4 -3
  18. package/dist/link.js.map +1 -1
  19. package/dist/lower.d.ts.map +1 -1
  20. package/dist/lower.js +155 -0
  21. package/dist/lower.js.map +1 -1
  22. package/dist/netlist.d.ts.map +1 -1
  23. package/dist/netlist.js +43 -1
  24. package/dist/netlist.js.map +1 -1
  25. package/dist/part-catalog.d.ts +21 -0
  26. package/dist/part-catalog.d.ts.map +1 -1
  27. package/dist/part-catalog.js +770 -21
  28. package/dist/part-catalog.js.map +1 -1
  29. package/dist/partition.d.ts.map +1 -1
  30. package/dist/partition.js +5 -0
  31. package/dist/partition.js.map +1 -1
  32. package/dist/registry-data/index.d.ts +1 -0
  33. package/dist/registry-data/index.d.ts.map +1 -1
  34. package/dist/registry-data/index.js +3 -0
  35. package/dist/registry-data/index.js.map +1 -1
  36. package/dist/registry-data/poweramp.d.ts +10 -0
  37. package/dist/registry-data/poweramp.d.ts.map +1 -0
  38. package/dist/registry-data/poweramp.js +191 -0
  39. package/dist/registry-data/poweramp.js.map +1 -0
  40. package/dist/registry-data/schema.d.ts +3 -1
  41. package/dist/registry-data/schema.d.ts.map +1 -1
  42. package/dist/registry-data/schema.js +28 -2
  43. package/dist/registry-data/schema.js.map +1 -1
  44. package/dist/registry.d.ts +89 -1
  45. package/dist/registry.d.ts.map +1 -1
  46. package/dist/registry.js +148 -0
  47. package/dist/registry.js.map +1 -1
  48. package/dist/types.d.ts +126 -0
  49. package/dist/types.d.ts.map +1 -1
  50. package/dist/unverified-pinout.d.ts.map +1 -1
  51. package/dist/unverified-pinout.js +8 -1
  52. package/dist/unverified-pinout.js.map +1 -1
  53. package/package.json +2 -2
@@ -51,8 +51,8 @@
51
51
  // reason and states no swing. Nearly every printed row is at +-15 V and nearly every pedal
52
52
  // runs at 9 V, so the carry is a named choice, and `opamp-law-default-parameters` names
53
53
  // every device it was carried for.
54
- import { foldPartId, opampOutputSwingOf } from "./registry.js";
55
- import { bjtRegistryRecords, chargePumpRegistryRecords, diodeRegistryRecords, findPartRegistryData, jfetRegistryRecords, ledRegistryRecords, mosfetRegistryRecords, opampGainBandwidthAbsent, opampOutputSwingAbsent, opampRegistryRecords, regulatorRegistryRecords, ujtRegistryRecords, zenerRegistryRecords, communityProvenanceOf, } from "./registry-data/index.js";
54
+ import { foldPartId, opampOutputSwingOf, validatePackagePinNumbers } from "./registry.js";
55
+ import { bjtRegistryRecords, chargePumpRegistryRecords, diodeRegistryRecords, findPartRegistryData, jfetRegistryRecords, ledRegistryRecords, mosfetRegistryRecords, opampGainBandwidthAbsent, opampOutputSwingAbsent, opampRegistryRecords, powerAmpRegistryRecords, regulatorRegistryRecords, ujtRegistryRecords, zenerRegistryRecords, communityProvenanceOf, } from "./registry-data/index.js";
56
56
  // The absent lists and the merged op-amp records live in `registry-data/opamp.ts` and are
57
57
  // re-exported here so their existing import sites keep working.
58
58
  export { opampGainBandwidthAbsent, opampOutputSwingAbsent, opampRegistryRecords, } from "./registry-data/index.js";
@@ -312,6 +312,12 @@ export function fetLawEntry(record, cls) {
312
312
  gateSaturationCurrent: 0,
313
313
  gateOnsetVolts: 0,
314
314
  gateScaleVolts: 1,
315
+ // The body-diode defaults by value (see `device-laws.ts`): 1e-14 A
316
+ // and 1.0, ngspice's own MOS bulk-diode defaults, so the runtime
317
+ // and the emitted deck agree by construction. A drift between the
318
+ // two copies is caught by the sparse-record test.
319
+ bodySaturationCurrent: 1e-14,
320
+ bodyEmissionCoefficient: 1,
315
321
  };
316
322
  return {
317
323
  partIds: entryIdsOf(record),
@@ -338,6 +344,20 @@ export function fetLawEntry(record, cls) {
338
344
  channelDefaults.gateOnsetVolts,
339
345
  gateScaleVolts: citedValueOf(record, "gateScaleVolts") ??
340
346
  channelDefaults.gateScaleVolts,
347
+ // A JFET has no body diode and carries neither field, so its entry
348
+ // keeps its previous shape exactly. A MOSFET entry always carries
349
+ // both (cited record value when the record types it, else the class
350
+ // default above).
351
+ ...(cls === "mosfet"
352
+ ? {
353
+ bodySaturationCurrent: citedValueOf(record, "bodySaturationCurrent") ??
354
+ channelDefaults.bodySaturationCurrent ??
355
+ 1e-14,
356
+ bodyEmissionCoefficient: citedValueOf(record, "bodyEmissionCoefficient") ??
357
+ channelDefaults.bodyEmissionCoefficient ??
358
+ 1,
359
+ }
360
+ : {}),
341
361
  },
342
362
  },
343
363
  };
@@ -629,6 +649,86 @@ for (const key of Object.keys(chargePumpStructureFor)) {
629
649
  throw new Error(`charge-pump wiring skeleton for ${key} is consumed by no registry record`);
630
650
  }
631
651
  }
652
+ /**
653
+ * A power-amp record's sections entry: one power-amp section spanning all eight pins.
654
+ *
655
+ * Pin order is the datasheet pin order both sheets agree on (TI Table 5-1, NJM p5-1):
656
+ * 1 GAIN, 2 -INPUT, 3 +INPUT, 4 GND, 5 OUT, 6 VS, 7 BYPASS, 8 GAIN. The terminal role
657
+ * groups accept the schematic symbol spellings (`gain1`, `vin-`, `vin+`, `gnd`, `vout`,
658
+ * `vs`, `bypass`, `gain8`, as drawn in the core schx catalog), the DipTrace library
659
+ * spellings (`IN-`, `IN+`, `OUT`, `POWER +`, `POWER -` -- folding makes the sign vanish,
660
+ * so those fall through to the pinout guard, which is exactly what it is for), plain
661
+ * `pin1`..`pin8`, and unambiguous functional aliases. A document the entry was not
662
+ * written against refuses by name instead of mis-wiring the gain network.
663
+ *
664
+ * The law carries the record's five printed resistors, the derived gain-bandwidth
665
+ * product where the record states one (absent stays absent and lowers to a `null` stamp,
666
+ * which the compile names), and the house ideal-opamp open-loop gain of the output
667
+ * follower (100000, the class default -- not a part figure, disclosed here and in the
668
+ * report with its error bound). Rails are the pedal's, substituted at lowering like
669
+ * every other railed section. The entry states no swing pair (no printable per-side
670
+ * figure exists) and no quiescent draw (TI/NJR TYP conflict, unneeded for the gain).
671
+ */
672
+ export function powerAmpEntry(record) {
673
+ if (record.class !== "power-amp") {
674
+ throw new Error(`${record.partIds.join(",")}: a power-amp entry needs class "power-amp", not "${record.class}"`);
675
+ }
676
+ for (const name of [
677
+ "feedbackOhms",
678
+ "gainSetOhms",
679
+ "degenerationOhms",
680
+ "inputShuntOhms",
681
+ "bypassUpperOhms",
682
+ ]) {
683
+ if (citedValueOf(record, name) === undefined) {
684
+ throw new Error(`${record.partIds.join(",")}: a power-amp record states no ${name}`);
685
+ }
686
+ }
687
+ const gainBandwidthHz = citedValueOf(record, "gainBandwidthHz");
688
+ return {
689
+ partIds: entryIdsOf(record),
690
+ declaredTypes: [],
691
+ terminalRoleGroups: [
692
+ ["gain1", "g1", "pin1", "power"],
693
+ ["vin-", "vinminus", "in-", "inminus", "inverting", "minus", "inm", "pin2"],
694
+ ["vin+", "vinplus", "in+", "inplus", "noninverting", "plus", "inp", "pin3"],
695
+ ["gnd", "ground", "vee", "pin4", "power"],
696
+ ["vout", "out", "output", "pin5"],
697
+ ["vs", "vcc", "vplus", "v+", "supply", "pin6", "power"],
698
+ ["bypass", "pin7", "power"],
699
+ ["gain8", "g8", "pin8"],
700
+ ],
701
+ ...provisionalArmOf(record),
702
+ ...citedArmOf(record),
703
+ model: {
704
+ kind: "sections",
705
+ sections: [
706
+ {
707
+ law: {
708
+ kind: "power-amp",
709
+ railHigh: null,
710
+ railLow: null,
711
+ openLoopGain: 100000,
712
+ feedbackOhms: citedValueOf(record, "feedbackOhms"),
713
+ gainSetOhms: citedValueOf(record, "gainSetOhms"),
714
+ degenerationOhms: citedValueOf(record, "degenerationOhms"),
715
+ inputShuntOhms: citedValueOf(record, "inputShuntOhms"),
716
+ bypassUpperOhms: citedValueOf(record, "bypassUpperOhms"),
717
+ ...(gainBandwidthHz === undefined ? {} : { gainBandwidthHz }),
718
+ },
719
+ terminals: [0, 1, 2, 3, 4, 5, 6, 7],
720
+ },
721
+ ],
722
+ pinout: ["gain1", "inverting", "noninverting", "gnd", "out", "vcc", "bypass", "gain8"],
723
+ packagePinNumbers: {
724
+ numbers: ["1", "2", "3", "4", "5", "6", "7", "8"],
725
+ source: "TI LM386 SNAS545D Rev D pin functions (equivalent schematic p1, Table 5-1: " +
726
+ "1 GAIN, 2 -INPUT, 3 +INPUT, 4 GND, 5 OUT, 6 VS, 7 BYPASS, 8 GAIN) and NJR NJM386 " +
727
+ "databook p5-1 Equivalent Circuit, identically placed",
728
+ },
729
+ },
730
+ };
731
+ }
632
732
  const entries = [
633
733
  // uPC4558, from the artifacts library's own vendored copy:
634
734
  // `parts/op-amps/UPC4558/datasheets/renesas-upc258-upc4558.pdf` (Renesas `UPC258, UPC4558`,
@@ -669,6 +769,19 @@ const entries = [
669
769
  "vcc",
670
770
  "vee"
671
771
  ],
772
+ "packagePinNumbers": {
773
+ "numbers": [
774
+ "1",
775
+ "2",
776
+ "3",
777
+ "7",
778
+ "6",
779
+ "5",
780
+ "8",
781
+ "4"
782
+ ],
783
+ "source": "Renesas R03DS0145EJ0200 Rev.2.00 PIN CONFIGURATION (Top View), UPC4558G2: 1 OUT1, 2 -II1, 3 +IN1, 4 V-, 5 IN2, 6 II2, 7 OUT2, 8 V+"
784
+ },
672
785
  "sections": [
673
786
  {
674
787
  "law": {
@@ -773,6 +886,19 @@ const entries = [
773
886
  "OUT_B",
774
887
  "VCC"
775
888
  ],
889
+ "packagePinNumbers": {
890
+ "numbers": [
891
+ "1",
892
+ "2",
893
+ "3",
894
+ "4",
895
+ "5",
896
+ "6",
897
+ "7",
898
+ "8"
899
+ ],
900
+ "source": "Nisshinbo NJM4558 datasheet PIN CONFIGURATION (Top View) + PIN FUNCTION: 1 A OUTPUT, 2 A -INPUT, 3 A +INPUT, 4 V-, 5 B +INPUT, 6 B -INPUT, 7 B OUTPUT, 8 V+"
901
+ },
776
902
  "sections": [
777
903
  {
778
904
  "law": {
@@ -837,6 +963,19 @@ const entries = [
837
963
  "OUT_A",
838
964
  "VCC"
839
965
  ],
966
+ "packagePinNumbers": {
967
+ "numbers": [
968
+ "7",
969
+ "6",
970
+ "5",
971
+ "4",
972
+ "3",
973
+ "2",
974
+ "1",
975
+ "8"
976
+ ],
977
+ "source": "TI SLOS078N Fig. 5-2 TL062x D/JG/P/PS/PW 8-pin (Top View): 1OUT-1, 1IN-minus-2, 1IN-plus-3, VCC-minus-4, 2IN-plus-5, 2IN-minus-6, 2OUT-7, VCC-plus-8"
978
+ },
840
979
  "sections": [
841
980
  {
842
981
  "law": {
@@ -949,6 +1088,19 @@ const entries = [
949
1088
  "OUT_A",
950
1089
  "VCC"
951
1090
  ],
1091
+ "packagePinNumbers": {
1092
+ "numbers": [
1093
+ "7",
1094
+ "6",
1095
+ "5",
1096
+ "4",
1097
+ "3",
1098
+ "2",
1099
+ "1",
1100
+ "8"
1101
+ ],
1102
+ "source": "TI SLOS080W Fig. 4-5 / Table 4-3 Pin Functions TL072x: 1OUT-1, 1IN-minus-2, 1IN-plus-3, VCC-minus-4, 2IN-plus-5, 2IN-minus-6, 2OUT-7, VCC-plus-8"
1103
+ },
952
1104
  "sections": [
953
1105
  {
954
1106
  "law": {
@@ -1200,7 +1352,20 @@ const entries = [
1200
1352
  null,
1201
1353
  null,
1202
1354
  null
1203
- ]
1355
+ ],
1356
+ "packagePinNumbers": {
1357
+ "numbers": [
1358
+ "1",
1359
+ "2",
1360
+ "3",
1361
+ "4",
1362
+ "5",
1363
+ "6",
1364
+ "7",
1365
+ "8"
1366
+ ],
1367
+ "source": "TI SLOS076 TL022C D/P package TOP VIEW (popular dual pinout): 1OUT-1, 1IN-minus-2, 2OUT-7, VCC-8 with 1IN-plus-3, GND-4, 2IN-plus-5, 2IN-minus-6"
1368
+ }
1204
1369
  }
1205
1370
  },
1206
1371
  // Harris CA1458, in "CA741, CA741C, CA1458, CA1558, LM741, LM741C, LM1458, LM1558 - High Gain
@@ -2611,6 +2776,34 @@ const entries = [
2611
2776
  "lpf1out",
2612
2777
  "lpf1in"
2613
2778
  ],
2779
+ "packagePinNumbers": {
2780
+ "numbers": [
2781
+ "1",
2782
+ "2",
2783
+ "3",
2784
+ "4",
2785
+ "5",
2786
+ "6",
2787
+ "7",
2788
+ "8",
2789
+ "9",
2790
+ "10",
2791
+ "11",
2792
+ "12",
2793
+ "13",
2794
+ "14",
2795
+ "15",
2796
+ "16"
2797
+ ],
2798
+ "source": "Princeton PT2399 datasheet V1.9 (Mar 2022) PIN DESCRIPTION p3: " +
2799
+ "1 VCC, 2 REF, 3 AGND, 4 DGND, 5 CLK_O, 6 VCO, 7 CC1, 8 CC0, " +
2800
+ "9 OP1-OUT, 10 OP1-IN, 11 OP2-IN, 12 OP2-OUT, 13 LPF2-IN, " +
2801
+ "14 LPF2-OUT, 15 LPF1-OUT, 16 LPF1-IN; PIN CONFIGURATION figure p3 " +
2802
+ "shows the same order (left 1-8 VCC..CC0, right 16-9 LPF1-IN..OP1-OUT); " +
2803
+ "ORDER INFORMATION p3 covers PT2399 (16-pin DIP 300mil), PT2399S " +
2804
+ "(16-pin SOP 300mil) and PT2399-SN (16-pin SOP 150mil) under the " +
2805
+ "one configuration"
2806
+ },
2614
2807
  "sections": [
2615
2808
  {
2616
2809
  "law": {
@@ -3562,11 +3755,82 @@ const entries = [
3562
3755
  // registry-data record (`registry-data/opamp.ts`), which types the printed +-12.8 V (RL = 2 kOhm, VS = +-15 V)
3563
3756
  // as a `proportional` pair for OP07CP, OP07DP and OP07DN, and lists the bare `OP07` id absent (the
3564
3757
  // sheet's characteristics apply to the C and D grades only).
3758
+ // The pin table below is cited per id: the bare OP07 from the ADI OP07 Rev. G sheet (family
3759
+ // title; epoxy 8-lead PDIP), OP07CP/OP07DP from TI SLOS099H (PDIP orderables in the
3760
+ // addendum, DIP pinout in Table 5-1). OP07DN is printed in no quotable sheet and rides
3761
+ // the table-less entry after this one.
3565
3762
  {
3566
3763
  "partIds": [
3567
3764
  "OP07",
3568
3765
  "OP07CP",
3569
- "OP07DP",
3766
+ "OP07DP"
3767
+ ],
3768
+ "declaredTypes": [],
3769
+ "terminalRoleGroups": [
3770
+ [
3771
+ "vin+",
3772
+ "in+",
3773
+ "pin3"
3774
+ ],
3775
+ [
3776
+ "vin-",
3777
+ "in-",
3778
+ "pin2"
3779
+ ],
3780
+ [
3781
+ "vout",
3782
+ "out",
3783
+ "pin6"
3784
+ ]
3785
+ ],
3786
+ "model": {
3787
+ "kind": "sections",
3788
+ "sections": [
3789
+ {
3790
+ "law": {
3791
+ "kind": "ideal-opamp",
3792
+ "railHigh": null,
3793
+ "railLow": null,
3794
+ "openLoopGain": 100000
3795
+ },
3796
+ "terminals": [
3797
+ 0,
3798
+ 1,
3799
+ 2
3800
+ ]
3801
+ }
3802
+ ],
3803
+ "pinout": [
3804
+ "vin+",
3805
+ "vin-",
3806
+ "vout"
3807
+ ],
3808
+ "packagePinNumbers": {
3809
+ "numbers": [
3810
+ "3",
3811
+ "2",
3812
+ "6"
3813
+ ],
3814
+ "packagePins": [
3815
+ "1",
3816
+ "2",
3817
+ "3",
3818
+ "4",
3819
+ "5",
3820
+ "6",
3821
+ "7",
3822
+ "8"
3823
+ ],
3824
+ "source": "ADI OP07 Rev. G (2002-2011) PIN CONFIGURATION Figure 1 p1: VOS TRIM 1, -IN 2, +IN 3, V- 4, NC 5, OUT 6, V+ 7, VOS TRIM 8 (epoxy 8-lead PDIP; family title OP07); TI SLOS099H Rev. H (Sept 1983, rev Mar 2023) Table 5-1 Pin Functions p3: IN+ 3, IN- 2, OUT 6, V- 4, V+ 7 (OFFSET N1 1, N2 8, NC 5) + Package Option Addendum p12: OP07CP, OP07DP PDIP (P) 8"
3825
+ }
3826
+ }
3827
+ },
3828
+ // OP07DN: same law data as the entry above, verbatim, but no pin table. OP07DN is printed
3829
+ // in no sheet quotable here (TI SLOS099H Rev. H names OP07CP and OP07DP in its addendum
3830
+ // but not OP07DN; the ADI Rev. G sheet grades are E and C only), so no table may claim
3831
+ // it. A numbered OP07DN package keeps refusing, exactly as before.
3832
+ {
3833
+ "partIds": [
3570
3834
  "OP07DN"
3571
3835
  ],
3572
3836
  "declaredTypes": [],
@@ -3617,19 +3881,23 @@ const entries = [
3617
3881
  // 'LM741CN/NOPB | Active | Production | PDIP (P) | 8', part marking 'LM 741CN'.
3618
3882
  // The specs sit under the LM741C column family; open-loop gain stays the house
3619
3883
  // 100000 and no GBW row is quoted (see opampGainBandwidthAbsent).
3884
+ // The pin table below is cited per id: LM741 and LM741CN from the National LM741
3885
+ // Aug 2000 DS009341 Dual-In-Line diagram (caption names LM741J/LM741J/883/LM741CN);
3886
+ // TL071 from ST TL071 Sept 2008 Rev 3 (N DIP8); TL071CP from TI SLOS080W Rev. W
3887
+ // Table 4-1 (P PDIP column) plus the p36 addendum orderable; NJM5534D/NJM5534M from
3888
+ // the NJR NJM5534 sheet (JRC databook folio 4-235; shared D/M diagram); NE5534 from
3889
+ // TI SLOS070D Rev. D Pin Functions (P PDIP). UA741, uA741, TL071CN, bare NJM5534 and
3890
+ // JRC5534 are printed on no quotable sheet and ride the table-less entry after this
3891
+ // one. All tables agree: signal pins 2/3/6 of the 8-pin DIP; aux pins (offset null,
3892
+ // balance, compensation, NC) stay unmodelled, exactly as for role-named documents.
3620
3893
  {
3621
3894
  "partIds": [
3622
3895
  "LM741",
3623
- "UA741",
3624
- "uA741",
3625
3896
  "TL071",
3626
3897
  "TL071CP",
3627
- "TL071CN",
3628
- "NJM5534",
3629
3898
  "NJM5534D",
3630
3899
  "NE5534",
3631
3900
  "NJM5534M",
3632
- "JRC5534",
3633
3901
  "LM741CN"
3634
3902
  ],
3635
3903
  "declaredTypes": [],
@@ -3650,6 +3918,79 @@ const entries = [
3650
3918
  "pin6"
3651
3919
  ]
3652
3920
  ],
3921
+ "model": {
3922
+ "kind": "sections",
3923
+ "sections": [
3924
+ {
3925
+ "law": {
3926
+ "kind": "ideal-opamp",
3927
+ "railHigh": null,
3928
+ "railLow": null,
3929
+ "openLoopGain": 100000
3930
+ },
3931
+ "terminals": [
3932
+ 0,
3933
+ 1,
3934
+ 2
3935
+ ]
3936
+ }
3937
+ ],
3938
+ "pinout": [
3939
+ "vin+",
3940
+ "vin-",
3941
+ "vout"
3942
+ ],
3943
+ "packagePinNumbers": {
3944
+ "numbers": [
3945
+ "3",
3946
+ "2",
3947
+ "6"
3948
+ ],
3949
+ "packagePins": [
3950
+ "1",
3951
+ "2",
3952
+ "3",
3953
+ "4",
3954
+ "5",
3955
+ "6",
3956
+ "7",
3957
+ "8"
3958
+ ],
3959
+ "source": "National LM741 Aug 2000 DS009341 Connection Diagrams Dual-In-Line (Order Number LM741J, LM741J/883, LM741CN) p1: 1 OFFSET NULL, 2 INVERTING INPUT, 3 NON-INVERTING INPUT, 4 V-, 5 OFFSET NULL, 6 OUTPUT, 7 V+, 8 NC; ST TL071 Sept 2008 Rev 3 Pin connections Top view N DIP8 p1: 1 Offset null 1, 2 Inverting input, 3 Non-inverting input, 4 VCC-, 5 Offset null 2, 6 Output, 7 VCC+, 8 N.C.; TI SLOS080W Rev. W Table 4-1 Pin Functions TL071x P PDIP column p3: IN- 2, IN+ 3, OUT 6, VCC- 4, VCC+ 7 (NC 1, 5, 8) + Addendum p36: TL071CP PDIP (P) 8; NJR NJM5534 (JRC databook folio 4-235) PIN CONFIGURATION NJM5534D/NJM5534M + PIN FUNCTION: 1 BALANCE, 2 -INPUT, 3 +INPUT, 4 V-, 5 COMPENSATION, 6 OUTPUT, 7 V+, 8 BALANCE/COMPENSATION; TI SLOS070D Rev. D Pin Functions p3 (P PDIP): BALANCE 1, IN- 2, IN+ 3, VCC- 4, COMP 5, OUT 6, VCC+ 7, COMP/BAL 8 (title ids NE5534/SA5534)"
3960
+ }
3961
+ }
3962
+ },
3963
+ // Single-op-amp ids with no quotable pin sheet: UA741/uA741 (no uA741-family sheet on
3964
+ // this box), TL071CN (printed nowhere in TI SLOS080W), bare NJM5534 (the NJR sheet's
3965
+ // diagram names only NJM5534D/NJM5534M) and JRC5534 (no owner decision extends the
3966
+ // JRC4558D marking precedent to it). Same law data as the entry above, verbatim, but
3967
+ // no table: a numbered package of these ids keeps refusing, exactly as before.
3968
+ {
3969
+ "partIds": [
3970
+ "UA741",
3971
+ "uA741",
3972
+ "TL071CN",
3973
+ "NJM5534",
3974
+ "JRC5534"
3975
+ ],
3976
+ "declaredTypes": [],
3977
+ "terminalRoleGroups": [
3978
+ [
3979
+ "vin+",
3980
+ "in+",
3981
+ "pin3"
3982
+ ],
3983
+ [
3984
+ "vin-",
3985
+ "in-",
3986
+ "pin2"
3987
+ ],
3988
+ [
3989
+ "vout",
3990
+ "out",
3991
+ "pin6"
3992
+ ]
3993
+ ],
3653
3994
  "model": {
3654
3995
  "kind": "sections",
3655
3996
  "sections": [
@@ -5960,6 +6301,115 @@ const entries = [
5960
6301
  ]
5961
6302
  }
5962
6303
  },
6304
+ // --- MC33178 dual 8-pin package entry (MXR Badass Modified U1, ARM overdrive U2) -----------
6305
+ //
6306
+ // The entry above stays untouched: it serves the mxr-carbon-copy per-half 5-terminal
6307
+ // splits. This second entry carries the same ids with the 8-pin dual pinout, so
6308
+ // `registryEntryFor` picks it for 8-terminal documents (pinout length 8) and the old
6309
+ // entry for the 5-terminal ones. The MXRmod U2A 4-terminal declined split is out of
6310
+ // scope and keeps refusing.
6311
+ // From the Motorola MC33178/D Rev 0 (1996) sheet: PIN CONNECTIONS DUAL P SUFFIX
6312
+ // PLASTIC PACKAGE CASE 626 / D SUFFIX PLASTIC PACKAGE CASE 751 (Top View), p1:
6313
+ // 1 Output 1, 2-3 Inputs 1, 4 VEE, 5-6 Inputs 2, 7 Output 2, 8 VCC. The ORDERING
6314
+ // INFORMATION prints MC33178D (SO-8) and MC33178P (Plastic DIP); the bare MC33178 is
6315
+ // the family root in the title -- one dual pinout for all three ids.
6316
+ // Law: OPEN-LOOP gain from the sheet's own DC ELECTRICAL CHARACTERISTICS table p2
6317
+ // (VCC = +15 V, VEE = -15 V, TA = 25C): 'Large Signal Voltage Gain (VO = -10 V to
6318
+ // +10 V, RL = 600 Ohm) AVOL, TA = +25C: MIN 50k TYP 200k' -- used as
6319
+ // `openLoopGain: 200000`, NOT the old entry's unsourced 100000. GBW and swing stay
6320
+ // untyped although the sheet prints TYP figures (AC table p3: GBW MIN 2.5 TYP 5.0 MHz;
6321
+ // DC table p2: VO+ TYP +12 V / VO- TYP -12 V at RL = 300 Ohm, VCC = +15 V, VEE = -15 V):
6322
+ // the three ids are shared with the 5-terminal entry, so registry typing would restamp
6323
+ // mxr-carbon-copy's halves and move a canonical packet. The ids already sit in
6324
+ // `opampGainBandwidthAbsent` / `opampOutputSwingAbsent`, left byte-identical here.
6325
+ {
6326
+ "partIds": [
6327
+ "MC33178",
6328
+ "MC33178P",
6329
+ "MC33178D"
6330
+ ],
6331
+ "declaredTypes": [],
6332
+ "terminalRoleGroups": [
6333
+ [
6334
+ "OUT_A_pin1"
6335
+ ],
6336
+ [
6337
+ "INVERTING_A_pin2"
6338
+ ],
6339
+ [
6340
+ "NONINVERTING_A_pin3"
6341
+ ],
6342
+ [
6343
+ "V_MINUS_pin4"
6344
+ ],
6345
+ [
6346
+ "NONINVERTING_B_pin5"
6347
+ ],
6348
+ [
6349
+ "INVERTING_B_pin6"
6350
+ ],
6351
+ [
6352
+ "OUT_B_pin7"
6353
+ ],
6354
+ [
6355
+ "V_PLUS_pin8"
6356
+ ]
6357
+ ],
6358
+ "model": {
6359
+ "kind": "sections",
6360
+ "pinout": [
6361
+ "OUT_A",
6362
+ "IN_A_MINUS",
6363
+ "IN_A_PLUS",
6364
+ "VEE",
6365
+ "IN_B_PLUS",
6366
+ "IN_B_MINUS",
6367
+ "OUT_B",
6368
+ "VCC"
6369
+ ],
6370
+ "packagePinNumbers": {
6371
+ "numbers": [
6372
+ "1",
6373
+ "2",
6374
+ "3",
6375
+ "4",
6376
+ "5",
6377
+ "6",
6378
+ "7",
6379
+ "8"
6380
+ ],
6381
+ "source": "Motorola MC33178/D Rev 0 (1996) PIN CONNECTIONS DUAL P SUFFIX PLASTIC PACKAGE CASE 626 / D SUFFIX PLASTIC PACKAGE CASE 751 (Top View) p1: 1 Output 1, 2 Inputs 1 -, 3 Inputs 1 +, 4 VEE, 5 Inputs 2 +, 6 Inputs 2 -, 7 Output 2, 8 VCC"
6382
+ },
6383
+ "sections": [
6384
+ {
6385
+ "law": {
6386
+ "kind": "ideal-opamp",
6387
+ "railHigh": null,
6388
+ "railLow": null,
6389
+ "openLoopGain": 200000
6390
+ },
6391
+ "terminals": [
6392
+ 2,
6393
+ 1,
6394
+ 0
6395
+ ]
6396
+ },
6397
+ {
6398
+ "law": {
6399
+ "kind": "ideal-opamp",
6400
+ "railHigh": null,
6401
+ "railLow": null,
6402
+ "openLoopGain": 200000
6403
+ },
6404
+ "terminals": [
6405
+ 4,
6406
+ 5,
6407
+ 6
6408
+ ]
6409
+ }
6410
+ ]
6411
+ }
6412
+ },
5963
6413
  // --- RCA/TI CD4047 gatable astable multivibrator, BBD clock (mxr-carbon-copy) ------------------
5964
6414
  //
5965
6415
  // `mxr-carbon-copy.vdsp`'s U6 declares 14 terminals in strict pin order with the CD4047's
@@ -7303,6 +7753,19 @@ const entries = [
7303
7753
  "OUT_B",
7304
7754
  "VCC"
7305
7755
  ],
7756
+ "packagePinNumbers": {
7757
+ "numbers": [
7758
+ "1",
7759
+ "2",
7760
+ "3",
7761
+ "4",
7762
+ "5",
7763
+ "6",
7764
+ "7",
7765
+ "8"
7766
+ ],
7767
+ "source": "TI SLOS481B Pin Functions table p3 (D/SOIC, DGK/MSOP, P/PDIP): 1 OUT1, 2 IN1-minus, 3 IN1-plus, 4 VCC-minus, 5 IN2-plus, 6 IN2-minus, 7 OUT2, 8 VCC-plus"
7768
+ },
7306
7769
  "sections": [
7307
7770
  {
7308
7771
  "law": {
@@ -7401,6 +7864,19 @@ const entries = [
7401
7864
  "OUT_B",
7402
7865
  "VCC"
7403
7866
  ],
7867
+ "packagePinNumbers": {
7868
+ "numbers": [
7869
+ "1",
7870
+ "2",
7871
+ "3",
7872
+ "4",
7873
+ "5",
7874
+ "6",
7875
+ "7",
7876
+ "8"
7877
+ ],
7878
+ "source": "NJR NJM4580D sheet Ver.2012-09-14 PIN FUNCTION table p1 (DIP-8 TOP VIEW): 1 A OUTPUT, 2 A -INPUT, 3 A +INPUT, 4 V-, 5 B +INPUT, 6 B -INPUT, 7 B OUTPUT, 8 V+"
7879
+ },
7404
7880
  "sections": [
7405
7881
  {
7406
7882
  "law": {
@@ -7487,6 +7963,19 @@ const entries = [
7487
7963
  "OUT_B",
7488
7964
  "VCC"
7489
7965
  ],
7966
+ "packagePinNumbers": {
7967
+ "numbers": [
7968
+ "1",
7969
+ "2",
7970
+ "3",
7971
+ "4",
7972
+ "5",
7973
+ "6",
7974
+ "7",
7975
+ "8"
7976
+ ],
7977
+ "source": "TI SBOS058B Table 4-1 Pin Functions OPA2134 p3 (D/SOIC and P/PDIP, Fig. 4-2): OUT A-1, -IN A-2, +IN A-3, V-minus-4, +IN B-5, -IN B-6, OUT B-7, V-plus-8"
7978
+ },
7490
7979
  "sections": [
7491
7980
  {
7492
7981
  "law": {
@@ -7577,6 +8066,19 @@ const entries = [
7577
8066
  "OUT_B",
7578
8067
  "VCC"
7579
8068
  ],
8069
+ "packagePinNumbers": {
8070
+ "numbers": [
8071
+ "1",
8072
+ "2",
8073
+ "3",
8074
+ "4",
8075
+ "5",
8076
+ "6",
8077
+ "7",
8078
+ "8"
8079
+ ],
8080
+ "source": "TI SNOSBU4D Fig. 2 Connection Diagram Dual-In-Line Package (Top View) p1: 1 OUTPUT A, 2 INVERTING INPUT A, 3 NON-INVERTING INPUT A, 4 V-, 5 NON-INVERTING INPUT B, 6 INVERTING INPUT B, 7 OUTPUT B, 8 V+"
8081
+ },
7580
8082
  "sections": [
7581
8083
  {
7582
8084
  "law": {
@@ -7743,6 +8245,25 @@ const entries = [
7743
8245
  "IN_D_MINUS",
7744
8246
  "OUT_D"
7745
8247
  ],
8248
+ "packagePinNumbers": {
8249
+ "numbers": [
8250
+ "1",
8251
+ "2",
8252
+ "3",
8253
+ "4",
8254
+ "5",
8255
+ "6",
8256
+ "7",
8257
+ "8",
8258
+ "9",
8259
+ "10",
8260
+ "11",
8261
+ "12",
8262
+ "13",
8263
+ "14"
8264
+ ],
8265
+ "source": "TI SLOS066AE Table 5-1 Pin Functions N (PDIP) p3, standard quad order: 1OUT-1, 1IN-minus-2, 1IN-plus-3, VCC-plus-4, 2IN-plus-5, 2IN-minus-6, 2OUT-7, 3OUT-8, 3IN-minus-9, 3IN-plus-10, VCC-minus-11, 4IN-plus-12, 4IN-minus-13, 4OUT-14"
8266
+ },
7746
8267
  "sections": [
7747
8268
  {
7748
8269
  "law": {
@@ -7910,6 +8431,19 @@ const entries = [
7910
8431
  "OUT_B",
7911
8432
  "VCC"
7912
8433
  ],
8434
+ "packagePinNumbers": {
8435
+ "numbers": [
8436
+ "1",
8437
+ "2",
8438
+ "3",
8439
+ "4",
8440
+ "5",
8441
+ "6",
8442
+ "7",
8443
+ "8"
8444
+ ],
8445
+ "source": "TI SLOS177D (Feb 1997, rev Mar 2001) TLC2262C D, P, or PW PACKAGE (TOP VIEW) p3: 1 1OUT, 2 1IN-, 3 1IN+, 4 VDD-/GND, 5 2IN+, 6 2IN-, 7 2OUT, 8 VDD+"
8446
+ },
7913
8447
  "sections": [
7914
8448
  {
7915
8449
  "law": {
@@ -8015,6 +8549,25 @@ const entries = [
8015
8549
  "IN_D_MINUS",
8016
8550
  "OUT_D"
8017
8551
  ],
8552
+ "packagePinNumbers": {
8553
+ "numbers": [
8554
+ "1",
8555
+ "2",
8556
+ "3",
8557
+ "4",
8558
+ "5",
8559
+ "6",
8560
+ "7",
8561
+ "8",
8562
+ "9",
8563
+ "10",
8564
+ "11",
8565
+ "12",
8566
+ "13",
8567
+ "14"
8568
+ ],
8569
+ "source": "onsemi MC33171/D Rev.14 PIN CONNECTIONS quad diagram p2 incl. PDIP-14, standard quad order: Output 1-1, Inputs 1, VCC, Inputs 2, Output 2, Output 3, Inputs 3, VEE, Inputs 4, Output 4"
8570
+ },
8018
8571
  "sections": [
8019
8572
  {
8020
8573
  "law": {
@@ -8125,6 +8678,19 @@ const entries = [
8125
8678
  "OUT_B",
8126
8679
  "VCC"
8127
8680
  ],
8681
+ "packagePinNumbers": {
8682
+ "numbers": [
8683
+ "1",
8684
+ "2",
8685
+ "3",
8686
+ "4",
8687
+ "5",
8688
+ "6",
8689
+ "7",
8690
+ "8"
8691
+ ],
8692
+ "source": "TI SLOS080W Table 4-3 Pin Functions TL072x: 1OUT-1, 1IN-minus-2, 1IN-plus-3, VCC-minus-4, 2IN-plus-5, 2IN-minus-6, 2OUT-7, VCC-plus-8"
8693
+ },
8128
8694
  "sections": [
8129
8695
  {
8130
8696
  "law": {
@@ -8205,6 +8771,19 @@ const entries = [
8205
8771
  "OUT_B",
8206
8772
  "VCC"
8207
8773
  ],
8774
+ "packagePinNumbers": {
8775
+ "numbers": [
8776
+ "1",
8777
+ "2",
8778
+ "3",
8779
+ "4",
8780
+ "5",
8781
+ "6",
8782
+ "7",
8783
+ "8"
8784
+ ],
8785
+ "source": "TI SBOS855E section 5 Pin Functions OPA1678: OUT A-1, -IN A-2, +IN A-3, V-minus-4, +IN B-5, -IN B-6, OUT B-7, V-plus-8"
8786
+ },
8208
8787
  "sections": [
8209
8788
  {
8210
8789
  "law": {
@@ -8349,14 +8928,17 @@ const entries = [
8349
8928
  // transcribed (the gain-bandwidth product lives in `registry-data/opamp.ts`, stamped by
8350
8929
  // the passes below; the swing pair stays absent per the D4 freeze). GBW rows and catalog
8351
8930
  // entries are 1:1 by part id, so no entry splits.
8352
- // ADI AD712 dual precision BiFET op-amp, from the ADI AD712 datasheet Rev. B
8353
- // (SPECIFICATIONS at VS = +-15 V @ TA = +25C): OPEN-LOOP GAIN MIN 150 TYP 400 V/mV
8354
- // (J/A/S grades; K/B/T and C print MIN 200 TYP 400 -- TYP 400 in every grade, so the
8355
- // bare id carries it). Used as `openLoopGain: 400000`. The sheet's frequency row reads
8931
+ // ADI AD712 dual precision BiFET op-amp, from the ADI AD712 datasheet Rev. I
8932
+ // (SPECIFICATIONS at VS = +-15 V @ TA = +25C, p4): OPEN-LOOP GAIN
8933
+ // VOUT = -10 V to +10 V: MIN 150 TYP 400 V/mV (first grade group) and MIN 200
8934
+ // TYP 400 (second group) -- TYP 400 in every grade, so the bare id carries it. Used as `openLoopGain: 400000`. The sheet's frequency row reads
8356
8935
  // 'Small Signal Bandwidth 3.0 MIN 4.0 TYP MHz' with no closed-loop gain stated and never
8357
8936
  // uses the term gain-bandwidth, so no GBW figure is transcribed (see
8358
- // `opampGainBandwidthAbsent`). Pinout: 'pinned out in a standard op amp configuration'
8359
- // (dual DIP-8 order, same pin-numbered role convention as the LM833 entry above).
8937
+ // `opampGainBandwidthAbsent`). Pinout: the CONNECTION DIAGRAM Figure 1 below (AMP
8938
+ // NO. 1: 1 OUTPUT, 2 INVERTING, 3 NONINVERTING; AMP NO. 2: 5 NONINVERTING,
8939
+ // 6 INVERTING, 7 OUTPUT; 4 V-, 8 V+) covers the 8-Lead PDIP (N), SOIC_N (R) and
8940
+ // CERDIP (Q) packages with one diagram -- grades differ in specs, not in the package.
8941
+ // The bare AD712 is the family name in the sheet title.
8360
8942
  {
8361
8943
  "partIds": [
8362
8944
  "AD712"
@@ -8400,6 +8982,19 @@ const entries = [
8400
8982
  "OUT_B",
8401
8983
  "VCC"
8402
8984
  ],
8985
+ "packagePinNumbers": {
8986
+ "numbers": [
8987
+ "1",
8988
+ "2",
8989
+ "3",
8990
+ "4",
8991
+ "5",
8992
+ "6",
8993
+ "7",
8994
+ "8"
8995
+ ],
8996
+ "source": "ADI AD712 datasheet Rev. I (1986-2018) CONNECTION DIAGRAM Figure 1 (8-Lead PDIP N-Suffix, SOIC_N R-Suffix, CERDIP Q-Suffix) p1: 1 OUTPUT, 2 INVERTING INPUT, 3 NONINVERTING INPUT, 4 V-, 5 NONINVERTING INPUT, 6 INVERTING INPUT, 7 OUTPUT, 8 V+"
8997
+ },
8403
8998
  "sections": [
8404
8999
  {
8405
9000
  "law": {
@@ -8504,6 +9099,25 @@ const entries = [
8504
9099
  "IN_D_MINUS",
8505
9100
  "OUT_D"
8506
9101
  ],
9102
+ "packagePinNumbers": {
9103
+ "numbers": [
9104
+ "1",
9105
+ "2",
9106
+ "3",
9107
+ "4",
9108
+ "5",
9109
+ "6",
9110
+ "7",
9111
+ "8",
9112
+ "9",
9113
+ "10",
9114
+ "11",
9115
+ "12",
9116
+ "13",
9117
+ "14"
9118
+ ],
9119
+ "source": "TI SLOS013C Pin Functions table, standard quad order: 1OUT-1, 1IN-minus-2, 1IN-plus-3, VCC-plus-4, 2IN-plus-5, 2IN-minus-6, 2OUT-7, 3OUT-8, 3IN-minus-9, 3IN-plus-10, VCC-minus-11, 4IN-plus-12, 4IN-minus-13, 4OUT-14"
9120
+ },
8507
9121
  "sections": [
8508
9122
  {
8509
9123
  "law": {
@@ -8748,6 +9362,25 @@ const entries = [
8748
9362
  "IN_D_MINUS",
8749
9363
  "OUT_D"
8750
9364
  ],
9365
+ "packagePinNumbers": {
9366
+ "numbers": [
9367
+ "1",
9368
+ "2",
9369
+ "3",
9370
+ "4",
9371
+ "5",
9372
+ "6",
9373
+ "7",
9374
+ "8",
9375
+ "9",
9376
+ "10",
9377
+ "11",
9378
+ "12",
9379
+ "13",
9380
+ "14"
9381
+ ],
9382
+ "source": "TI SLOS080W Table 4-6 Pin Functions TL074x, standard quad order: 1OUT-1, 1IN-minus-2, 1IN-plus-3, VCC-plus-4, 2IN-plus-5, 2IN-minus-6, 2OUT-7, 3OUT-8, 3IN-minus-9, 3IN-plus-10, VCC-minus-11, 4IN-plus-12, 4IN-minus-13, 4OUT-14"
9383
+ },
8751
9384
  "sections": [
8752
9385
  {
8753
9386
  "law": {
@@ -9004,6 +9637,8 @@ const entries = [
9004
9637
  // `openLoopGain: 200000` (bare id takes the commercial C-grade column, disclosed;
9005
9638
  // TL072C precedent). No GBW figure (package/grade split; see
9006
9639
  // `opampGainBandwidthAbsent`). Single-DIP shape mirrors the LM741/TL071 entry.
9640
+ // Pin table from the ST TL081 sheet below (June 2008 Rev 3): signal pins 2/3/6 of
9641
+ // the 8-pin DIP; offset-null pins and NC stay unmodelled.
9007
9642
  {
9008
9643
  "partIds": [
9009
9644
  "TL081"
@@ -9047,7 +9682,25 @@ const entries = [
9047
9682
  "vin+",
9048
9683
  "vin-",
9049
9684
  "vout"
9050
- ]
9685
+ ],
9686
+ "packagePinNumbers": {
9687
+ "numbers": [
9688
+ "3",
9689
+ "2",
9690
+ "6"
9691
+ ],
9692
+ "packagePins": [
9693
+ "1",
9694
+ "2",
9695
+ "3",
9696
+ "4",
9697
+ "5",
9698
+ "6",
9699
+ "7",
9700
+ "8"
9701
+ ],
9702
+ "source": "ST TL081 June 2008 Rev 3 Pin connections (top view) N DIP8 p1: 1 Offset null 1, 2 Inverting input, 3 Non-inverting input, 4 VCC-, 5 Offset null 2, 6 Output, 7 VCC+, 8 N.C. (title covers TL081, TL081A, TL081B)"
9703
+ }
9051
9704
  }
9052
9705
  },
9053
9706
  // TI MC1458P dual general-purpose op-amp, from SLOS069C (Feb 1971, rev Aug 2010),
@@ -9098,6 +9751,19 @@ const entries = [
9098
9751
  "OUT_B",
9099
9752
  "VCC"
9100
9753
  ],
9754
+ "packagePinNumbers": {
9755
+ "numbers": [
9756
+ "1",
9757
+ "2",
9758
+ "3",
9759
+ "4",
9760
+ "5",
9761
+ "6",
9762
+ "7",
9763
+ "8"
9764
+ ],
9765
+ "source": "TI SLOS069C (Feb 1971, rev Aug 2010) MC1458 D, P, or PS PACKAGE (TOP VIEW) p1: 1 1OUT, 2 1IN-, 3 1IN+, 4 VCC-, 5 2IN+, 6 2IN-, 7 2OUT, 8 VCC+"
9766
+ },
9101
9767
  "sections": [
9102
9768
  {
9103
9769
  "law": {
@@ -9175,6 +9841,19 @@ const entries = [
9175
9841
  "OUT_B",
9176
9842
  "VCC"
9177
9843
  ],
9844
+ "packagePinNumbers": {
9845
+ "numbers": [
9846
+ "1",
9847
+ "2",
9848
+ "3",
9849
+ "4",
9850
+ "5",
9851
+ "6",
9852
+ "7",
9853
+ "8"
9854
+ ],
9855
+ "source": "Renesas FN1050 Rev 6.00 (Mar 4, 2005) Pinout CA3240, CA3240A (PDIP) TOP VIEW p1: 1 OUTPUT (A), 2 INV. INPUT (A), 3 NON-INV. INPUT (A), 4 V-, 5 NON-INV. INPUT (B), 6 INV. INPUT (B), 7 OUTPUT (B), 8 V+"
9856
+ },
9178
9857
  "sections": [
9179
9858
  {
9180
9859
  "law": {
@@ -9210,7 +9889,11 @@ const entries = [
9210
9889
  // 'Large Signal Voltage Gain AV: MIN 50 (LM201A) / 25 (LM301A) TYP 160 V/mV' both grades
9211
9890
  // share the TYP. Used as `openLoopGain: 160000`. LM301AN is the PDIP-8 orderable. No GBW
9212
9891
  // row exists (see `opampGainBandwidthAbsent`; same AOL-only shape as LM308).
9213
- // Single-DIP shape mirrors the LM741/TL071 entry.
9892
+ // Single-DIP shape mirrors the LM741/TL071 entry. Pin table: the onsemi PIN
9893
+ // CONNECTIONS prints pins 1 Balance, 2-3 Inputs, 4 VEE, 5 Balance, 6 Output, 7 VCC,
9894
+ // 8 Compensation with the PDIP-8 N marking LMx01AN (x = 2 or 3); the 2/3 polarity
9895
+ // (2 inverting, 3 non-inverting) is read off TI SNOSBS0D Fig. 49 (CDIP/PDIP). Balance,
9896
+ // compensation and NC stay unmodelled.
9214
9897
  {
9215
9898
  "partIds": [
9216
9899
  "LM301AN"
@@ -9254,7 +9937,25 @@ const entries = [
9254
9937
  "vin+",
9255
9938
  "vin-",
9256
9939
  "vout"
9257
- ]
9940
+ ],
9941
+ "packagePinNumbers": {
9942
+ "numbers": [
9943
+ "3",
9944
+ "2",
9945
+ "6"
9946
+ ],
9947
+ "packagePins": [
9948
+ "1",
9949
+ "2",
9950
+ "3",
9951
+ "4",
9952
+ "5",
9953
+ "6",
9954
+ "7",
9955
+ "8"
9956
+ ],
9957
+ "source": "onsemi LM301A/D Rev. 12 (July 2025) PIN CONNECTIONS (Top View) p1: 1 Balance, 2 Inputs, 3 Inputs, 4 VEE, 5 Balance, 6 Output, 7 VCC, 8 Compensation (PDIP-8 N SUFFIX CASE 626 marking LMx01AN, x = 2 or 3); TI SNOSBS0D (Sept 1979, rev Mar 2013) Figure 49 CDIP and PDIP Packages p17: 1 BALANCE/COMPENSATION, 2 INPUT (-), 3 INPUT (+), 4 V-, 5 BALANCE, 6 OUTPUT, 7 V+, 8 COMPENSATION"
9958
+ }
9258
9959
  }
9259
9960
  },
9260
9961
  // Renesas CA3130EZ single BiMOS op-amp, from FN817 Rev 6.00 (Aug 2005) Table 1
@@ -9262,6 +9963,8 @@ const entries = [
9262
9963
  // kOhm: MIN 50 TYP 320 kV/V' both grades. Used as `openLoopGain: 320000`. CA3130EZ is
9263
9964
  // the 8 Ld PDIP orderable. No GBW figure (compensation-dependent fT; see
9264
9965
  // `opampGainBandwidthAbsent`). Single-DIP shape mirrors the LM741/TL071 entry.
9966
+ // Pin table from the same FN817 sheet: signal pins 2/3/6; offset-null pins and
9967
+ // strobe stay unmodelled.
9265
9968
  {
9266
9969
  "partIds": [
9267
9970
  "CA3130EZ"
@@ -9305,11 +10008,35 @@ const entries = [
9305
10008
  "vin+",
9306
10009
  "vin-",
9307
10010
  "vout"
9308
- ]
10011
+ ],
10012
+ "packagePinNumbers": {
10013
+ "numbers": [
10014
+ "3",
10015
+ "2",
10016
+ "6"
10017
+ ],
10018
+ "packagePins": [
10019
+ "1",
10020
+ "2",
10021
+ "3",
10022
+ "4",
10023
+ "5",
10024
+ "6",
10025
+ "7",
10026
+ "8"
10027
+ ],
10028
+ "source": "Renesas FN817 Rev. 6.00 (Aug 1, 2005) Pinout CA3130, CA3130A (PDIP, SOIC) TOP VIEW p1: 1 OFFSET NULL, 2 INV. INPUT, 3 NON-INV. INPUT, 4 V-, 5 OFFSET NULL, 6 OUTPUT, 7 V+, 8 STROBE (Ordering Information: CA3130EZ 8 Ld PDIP)"
10029
+ }
9309
10030
  }
9310
10031
  },
9311
- // Bare "4559" dual (Mojo Rook IC1, 8 pins): no 4559-family sheet cited, so the sections
9312
- // carry the house 100000, disclosed as unsourced (TL062/LM741-single precedent), with no
10032
+ // Bare "4559" dual (Mojo Rook IC1, 8 pins): the JRC NJM4558/NJM4559 sheet below
10033
+ // prints NJM4559D (DIP8) and NJM4559M (DMP8) under one shared Top View diagram with
10034
+ // the PIN FUNCTION list transcribed in the table -- pin numbering identical for both
10035
+ // (suffix is package). The bare "4559" id itself is NOT a printed orderable: it is the
10036
+ // family number, carried the way the bare TLC2262 rides its family sheet. The SIP8
10037
+ // NJM4559L uses a different diagram (excluded; the corpus doc is 8-terminal DIP 1..8).
10038
+ // A Raytheon-marked 4559 is not covered by this JRC sheet. The sections carry the
10039
+ // house 100000, disclosed as unsourced (TL062/LM741-single precedent), with no
9313
10040
  // GBW figure (see `opampGainBandwidthAbsent`; same verdict as bare 4558). Standard dual
9314
10041
  // order, same pin-numbered role convention as the NJM4580 entry.
9315
10042
  {
@@ -9355,6 +10082,19 @@ const entries = [
9355
10082
  "OUT_B",
9356
10083
  "VCC"
9357
10084
  ],
10085
+ "packagePinNumbers": {
10086
+ "numbers": [
10087
+ "1",
10088
+ "2",
10089
+ "3",
10090
+ "4",
10091
+ "5",
10092
+ "6",
10093
+ "7",
10094
+ "8"
10095
+ ],
10096
+ "source": "JRC NJM4558/NJM4559 Ver.2013-11-05 (New Japan Radio Co., Ltd.) PIN CONFIGURATION (Top View) + PIN FUNCTION p1: 1 A OUTPUT, 2 A -INPUT, 3 A +INPUT, 4 V-, 5 B +INPUT, 6 B -INPUT, 7 B OUTPUT, 8 V+"
10097
+ },
9358
10098
  "sections": [
9359
10099
  {
9360
10100
  "law": {
@@ -9397,6 +10137,12 @@ const entries = [
9397
10137
  ...mosfetRegistryRecords.map((record) => fetLawEntry(record, "mosfet")),
9398
10138
  ...jfetRegistryRecords.map((record) => fetLawEntry(record, "jfet")),
9399
10139
  ...ujtRegistryRecords.map((record) => ujtLawEntry(record)),
10140
+ // LM386-family fixed-gain power amps: the printed resistor networks plus the derived
10141
+ // gain-bandwidth product become sections entries through the builder above -- one row
10142
+ // per maker sheet, so the entries cannot drift from the records. Bare LM386 rides the
10143
+ // TI row on the sheet's family title (owner ruling 2026-10-28); JRC386D rides the NJR row
10144
+ // as the owner-decided marking of the NJM386D (2026-10-28; the sheet does not print it).
10145
+ ...powerAmpRegistryRecords.map((record) => powerAmpEntry(record)),
9400
10146
  ];
9401
10147
  // --- Op-amp gain-bandwidth product: stamped from the data registry ------------------------------
9402
10148
  /**
@@ -9655,4 +10401,7 @@ export const gateOnlyFetPartIds = new Set(jfetRegistryRecords
9655
10401
  export const pedalPartCatalog = {
9656
10402
  entries: withDatasheetOutputSwing(withDatasheetGainBandwidth(entries)),
9657
10403
  };
10404
+ // A stated package pin table that is not a whole-digit bijection as long as its pinout would
10405
+ // bind packages wrongly rather than refuse them: loud at load, naming the entry.
10406
+ validatePackagePinNumbers(pedalPartCatalog.entries);
9658
10407
  //# sourceMappingURL=part-catalog.js.map