@vessel-dsp/compiler 0.19.0 → 0.21.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 (56) hide show
  1. package/dist/compile.d.ts +16 -0
  2. package/dist/compile.d.ts.map +1 -1
  3. package/dist/compile.js +53 -2
  4. package/dist/compile.js.map +1 -1
  5. package/dist/device-laws.d.ts +48 -1
  6. package/dist/device-laws.d.ts.map +1 -1
  7. package/dist/device-laws.js +205 -4
  8. package/dist/device-laws.js.map +1 -1
  9. package/dist/fixtures/circuits.d.ts +18 -0
  10. package/dist/fixtures/circuits.d.ts.map +1 -1
  11. package/dist/fixtures/circuits.js +423 -0
  12. package/dist/fixtures/circuits.js.map +1 -1
  13. package/dist/index.d.ts +2 -2
  14. package/dist/index.d.ts.map +1 -1
  15. package/dist/index.js +1 -1
  16. package/dist/index.js.map +1 -1
  17. package/dist/netlist.d.ts.map +1 -1
  18. package/dist/netlist.js +65 -0
  19. package/dist/netlist.js.map +1 -1
  20. package/dist/part-catalog.d.ts.map +1 -1
  21. package/dist/part-catalog.js +4 -0
  22. package/dist/part-catalog.js.map +1 -1
  23. package/dist/registry-data/bjt.d.ts.map +1 -1
  24. package/dist/registry-data/bjt.js +1422 -21
  25. package/dist/registry-data/bjt.js.map +1 -1
  26. package/dist/registry-data/diode.d.ts.map +1 -1
  27. package/dist/registry-data/diode.js +293 -0
  28. package/dist/registry-data/diode.js.map +1 -1
  29. package/dist/registry-data/index.d.ts +1 -1
  30. package/dist/registry-data/index.d.ts.map +1 -1
  31. package/dist/registry-data/index.js.map +1 -1
  32. package/dist/registry-data/jfet.d.ts.map +1 -1
  33. package/dist/registry-data/jfet.js +79 -0
  34. package/dist/registry-data/jfet.js.map +1 -1
  35. package/dist/registry-data/led.d.ts.map +1 -1
  36. package/dist/registry-data/led.js +16 -0
  37. package/dist/registry-data/led.js.map +1 -1
  38. package/dist/registry-data/loader.d.ts +19 -1
  39. package/dist/registry-data/loader.d.ts.map +1 -1
  40. package/dist/registry-data/loader.js +32 -1
  41. package/dist/registry-data/loader.js.map +1 -1
  42. package/dist/registry-data/mosfet.d.ts.map +1 -1
  43. package/dist/registry-data/mosfet.js +12 -0
  44. package/dist/registry-data/mosfet.js.map +1 -1
  45. package/dist/registry-data/schema.d.ts +13 -0
  46. package/dist/registry-data/schema.d.ts.map +1 -1
  47. package/dist/registry-data/schema.js.map +1 -1
  48. package/dist/registry-data/zener.d.ts.map +1 -1
  49. package/dist/registry-data/zener.js +68 -0
  50. package/dist/registry-data/zener.js.map +1 -1
  51. package/dist/registry.d.ts +9 -0
  52. package/dist/registry.d.ts.map +1 -1
  53. package/dist/registry.js.map +1 -1
  54. package/dist/types.d.ts +31 -2
  55. package/dist/types.d.ts.map +1 -1
  56. package/package.json +2 -2
package/dist/compile.d.ts CHANGED
@@ -5,6 +5,22 @@ export type CompileOptions = {
5
5
  readonly registry?: PartRegistry;
6
6
  readonly inputJack?: string;
7
7
  readonly outputJack?: string;
8
+ /**
9
+ * The room temperature the circuit sits in, in degrees Celsius. Absent means
10
+ * the 300 K reference every registry fit is referred to: every program is
11
+ * byte-identical to today's. Present, every junction law (diode, BJT, FET
12
+ * body diode excluded, LED/opto emitter excluded, OTA bias diode included)
13
+ * folds to T = 273.15 + C at compile time -- `thermalVoltage` with T and
14
+ * saturation currents with the SPICE law against the part's registry
15
+ * material (silicon where none is typed, recorded by
16
+ * `material-default-silicon`). The runtime and the `Program` shape are
17
+ * untouched: the option changes the numbers written into the stamps.
18
+ *
19
+ * Outside the fold, reported not changed: the FET body-diode scale and the
20
+ * optocoupler LED emitter, which both consoles hold as constants, stay at
21
+ * 300 K at any ambient.
22
+ */
23
+ readonly ambientTemperatureC?: number;
8
24
  };
