Commit Graph

9646 Commits

Author SHA1 Message Date
Holger Vogt ee4f42aba9 Select deg per instance 2026-06-07 14:26:29 +02:00
Holger Vogt 33e1735a21 Re-enter option to compile with subcircuit support instead of delvto and factuo. 2026-06-07 14:26:29 +02:00
Holger Vogt cd313c2ea0 Negative output in case of PMOS 2026-06-07 14:26:28 +02:00
Holger Vogt 1ee936cce1 Add variables deg_tfuture deg_limits to allow users setting
lower limits of deg parameters and the extrapolation time
in .spiceinit.
2026-06-07 14:26:28 +02:00
Holger Vogt fbc74467ba Typos 2026-06-07 14:26:28 +02:00
Holger Vogt d79d2555f6 PMOS and ring oscillator degradation examples 2026-06-07 14:26:28 +02:00
Holger Vogt 1a8f9621ea Fix a bug in the extrapolation formula:
NMOS and PMOS degradations are o.k. now!
2026-06-07 14:26:28 +02:00
Holger Vogt d7758d46c4 Comments improved 2026-06-07 14:26:28 +02:00
Holger Vogt b82fb5c58a Copyright extended to 2026 2026-06-07 14:26:28 +02:00
Holger Vogt 6cfa3dcb40 Some comments added 2026-06-07 14:26:28 +02:00
Holger Vogt 46c52a5436 Add command 'plainsim' to example. 2026-06-07 14:26:27 +02:00
Holger Vogt c2e306333e Add parameter 'type' to .agemodel data to determine if NMOS or PMOS.
Still the model name is scanned for _pmos or _nmos, but as this
is IHP specific, type will be available as well.
2026-06-07 14:26:27 +02:00
Holger Vogt fb17cf1f39 Add 'factuo' as redundandant synonym to 'mulu0'
to enable degradation simulation with BSIM3 and BSIM4.
2026-06-07 14:26:27 +02:00
Holger Vogt 08d6efea51 Compatmode 'de' to control all degradation sim procedures.
Differentiate between commands
degsim: remove circuit, reload from storage, remove deg monitors,
add instance deg parameters,
used to prepare for simulation with degraded devices,
and plainsim: remove circuit, reload from storage, remove deg monitors,
no change to instances instance
used to prepare for plain simulation without degradation.
2026-06-07 14:26:27 +02:00
Holger Vogt 9f6df24505 Add a command 'plainsim': Throw out the circuit struct,
recreate it from the local storage, remove the deg monitors,
no change to device instances.
2026-06-07 14:26:27 +02:00
Holger Vogt 79848e5666 Add printout of number of degraded devices
Switch from adding extra B and V sources to using instance parameters
delvto and factuo.
Availability with BSIM4 has to be checked!
2026-06-07 14:26:27 +02:00
Holger Vogt c41aa13d88 Add a limit 1e-6 to the degradation parameters, otherwise set to 0
Remove debug printout
2026-06-07 14:26:27 +02:00
Holger Vogt 86fc365db1 Add version with truncated models to debug-out3.txt 2026-06-07 14:26:26 +02:00
Holger Vogt 92d70544c7 Add function to delete the result hash table.
Not yet used.
2026-06-07 14:26:26 +02:00
Holger Vogt 7eb805183b tiny update 2026-06-07 14:26:26 +02:00
Holger Vogt 582559295d Single NMOS degradation 2026-06-07 14:26:26 +02:00
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