Commit Graph

9625 Commits

Author SHA1 Message Date
Holger Vogt bb013eef4e Function add_degmodel() adds the degradation model to the netlist
Add a 0 voltage source between internal and external source for
current measurement.
Add a B source parallel to drain and source for current reduction.
Use the mean of d_idlin (result[1]) and d_idsat (result[2])
as proportional factor to current.
Add a voltage source between external and internal gate
to apply dlt_vth shift from result[0]
2026-06-07 14:26:26 +02:00
Holger Vogt dbe0f704ed If transistor instance is at top level, there will be no colon
in the model name.
2026-06-07 14:26:26 +02:00
Holger Vogt d6b4ef5913 Move setting up OMP from CKTsetup() to inp_readall().
Add a check for abvailable logical CPU cores,
and use half of them as default.
2026-06-07 14:26:26 +02:00
Holger Vogt a5cb0d585c Use hash table modtabhash for finding model instead of linked list modtab.
This speeds up parsing of (a large number of) code models enormously.
2026-06-07 14:26:26 +02:00
Holger Vogt d5c062d9cb Code model:
Put the monitored degradation data onto the heap and into the hash table.
prepare_degsim():
Re-read the netlist, remove the monitors, get the device instance name.
Retrieve the degradation data from the result hash table.
2026-06-07 14:26:25 +02:00
Holger Vogt bb6a28a6b9 Add a command 'degsim' to reset the circuit, remove the monitors,
and add the degradation model to each degraded device.
Use function preparedegsim() to add the model with parameters from
degdatahash.
2026-06-07 14:26:25 +02:00
Holger Vogt e4f912718f Add a hash table to store the degradation monitor results per instance.
Transfer all data to the degmonitor cfunc.mod to reconstruct the
(MOS) device instance name in the code model. Use this instance
name as key for the hash table. Data is stored in loc->result.
2026-06-07 14:26:25 +02:00
Holger Vogt 13fc973d01 Add global has pointer for degradation data storage per instance,
inizialse it.
2026-06-07 14:26:25 +02:00
Holger Vogt 99e31de957 Don't read .agemodel, if newcompat.de is not set. 2026-06-07 14:26:25 +02:00
Holger Vogt fa2a60e8f5 Replace '[' and ']' by '@'
Required by code model parsing, when [ or ] are part of instance
or node name.
2026-06-07 14:26:24 +02:00
Holger Vogt d2918bab66 Add non-nqs PSP model 2026-06-07 14:26:24 +02:00
Holger Vogt 8f9ecc7c32 Add device type (nmos, pmos), derived from model name.
Invert PMOS voltages (pmos still in error though).
Output monitor now watches id_lin integral.
2026-06-07 14:26:24 +02:00
Holger Vogt 627fb50516 Improve error message 2026-06-07 14:26:24 +02:00
Holger Vogt 711c273b30 artificially set A_d_idsat from 0 to 0.001 2026-06-07 14:26:24 +02:00
Holger Vogt 8acdd1e426 typo
10 years degradation integration
2026-06-07 14:26:24 +02:00
Holger Vogt 9ee9afa48a example netlist: 3 inverters in series 2026-06-07 14:26:24 +02:00
Holger Vogt d267cd7b4a New title 2026-06-07 14:26:23 +02:00
Holger Vogt e61e902ca9 more descriptions into README 2026-06-07 14:26:23 +02:00
Holger Vogt bb6c4e3cdd Add a README for the degradation monitor 2026-06-07 14:26:23 +02:00
Holger Vogt b90879a0b9 Adding degradation monitors 2026-06-07 14:26:23 +02:00
Holger Vogt 5387c8e609 Enable using hashtables also for compiling with gcc. 2026-06-07 14:26:23 +02:00
Holger Vogt 5eef90103b Add a pre-processor flag XSPICECM during compilation of the
xtradev code models. This allows some settings in hash.c, e.g.
replacing fprintf functions not available in a code model.
2026-06-07 14:26:23 +02:00
Holger Vogt 39aa1ec1be Read the hash table with the aging model parameters.
Store the data in the static loc parameters used
during function evaluation.
2026-06-07 14:26:23 +02:00
Holger Vogt f149f7a506 Add a hash table paramhash to store the .agemodel model parameters. 2026-06-07 14:26:23 +02:00
Holger Vogt c511f44cd0 Enable compiling hash.c as part of a code model shared library. 2026-06-07 14:26:22 +02:00
Holger Vogt d2e41568db getdata()
Add model selection
Add preliminary parameter selection (still requires the correct
sequence of parameters).

