@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.
- package/dist/compile.d.ts +16 -0
- package/dist/compile.d.ts.map +1 -1
- package/dist/compile.js +53 -2
- package/dist/compile.js.map +1 -1
- package/dist/device-laws.d.ts +48 -1
- package/dist/device-laws.d.ts.map +1 -1
- package/dist/device-laws.js +205 -4
- package/dist/device-laws.js.map +1 -1
- package/dist/fixtures/circuits.d.ts +18 -0
- package/dist/fixtures/circuits.d.ts.map +1 -1
- package/dist/fixtures/circuits.js +423 -0
- package/dist/fixtures/circuits.js.map +1 -1
- package/dist/index.d.ts +2 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/netlist.d.ts.map +1 -1
- package/dist/netlist.js +65 -0
- package/dist/netlist.js.map +1 -1
- package/dist/part-catalog.d.ts.map +1 -1
- package/dist/part-catalog.js +4 -0
- package/dist/part-catalog.js.map +1 -1
- package/dist/registry-data/bjt.d.ts.map +1 -1
- package/dist/registry-data/bjt.js +1422 -21
- package/dist/registry-data/bjt.js.map +1 -1
- package/dist/registry-data/diode.d.ts.map +1 -1
- package/dist/registry-data/diode.js +293 -0
- package/dist/registry-data/diode.js.map +1 -1
- package/dist/registry-data/index.d.ts +1 -1
- package/dist/registry-data/index.d.ts.map +1 -1
- 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 +79 -0
- package/dist/registry-data/jfet.js.map +1 -1
- package/dist/registry-data/led.d.ts.map +1 -1
- package/dist/registry-data/led.js +16 -0
- package/dist/registry-data/led.js.map +1 -1
- package/dist/registry-data/loader.d.ts +19 -1
- package/dist/registry-data/loader.d.ts.map +1 -1
- package/dist/registry-data/loader.js +32 -1
- package/dist/registry-data/loader.js.map +1 -1
- package/dist/registry-data/mosfet.d.ts.map +1 -1
- package/dist/registry-data/mosfet.js +12 -0
- package/dist/registry-data/mosfet.js.map +1 -1
- package/dist/registry-data/schema.d.ts +13 -0
- package/dist/registry-data/schema.d.ts.map +1 -1
- package/dist/registry-data/schema.js.map +1 -1
- package/dist/registry-data/zener.d.ts.map +1 -1
- package/dist/registry-data/zener.js +68 -0
- package/dist/registry-data/zener.js.map +1 -1
- package/dist/registry.d.ts +9 -0
- package/dist/registry.d.ts.map +1 -1
- package/dist/registry.js.map +1 -1
- package/dist/types.d.ts +31 -2
- package/dist/types.d.ts.map +1 -1
- 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.
|
package/dist/compile.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"compile.d.ts","sourceRoot":"","sources":["../src/compile.ts"],"names":[],"mappings":"
|
|
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
|
package/dist/compile.js.map
CHANGED
|
@@ -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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"}
|
package/dist/device-laws.d.ts
CHANGED
|
@@ -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
|
|
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":"AAsCA,OAAO,EAKN,KAAK,YAAY,EACjB,KAAK,WAAW,EAahB,MAAM,YAAY,CAAC;AACpB,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"device-laws.d.ts","sourceRoot":"","sources":["../src/device-laws.ts"],"names":[],"mappings":"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"}
|
package/dist/device-laws.js
CHANGED
|
@@ -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)) {
|