Commit Graph

9434 Commits

Author SHA1 Message Date
Holger Vogt dc7d61591a Single NMOS degradation 2026-02-13 17:03:21 +01:00
Holger Vogt 9e97aac1dd 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-02-13 16:59:06 +01:00
Holger Vogt 53aa1f991e If transistor instance is at top level, there will be no colon
in the model name.
2026-02-13 16:56:00 +01:00
Holger Vogt c093f985e1 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-02-11 20:15:57 +01:00
Holger Vogt a4d3b9dc5d 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-02-11 20:13:13 +01:00
Holger Vogt 2b21666a4d 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-02-09 17:01:19 +01:00
Holger Vogt 44fd33ea7d 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-02-08 15:47:04 +01:00
Holger Vogt 6a0b8b16ce 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-02-08 13:53:28 +01:00
Holger Vogt 40587ead4e Add global has pointer for degradation data storage per instance,
inizialse it.
2026-02-08 13:53:27 +01:00
Holger Vogt 4048610872 Don't read .agemodel, if newcompat.de is not set. 2026-02-08 13:53:27 +01:00
Holger Vogt 2007ad30d7 Replace '[' and ']' by '@'
Required by code model parsing, when [ or ] are part of instance
or node name.
2026-02-08 13:53:27 +01:00
Holger Vogt 8755dd4493 Add non-nqs PSP model 2026-02-08 13:53:27 +01:00
Holger Vogt 1d05c40de1 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-02-08 13:53:27 +01:00
Holger Vogt 13029173cc Improve error message 2026-02-08 13:53:26 +01:00
Holger Vogt d832290b8c artificially set A_d_idsat from 0 to 0.001 2026-02-08 13:53:26 +01:00
Holger Vogt 3a80a05aac typo
10 years degradation integration
2026-02-08 13:53:26 +01:00
Holger Vogt f6fd763c8c example netlist: 3 inverters in series 2026-02-08 13:53:26 +01:00
Holger Vogt a20da11d4c New title 2026-02-08 13:53:26 +01:00
Holger Vogt d55224dfe1 more descriptions into README 2026-02-08 13:53:26 +01:00
Holger Vogt e06d598434 Add a README for the degradation monitor 2026-02-08 13:53:26 +01:00
Holger Vogt 589b746515 Adding degradation monitors 2026-02-08 13:53:25 +01:00
Holger Vogt fe5ec347d6 Enable using hashtables also for compiling with gcc. 2026-02-08 13:53:25 +01:00
Holger Vogt 13dc028ce0 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-02-08 13:53:25 +01:00
Holger Vogt f73d7eed22 Read the hash table with the aging model parameters.
Store the data in the static loc parameters used
during function evaluation.
2026-02-08 13:53:25 +01:00
Holger Vogt 77a544ab67 Add a hash table paramhash to store the .agemodel model parameters. 2026-02-08 13:53:25 +01:00
Holger Vogt 2ec1636f12 Enable compiling hash.c as part of a code model shared library. 2026-02-08 13:53:25 +01:00
Holger Vogt 49e2a7d094 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-02-08 13:53:24 +01:00
Holger Vogt dc94407b83 Remove now unused parameters 2026-02-08 13:53:24 +01:00
Holger Vogt a712304a5d Specify static locdata containing constfac, sintegral and prevtime
instead of individual data.
2026-02-08 13:53:24 +01:00
Holger Vogt 7335756c68 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-02-08 13:53:24 +01:00
Holger Vogt 3a24708350 simple netlist example with agemodel data. 2026-02-08 13:53:24 +01:00
Holger Vogt 6c10887c64 Read the agemodel data, put them into global array agemods 2026-02-08 13:53:24 +01:00
Holger Vogt 9f6c00a536 Always call the function.
Inside it will be decided, depending on not having ngbehavior=de,
to disregard the agemodels.
2026-02-08 13:53:23 +01:00
Holger Vogt b510a21e2f Add function readdegparams in file inpdeg.c 2026-02-08 13:53:23 +01:00
Holger Vogt 2c07f89930 remove debug messages 2026-02-08 13:53:23 +01:00
Holger Vogt 3fd7a69eb0 make parameter l lower case, add parameter 'file' 2026-02-08 13:53:23 +01:00
Holger Vogt b7c985128f Add a compatibility mode 'de' for degradation simulation. 2026-02-08 13:53:23 +01:00
Holger Vogt 7b8ec52fdd Add INSTNAME and INSTMODNAME to code model macros 2026-02-08 13:53:22 +01:00
Holger Vogt 19212ee436 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-02-08 13:53:22 +01:00
Holger Vogt d3a7ce9f5c Use real parameters as default (NMOS 0.13 saturation) 2026-02-08 13:53:22 +01:00
Holger Vogt 9f342dc51d Add degradation monitor code model to extradev 2026-02-08 13:53:22 +01:00
Holger Vogt 61f6e813d8 Add two macros TSTEP and TSTOP to XSPICE 2026-02-08 13:53:22 +01:00
Holger Vogt 9ac5bda207 After an ac simulation, a tran measurement causes a segfault.
A check prevents this issue.
2026-02-03 22:38:56 +01:00
Holger Vogt 417c52ee5c Remove compiler warnings 2026-02-03 15:05:24 +01:00
Holger Vogt ab87bd57a4 Re-enable compiling with clang
Patch thanks to Gon Solo, issue 826
2026-02-03 14:25:18 +01:00
Holger Vogt afb17cb6c7 New analogue and digital device models from TI contain
the token GND in their subcircuit. Up to now ngspice has
declared GND as global and replaced it by 0.

Now, if PS is selected as compat mode, GND is not
declared as global, and is not replaced inside of a subcircuit.
2026-02-03 14:25:09 +01:00
Holger Vogt ab03cc94c0 Using mtimeavg 2026-02-03 14:23:41 +01:00
Holger Vogt b25ff08307 Moving window filtering with function 'newvec = mtimeavg(vec)'
Window of fixed time width given by 'set mtimeavgwindow=400u'
Length and scale of newvec resembles the original vetor vec.
Large vec and large mtimeavgwindow take their time.
OpenMP is used if available.
2026-02-03 14:23:32 +01:00
Holger Vogt 84ce2b4084 Exclude B voltage source, whan '.probe alli' is used.
It already gets a bxx#branch for current measurement.
2026-02-03 14:23:22 +01:00
dwarning 1601571432 Correct vgs assignment - bug found by K. OHara 2026-02-03 14:23:14 +01:00