Do three calculations for dlt_vth, d_idlin, and d_idsat
Error messages added.
2026-06-07 14:26:22 +02:00
Holger Vogt ce1be7639f Remove now unused parameters 2026-06-07 14:26:22 +02:00
Holger Vogt b164448e24 Specify static locdata containing constfac, sintegral and prevtime
instead of individual data.
2026-06-07 14:26:22 +02:00
Holger Vogt bd6b0be4a3 Add function cm_get_deg_params(void) to obtain the set
of gegeneration model püarameters stored in struct agemods.

Re-sort the parameters in ifspec.ifs (preliminary)

Use cm_get_deg_params() to obtain the model parameters in cfunc.mod
2026-06-07 14:26:22 +02:00
Holger Vogt 5827715db1 simple netlist example with agemodel data. 2026-06-07 14:26:22 +02:00
Holger Vogt 48cbcfe3db Read the agemodel data, put them into global array agemods 2026-06-07 14:26:22 +02:00
Holger Vogt d263fba97e Always call the function.
Inside it will be decided, depending on not having ngbehavior=de,
to disregard the agemodels.
2026-06-07 14:26:21 +02:00
Holger Vogt e74b7e67f4 Add function readdegparams in file inpdeg.c 2026-06-07 14:26:21 +02:00
Holger Vogt 95f9638045 remove debug messages 2026-06-07 14:26:21 +02:00
Holger Vogt 775c14e9c8 make parameter l lower case, add parameter 'file' 2026-06-07 14:26:21 +02:00
Holger Vogt 1bca7095c8 Add a compatibility mode 'de' for degradation simulation. 2026-06-07 14:26:21 +02:00
Holger Vogt 5af898f2fb Add INSTNAME and INSTMODNAME to code model macros 2026-06-07 14:26:21 +02:00
Holger Vogt 1b1a8d6f15 Scale function for *constfac, scale Boltzmann.
Add *prevtime to allow checking for final time, and to
avoid double acces to deg evaluation.
Add missing parameter L.
If other than 4 nodes, bail out.
2026-06-07 14:26:21 +02:00
Holger Vogt 1cad3f0085 Use real parameters as default (NMOS 0.13 saturation) 2026-06-07 14:26:20 +02:00
Holger Vogt ef63c61521 Add degradation monitor code model to extradev 2026-06-07 14:26:20 +02:00
Holger Vogt f2805e15fb Add two macros TSTEP and TSTOP to XSPICE 2026-06-07 14:26:20 +02:00
Holger Vogt fad198de7b Improve the error messages when reading a state file.
Bail out when the read has not been successfull.
2026-06-06 16:15:24 +02:00
Holger Vogt 58c312f733 Add MODEDCTRANCURVE to enable returning capacitance upon dc sweep.
Exclude integration if MODEDCTRANCURVE is active (forward,
self-heat and reverse diode)..
2026-06-06 14:36:06 +02:00
Holger Vogt 2a0a3ab403 Add MODEDCTRANCURVE to enable returning capacitance upon dc sweep.
Exclude integration if MODEDCTRANCURVE is active.
2026-06-06 14:34:52 +02:00
Holger Vogt ae06dfe978 No integration, if dc sweep is to return cpacitances 2026-06-06 14:33:05 +02:00
Holger Vogt 88e94b26c4 Reset ckt->CKTag[0] and ckt->CKTag[1] upon successful return
from transient simulation.
2026-06-06 14:28:56 +02:00
Holger Vogt 507351ae01 A digital NAND gate 9-stage ring oscillator (less than 30ms simulation time) 2026-06-06 14:26:25 +02:00
Holger Vogt b1717822d2 Revert "A digital NAND gate 9-stage ring oscillator (less than 30ms simulation time)"
This reverts commit 2ef046704e.
2026-06-06 12:46:43 +02:00
Holger Vogt 2ef046704e A digital NAND gate 9-stage ring oscillator (less than 30ms simulation time) 2026-06-03 16:40:45 +02:00
Holger Vogt 72620328a1 Excluded integration during self-heating as well. 2026-06-01 19:48:50 +02:00