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