9
25
  /**
10
26
  * Compile, or explain the refusal. This never throws for a document it cannot use.
@@ -1 +1 @@
1
- {"version":3,"file":"compile.d.ts","sourceRoot":"","sources":["../src/compile.ts"],"names":[],"mappings":"AA4BA,OAAO,EAAE,KAAK,QAAQ,EAAQ,MAAM,QAAQ,CAAC;AAO7C,OAAO,EAA+D,KAAK,YAAY,EAAE,MAAM,YAAY,CAAC;AAgB5G,OAAO,KAAK,EAQX,aAAa,EAcb,MAAM,SAAS,CAAC;AAGjB,MAAM,MAAM,cAAc,GAAG;IAC5B,QAAQ,CAAC,QAAQ,CAAC,EAAE,YAAY,CAAC;IACjC,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;CAC7B,CAAC;AAEF;;;;;;;;;GASG;AACH,wBAAgB,OAAO,CACtB,MAAM,EAAE,MAAM,EACd,OAAO,GAAE,cAA4C,GACnD,aAAa,CAcf;AAm3BD,wBAAgB,iBAAiB,CAChC,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,cAAc,GACrB;IAAE,QAAQ,CAAC,MAAM,EAAE,aAAa,CAAC;IAAC,QAAQ,CAAC,QAAQ,EAAE,QAAQ,GAAG,IAAI,CAAA;CAAE,CAMxE"}
1
+ {"version":3,"file":"compile.d.ts","sourceRoot":"","sources":["../src/compile.ts"],"names":[],"mappings":"AAgCA,OAAO,EAAE,KAAK,QAAQ,EAAQ,MAAM,QAAQ,CAAC;AAO7C,OAAO,EAA+D,KAAK,YAAY,EAAE,MAAM,YAAY,CAAC;AAgB5G,OAAO,KAAK,EAQX,aAAa,EAeb,MAAM,SAAS,CAAC;AAGjB,MAAM,MAAM,cAAc,GAAG;IAC5B,QAAQ,CAAC,QAAQ,CAAC,EAAE,YAAY,CAAC;IACjC,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAC7B;;;;;;;;;;;;;;OAcG;IACH,QAAQ,CAAC,mBAAmB,CAAC,EAAE,MAAM,CAAC;CACtC,CAAC;AAEF;;;;;;;;;GASG;AACH,wBAAgB,OAAO,CACtB,MAAM,EAAE,MAAM,EACd,OAAO,GAAE,cAA4C,GACnD,aAAa,CAcf;AAg7BD,wBAAgB,iBAAiB,CAChC,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,cAAc,GACrB;IAAE,QAAQ,CAAC,MAAM,EAAE,aAAa,CAAC;IAAC,QAAQ,CAAC,QAAQ,EAAE,QAAQ,GAAG,IAAI,CAAA;CAAE,CAMxE"}
package/dist/compile.js CHANGED
@@ -4,7 +4,7 @@
4
4
  // compiler holds no knowledge of any specific part -- and compiling with an empty
5
5
  // registry is a legitimate configuration that measures what works with no part
6
6
  // knowledge at all.
7
- import { attachDeviceLaws, composeMacroBlocks, findElectricallyIsolatedIcs, findIcsNotExecuted, findUnimplementedDeviceLaws, JFET_DEFAULT_THRESHOLD_VOLTS, JFET_DEFAULT_TRANSCONDUCTANCE, MOSFET_BODY_EMISSION_COEFFICIENT, MOSFET_BODY_SATURATION_CURRENT, SILICON_FORWARD_BETA, SILICON_SATURATION_CURRENT, } from "./device-laws.js";
7
+ import { attachDeviceLaws, composeMacroBlocks, findElectricallyIsolatedIcs, findIcsNotExecuted, findUnimplementedDeviceLaws, JFET_DEFAULT_THRESHOLD_VOLTS, JFET_DEFAULT_TRANSCONDUCTANCE, kelvinFromAmbientCelsius, MOSFET_BODY_EMISSION_COEFFICIENT, MOSFET_BODY_SATURATION_CURRENT, ambientTemperatureScalesJunction, registryMaterialFor, REFERENCE_TEMPERATURE_KELVIN, SILICON_FORWARD_BETA, SILICON_SATURATION_CURRENT, } from "./device-laws.js";
8
8
  import { findMultiDeviceShells, findUnreadableTerminalRoles, } from "./unreadable-terminal-role.js";
9
9
  import { findUnexecutedRegions } from "./unexecuted-region.js";
10
10
  import { deriveBypass } from "./bypass.js";
@@ -58,12 +58,18 @@ export function compile(source, options = { registry: emptyRegistry }) {
58
58
  }
59
59
  }
60
60
  function run(source, options) {
61
+ // The ambient temperature is a programmer option, validated before any stage
62
+ // reads the document: a non-finite or below-absolute-zero value throws rather
63
+ // than compiling a pedal at an unphysical temperature.
64
+ const ambientKelvin = options.ambientTemperatureC === undefined
65
+ ? REFERENCE_TEMPERATURE_KELVIN
66
+ : kelvinFromAmbientCelsius(options.ambientTemperatureC);
61
67
  const netlist = readNetlist(source, {
62
68
  inputJack: options.inputJack,
63
69
  outputJack: options.outputJack,
64
70
  registry: options.registry ?? emptyRegistry,
65
71
  });
66
- const lawed = attachDeviceLaws(netlist, options.registry ?? emptyRegistry);
72
+ const lawed = attachDeviceLaws(netlist, options.registry ?? emptyRegistry, { ambientKelvin });
67
73
  // Decision 1: an unmodellable device makes the whole pedal/amp unsupported, and
68
74
  // the refusal names every component and reason rather than the first one.
69
75
  const unsupported = lawed.resolutions.filter((resolution) => resolution.outcome === "unsupported");
@@ -164,6 +170,7 @@ function run(source, options) {
164
170
  ...findFetLawDefaults(netlist, options.registry ?? emptyRegistry),
165
171
  ...findBjtLawDefaults(netlist, options.registry ?? emptyRegistry),
166
172
  ...findDiodeLawDefaults(netlist, options.registry ?? emptyRegistry),
173
+ ...findMaterialDefaultSilicon(lawed, options.registry ?? emptyRegistry, ambientKelvin),
167
174
  ...findRegistryProvisionalValues(netlist, lawed, options.registry ?? emptyRegistry),
168
175
  ...findLedColourUnmatched(netlist, lawed),
169
176
  ...findRegistryOverrideApplied(netlist, lawed, options.registry ?? emptyRegistry),
@@ -342,6 +349,50 @@ function findFetLawDefaults(netlist, registry) {
342
349
  },
343
350
  ];
344
351
  }
352
+ /** Junctions folded at a non-default ambient on the silicon bandgap. See `MaterialDefaultSiliconWarning`. */
353
+ function findMaterialDefaultSilicon(lawed, registry, kelvin) {
354
+ // At the 300 K reference the fold is skipped outright, so there is nothing to
355
+ // record and -- decisively -- no new warning on any default compile.
356
+ if (!ambientTemperatureScalesJunction(kelvin)) {
357
+ return [];
358
+ }
359
+ const byId = new Map(lawed.netlist.devices.map((device) => [device.id, device]));
360
+ const defaulted = [];
361
+ for (const resolution of lawed.resolutions) {
362
+ if (resolution.outcome !== "law") {
363
+ continue;
364
+ }
365
+ const kind = resolution.law.kind;
366
+ if (kind !== "diode" && kind !== "bjt" && kind !== "ota") {
367
+ continue;
368
+ }
369
+ // A section expansion lowers as `<device>#<index>`; the notice names the device.
370
+ const id = resolution.device.replace(/#\d+$/, "");
371
+ if (defaulted.includes(id)) {
372
+ continue;
373
+ }
374
+ const device = byId.get(resolution.device) ?? byId.get(id);
375
+ if (registryMaterialFor(registry, device?.identity.partNumber ?? null) !== null) {
376
+ continue;
377
+ }
378
+ defaulted.push(id);
379
+ }
380
+ if (defaulted.length === 0) {
381
+ return [];
382
+ }
383
+ return [
384
+ {
385
+ code: "material-default-silicon",
386
+ device: null,
387
+ devices: defaulted,
388
+ kelvin,
389
+ detail: `${defaulted.length} junction(s) fold to ${(kelvin - 273.15).toFixed(2)} C on the silicon ` +
390
+ `bandgap (1.11 eV) because no registry entry states a material for the exact part: ` +
391
+ `${defaulted.join("; ")}. An LED is named like any other defaulted junction: its ` +
392
+ "junction is a III-V the three-material law does not cover, so LEDs run silicon by construction.",
393
+ },
394
+ ];
395
+ }
345
396
  /** BJTs stamped with the bjt law's own defaults. See `BjtLawDefaultWarning`. */
346
397
  function findBjtLawDefaults(netlist, registry) {
347
398
  // The same test as the JFET finder: a parameter the document types or the registry
@@ -1 +1 @@
1
- {"version":3,"file":"compile.js","sourceRoot":"","sources":["../src/compile.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"compile.js","sourceRoot":"","sources":["../src/compile.ts"],"names":[],"mappings":"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"}
@@ -1,8 +1,38 @@
1
1
  import { type PartRegistry, type PartSection } from "./registry";
2
2
  import type { FirmwareClass } from "./firmware-class";
3
+ import type { JunctionMaterial } from "./registry-data/schema";
3
4
  import type { Block, Device, DeviceResolution, ElectricallyIsolatedIcWarning, IcNotExecutedWarning, LawedNetlist, OpenIcGapClass, UnimplementedDeviceLawWarning, Netlist, NodeId } from "./types";
4
5
  /** Room-temperature thermal voltage; the diode law needs a reference somewhere. */
5
6
  export declare const THERMAL_VOLTAGE = 0.025852;
7
+ /**
8
+ * The absolute temperature every registry fit is referred to, in kelvin.
9
+ *
10
+ * Fitted saturation currents and the engine thermal-voltage constant are stated at
11
+ * this temperature (`THERMAL_VOLTAGE` is kT/q at 300 K, not 273.15 + 27), so the
12
+ * ambient-temperature fold scales relative to it and ngspice parity sets
13
+ * `tnom=26.85` to match. With no ambient option the compile stamps exactly today's
14
+ * numbers: the fold is skipped outright below a 1e-9 K band around this value, so
15
+ * the default path shares no arithmetic with the scaled one.
16
+ */
17
+ export declare const REFERENCE_TEMPERATURE_KELVIN = 300;
18
+ /**
19
+ * The compile option's Celsius as an absolute temperature, validated.
20
+ *
21
+ * Throws a `RangeError` naming the option for a non-finite value or anything below
22
+ * absolute zero: an option is a programmer error, not a source refusal, so it
23
+ * propagates rather than becoming a pedal-shaped answer.
24
+ */
25
+ export declare function kelvinFromAmbientCelsius(celsius: number): number;
26
+ /** Whether the fold changes any number: outside a 1e-9 K band around 300 K. */
27
+ export declare function ambientTemperatureScalesJunction(kelvin: number): boolean;
28
+ /**
29
+ * A part's junction material for the temperature fold: the registry entry's typed
30
+ * `material` for the exact folded part id -- the same rung the law refinement
31
+ * uses -- or null when no entry states one. Null means the silicon default, which
32
+ * the compile records (`material-default-silicon`); it is never inferred from the
33
+ * part number or any prose.
34
+ */
35
+ export declare function registryMaterialFor(registry: PartRegistry, partNumber: string | null): JunctionMaterial | null;
6
36
  /**
7
37
  * Closed and open switch resistances. Not arbitrary: the ratio sets the matrix
8
38
  * condition number, so 1e-2 to 1e9 is chosen to be electrically indistinguishable
@@ -91,7 +121,24 @@ export declare function ldrTableFieldsOf(params: {
91
121
  readonly ldrTableCurrentAmps?: readonly number[];
92
122
  readonly ldrTableOhms?: readonly number[];
93
123
  };
94
- export declare function attachDeviceLaws(netlist: Netlist, registry: PartRegistry): LawedNetlist;
124
+ export type AttachDeviceLawsOptions = {
125
+ /**
126
+ * The ambient temperature in kelvin. Absent means the 300 K reference every
127
+ * registry fit is referred to: junction laws stamp exactly as today and the
128
+ * fold changes no number. Present and outside a 1e-9 K band around 300 K, the
129
+ * fold scales every diode, BJT and OTA-bias law (`thermalVoltage`,
130
+ * `saturationCurrent`, BJT `leakageAmps`) to the temperature; parts whose
131
+ * registry entry states no material run the silicon bandgap and are recorded
132
+ * by the `material-default-silicon` notice the compile emits.
133
+ *
134
+ * Outside the fold by construction, and reported rather than changed: the FET
135
+ * body-diode scale and the optocoupler emitter, which both consoles hold as
136
+ * constants, stay at 300 K at any ambient. Folding them needs new stamp
137
+ * fields, which is a Program-shape change this option deliberately avoids.
138
+ */
139
+ readonly ambientKelvin?: number;
140
+ };
141
+ export declare function attachDeviceLaws(netlist: Netlist, registry: PartRegistry, options?: AttachDeviceLawsOptions): LawedNetlist;
95
142
  /**
96
143
  * A multi-section part as one device per section, or `null` when the part is not multi-section.
97
144
  *
@@ -1 +1 @@
1
- {"version":3,"file":"device-laws.d.ts","sourceRoot":"","sources":["../src/device-laws.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"device-laws.d.ts","sourceRoot":"","sources":["../src/device-laws.ts"],"names":[],"mappings":"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"}
@@ -25,6 +25,135 @@ import { GROUND } from "./types.js";
25
25
  import { LED_COLOUR_RECORD_ID } from "./registry-data/led.js";
26
26
  /** Room-temperature thermal voltage; the diode law needs a reference somewhere. */
27
27
  export const THERMAL_VOLTAGE = 0.025_852;
28
+ /**
29
+ * The absolute temperature every registry fit is referred to, in kelvin.
30
+ *
31
+ * Fitted saturation currents and the engine thermal-voltage constant are stated at
32
+ * this temperature (`THERMAL_VOLTAGE` is kT/q at 300 K, not 273.15 + 27), so the
33
+ * ambient-temperature fold scales relative to it and ngspice parity sets
34
+ * `tnom=26.85` to match. With no ambient option the compile stamps exactly today's
35
+ * numbers: the fold is skipped outright below a 1e-9 K band around this value, so
36
+ * the default path shares no arithmetic with the scaled one.
37
+ */
38
+ export const REFERENCE_TEMPERATURE_KELVIN = 300;
39
+ /** Offset between the compile option's Celsius and the fold's kelvin. */
40
+ const CELSIUS_TO_KELVIN = 273.15;
41
+ /** Boltzmann constant, J/K (exact, SI). */
42
+ const BOLTZMANN_JOULES_PER_KELVIN = 1.380_649e-23;
43
+ /** Elementary charge, C (exact, SI). */
44
+ const ELEMENTARY_CHARGE_COULOMBS = 1.602_176_634e-19;
45
+ /**
46
+ * Bandgap energy per junction material, in eV: the ngspice defaults for the
47
+ * matching device kinds (silicon diode/BJT 1.11, germanium 0.67, Schottky barrier
48
+ * 0.69). An LED junction is a III-V the three-material law does not cover; LEDs run
49
+ * the silicon bandgap and the material-default notice says so.
50
+ */
51
+ const BANDGAP_ELECTRON_VOLTS = {
52
+ silicon: 1.11,
53
+ germanium: 0.67,
54
+ schottky: 0.69,
55
+ };
56
+ /** The saturation-current temperature exponent (SPICE XTI), shared by all three. */
57
+ const SATURATION_TEMPERATURE_EXPONENT = 3;
58
+ /**
59
+ * The compile option's Celsius as an absolute temperature, validated.
60
+ *
61
+ * Throws a `RangeError` naming the option for a non-finite value or anything below
62
+ * absolute zero: an option is a programmer error, not a source refusal, so it
63
+ * propagates rather than becoming a pedal-shaped answer.
64
+ */
65
+ export function kelvinFromAmbientCelsius(celsius) {
66
+ if (!Number.isFinite(celsius)) {
67
+ throw new RangeError(`ambientTemperatureC ${String(celsius)} is not a finite temperature in degrees Celsius`);
68
+ }
69
+ if (celsius < -CELSIUS_TO_KELVIN) {
70
+ throw new RangeError(`ambientTemperatureC ${String(celsius)} is below absolute zero (-273.15 C)`);
71
+ }
72
+ return celsius + CELSIUS_TO_KELVIN;
73
+ }
74
+ /** Whether the fold changes any number: outside a 1e-9 K band around 300 K. */
75
+ export function ambientTemperatureScalesJunction(kelvin) {
76
+ return (Math.abs(kelvin - REFERENCE_TEMPERATURE_KELVIN) > 1e-9 &&
77
+ Number.isFinite(kelvin));
78
+ }
79
+ /**
80
+ * The SPICE temperature ratio a junction saturation current scales by, relative to
81
+ * the 300 K reference the registry fits are referred to:
82
+ * `Is(T) = Is * (T/Tnom)^(XTI/N) * exp((Eg*q/(N*k)) * (1/Tnom - 1/T))` with XTI = 3.
83
+ * `n` is the junction's own emission coefficient (1 for a BJT or OTA bias diode).
84
+ */
85
+ function saturationCurrentRatio(emissionCoefficient, material, kelvin) {
86
+ const bandgapJoules = BANDGAP_ELECTRON_VOLTS[material] * ELEMENTARY_CHARGE_COULOMBS;
87
+ const slope = bandgapJoules /
88
+ (emissionCoefficient * BOLTZMANN_JOULES_PER_KELVIN);
89
+ return ((kelvin / REFERENCE_TEMPERATURE_KELVIN) **
90
+ (SATURATION_TEMPERATURE_EXPONENT / emissionCoefficient) *
91
+ Math.exp(slope * (1 / REFERENCE_TEMPERATURE_KELVIN - 1 / kelvin)));
92
+ }
93
+ /**
94
+ * Fold one finished diode law to the ambient temperature: `thermalVoltage` scales
95
+ * with T (today's constant is kT/q at 300 K) and `saturationCurrent` follows the
96
+ * SPICE law above with the junction's own emission coefficient. Series resistance
97
+ * and breakdown voltage carry no temperature model and are kept as stated.
98
+ */
99
+ function diodeLawAtAmbientTemperature(law, material, kelvin) {
100
+ return {
101
+ ...law,
102
+ thermalVoltage: law.thermalVoltage * (kelvin / REFERENCE_TEMPERATURE_KELVIN),
103
+ saturationCurrent: law.saturationCurrent *
104
+ saturationCurrentRatio(law.emissionCoefficient, material, kelvin),
105
+ };
106
+ }
107
+ /**
108
+ * Fold one finished BJT law to the ambient temperature: as the diode fold, with
109
+ * the Ebers-Moll ideality of 1. The excess collector-base leakage is a junction
110
+ * prefactor beyond the ideal reverse current, so it scales with the same ratio;
111
+ * betas carry no temperature model and are kept as stated.
112
+ */
113
+ function bjtLawAtAmbientTemperature(law, material, kelvin) {
114
+ const ratio = saturationCurrentRatio(1, material, kelvin);
115
+ return {
116
+ ...law,
117
+ thermalVoltage: law.thermalVoltage * (kelvin / REFERENCE_TEMPERATURE_KELVIN),
118
+ saturationCurrent: law.saturationCurrent * ratio,
119
+ leakageAmps: law.leakageAmps * ratio,
120
+ };
121
+ }
122
+ /**
123
+ * Fold one finished OTA law to the ambient temperature: the four-terminal bias
124
+ * diode is a silicon junction with ideality 1. A law that states no bias-diode
125
+ * pair (a sections entry carrying transconductance only) gains the scaled class
126
+ * defaults the lowering would otherwise stamp at 300 K, so the program carries
127
+ * the temperature rather than the lowering re-defaulting it.
128
+ */
129
+ function otaLawAtAmbientTemperature(law, kelvin) {
130
+ const ratio = saturationCurrentRatio(1, "silicon", kelvin);
131
+ return {
132
+ ...law,
133
+ saturationCurrent: (law.saturationCurrent ?? 1e-12) * ratio,
134
+ thermalVoltage: (law.thermalVoltage ?? THERMAL_VOLTAGE) *
135
+ (kelvin / REFERENCE_TEMPERATURE_KELVIN),
136
+ };
137
+ }
138
+ /**
139
+ * A part's junction material for the temperature fold: the registry entry's typed
140
+ * `material` for the exact folded part id -- the same rung the law refinement
141
+ * uses -- or null when no entry states one. Null means the silicon default, which
142
+ * the compile records (`material-default-silicon`); it is never inferred from the
143
+ * part number or any prose.
144
+ */
145
+ export function registryMaterialFor(registry, partNumber) {
146
+ if (partNumber === null) {
147
+ return null;
148
+ }
149
+ const folded = foldPartId(partNumber);
150
+ for (const entry of registry.entries) {
151
+ if (entry.partIds.some((id) => foldPartId(id) === folded)) {
152
+ return entry.material ?? null;
153
+ }
154
+ }
155
+ return null;
156
+ }
28
157
  /**
29
158
  * Closed and open switch resistances. Not arbitrary: the ratio sets the matrix
30
159
  * condition number, so 1e-2 to 1e9 is chosen to be electrically indistinguishable
@@ -610,7 +739,7 @@ function zenerRailDerivations(netlist, registry, nodeToVoltage, devicesTouchingN
610
739
  }
611
740
  return derived;
612
741
  }
613
- export function attachDeviceLaws(netlist, registry) {
742
+ export function attachDeviceLaws(netlist, registry, options) {
614
743
  const regulatedBase = registrySuppliedVoltages(netlist, registry);
615
744
  const nodeToVoltage = buildNodeToVoltageMap(netlist, regulatedBase);
616
745
  const devicesTouchingNode = deviceCountByNode(netlist);
@@ -665,6 +794,10 @@ export function attachDeviceLaws(netlist, registry) {
665
794
  internalNodes.set(key, node);
666
795
  return node;
667
796
  };
797
+ // The ambient temperature in kelvin this compile folds to. Absent means the
798
+ // 300 K reference: the junction fold and the thermistor resistance both land
799
+ // exactly on today's numbers (the fold is skipped outright near 300 K).
800
+ const ambientKelvin = options?.ambientKelvin ?? REFERENCE_TEMPERATURE_KELVIN;
668
801
  const devices = [];
669
802
  const resolutions = [];
670
803
  for (const device of netlist.devices) {
@@ -676,7 +809,7 @@ export function attachDeviceLaws(netlist, registry) {
676
809
  }
677
810
  if (expanded === null) {
678
811
  devices.push(device);
679
- resolutions.push(resolveDevice(device, registry, rails, supply, taperByControl, mainsFrequencyHz, devicesTouchingNode, nodeToVoltage, netlist));
812
+ resolutions.push(resolveDevice(device, registry, rails, supply, taperByControl, mainsFrequencyHz, devicesTouchingNode, nodeToVoltage, netlist, ambientKelvin));
680
813
  continue;
681
814
  }
682
815
  for (const [section, resolution] of expanded) {
@@ -690,9 +823,44 @@ export function attachDeviceLaws(netlist, registry) {
690
823
  devices,
691
824
  nodes: internalNodes.size === 0 ? netlist.nodes : [...netlist.nodes, ...internalNodes.values()],
692
825
  },
693
- resolutions,
826
+ resolutions: foldAmbientTemperature(devices, resolutions, registry, ambientKelvin),
694
827
  };
695
828
  }
829
+ /**
830
+ * Fold the ambient temperature into every finished junction law, at compile time.
831
+ *
832
+ * With no ambient (or within a 1e-9 K band of 300 K) the resolutions pass through
833
+ * untouched -- the same array contents, so every program is byte-identical to
834
+ * today's. Otherwise each diode, BJT and OTA law is replaced by its scaled copy;
835
+ * every other outcome (macro, open, unsupported, non-junction laws) is returned as
836
+ * is. The runtime, the `Program` shape and both consoles are untouched: the option
837
+ * changes the numbers written into the stamps and nothing else.
838
+ */
839
+ function foldAmbientTemperature(devices, resolutions, registry, ambientKelvin) {
840
+ const kelvin = ambientKelvin;
841
+ if (!ambientTemperatureScalesJunction(kelvin)) {
842
+ return resolutions;
843
+ }
844
+ const byId = new Map(devices.map((device) => [device.id, device]));
845
+ return resolutions.map((resolution) => {
846
+ if (resolution.outcome !== "law") {
847
+ return resolution;
848
+ }
849
+ const law = resolution.law;
850
+ if (law.kind !== "diode" && law.kind !== "bjt" && law.kind !== "ota") {
851
+ return resolution;
852
+ }
853
+ const material = registryMaterialFor(registry, byId.get(resolution.device)?.identity.partNumber ?? null) ??
854
+ "silicon";
855
+ if (law.kind === "diode") {
856
+ return { ...resolution, law: diodeLawAtAmbientTemperature(law, material, kelvin) };
857
+ }
858
+ if (law.kind === "bjt") {
859
+ return { ...resolution, law: bjtLawAtAmbientTemperature(law, material, kelvin) };
860
+ }
861
+ return { ...resolution, law: otaLawAtAmbientTemperature(law, kelvin) };
862
+ });
863
+ }
696
864
  /**
697
865
  * A multi-section part as one device per section, or `null` when the part is not multi-section.
698
866
  *
@@ -2355,7 +2523,7 @@ function packageDeviceParameters(device, registry) {
2355
2523
  }
2356
2524
  return parameters;
2357
2525
  }
2358
- function resolveDevice(device, registry, rails, supply, taperByControl, mainsFrequencyHz, devicesTouchingNode, nodeToVoltage, netlist) {
2526
+ function resolveDevice(device, registry, rails, supply, taperByControl, mainsFrequencyHz, devicesTouchingNode, nodeToVoltage, netlist, ambientKelvin = REFERENCE_TEMPERATURE_KELVIN) {
2359
2527
  // A component declared as one transistor that is really several devices in one shell. Opened
2360
2528
  // rather than stamped, for the reason `isNonExecutableIcSupportShell` opens an IC shell: there
2361
2529
  // is no single device here to describe, and a transistor law would invent one. Reported by
@@ -2481,6 +2649,39 @@ function resolveDevice(device, registry, rails, supply, taperByControl, mainsFre
2481
2649
  law: { kind: "conductance", siemens: 1 / ohms },
2482
2650
  };
2483
2651
  }
2652
+ case "thermistor": {
2653
+ // An NTC disc at the ambient temperature: `R(T) = R_ref * exp(Beta *
2654
+ // (1/T - 1/T_ref))`, folded here at compile time like the junction fold
2655
+ // above, and stamped as the conductance a resistor of that value takes.
2656
+ // Beta 0 folds to exactly R_ref (exp(0) is 1), so the negative control
2657
+ // compiles to the same program as the same-valued resistor.
2658
+ //
2659
+ // **No self-heating.** The resistance is a function of the ambient
2660
+ // alone: the current through the disc does not warm it. A thermistor
2661
+ // that heats under load needs a thermal state the program does not have.
2662
+ const referenceOhms = device.parameters.referenceOhms ?? 0;
2663
+ const beta = device.parameters.betaKelvin ?? 0;
2664
+ const referenceKelvin = device.parameters.referenceKelvin ?? 298.15;
2665
+ if (device.nodes.length !== 2) {
2666
+ return unsupported(device, `thermistor has ${device.nodes.length} terminals, not the two a polarity-free disc carries`);
2667
+ }
2668
+ if (!(referenceOhms > 0) ||
2669
+ !Number.isFinite(beta) ||
2670
+ beta < 0 ||
2671
+ !(referenceKelvin > 0)) {
2672
+ return unsupported(device, "thermistor carries no usable Resistance, Beta or reference temperature");
2673
+ }
2674
+ const ohms = referenceOhms *
2675
+ Math.exp(beta * (1 / ambientKelvin - 1 / referenceKelvin));
2676
+ if (!(ohms > 0) || !Number.isFinite(ohms)) {
2677
+ return unsupported(device, "thermistor folds to a non-positive resistance at this ambient temperature");
2678
+ }
2679
+ return {
2680
+ outcome: "law",
2681
+ device: device.id,
2682
+ law: { kind: "conductance", siemens: 1 / ohms },
2683
+ };
2684
+ }
2484
2685
  case "potentiometer": {
2485
2686
  const ohms = device.parameters.ohms ?? 0;
2486
2687
  if (!(ohms > 0)) {