Commit Graph

9653 Commits

Author SHA1 Message Date
Holger Vogt 5228de8325 Define a pre-processor flag HCI_FS1 set and used to identify the model
specific code.
2026-06-09 11:47:19 +02:00
Holger Vogt cb50f46129 Add variable deginstance to select between subcircuit model
and instance model for MOS transitor under degradation.
2026-06-08 20:37:37 +02:00
Holger Vogt 018577ac92 Remove compiler warning 2026-06-07 14:26:29 +02:00
Holger Vogt a9192c6888 Add missing } 2026-06-07 14:26:29 +02:00
Holger Vogt 6af77571e6 To achieve convergence, 1 Ohm resistor on source side
for current measurement, 1 Ohm resistor in series to
gate node with parallel current source.
2026-06-07 14:26:29 +02:00
Holger Vogt 5dd666d5b0 Replace B source by F source (CCCS)
Enavle subcircuit approach by #define DEGSUBCKT
2026-06-07 14:26:29 +02:00
Holger Vogt aa2389bc88 tentative sign error
t.b. checked in detail
2026-06-07 14:26:29 +02:00
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