Add ouput 'mon'

This commit is contained in:
Holger Vogt 2025-06-08 11:20:24 +02:00
parent ea5979d391
commit a4510f488f
1 changed files with 33 additions and 14 deletions

View File

@ -14,14 +14,18 @@ Set up the SEEgenerator by adding for example
.param d = 1 .param d = 1
* LET (linear energy transfer) in MeV*cm²/mg * LET (linear energy transfer) in MeV*cm²/mg
.param let = 12 .param let = 12
aseegen1 NULL [%id(xcell.n1 m1) %id(xcell.n2 m2) %id(xcell.n1 m1) %id(xcell.n2 m2)] seemod1 aseegen1 NULL mon [%id(xcell.n1 m1) %id(xcell.n2 m2) %id(xcell.n1 m1) %id(xcell.n2 m2)] seemod1
.model seemod1 seegen (tdelay = 11n tperiod=25n let='let' cdepth='d') .model seemod1 seegen (tdelay = 11n tperiod=25n let='let' cdepth='d')
to the netlist. to the netlist.
Each sensitive node from the (flattend) netlist may be added to assegen1, together with its Each sensitive node from the (flattend) netlist may be added to the output vector of assegen1
reference node, for example GND for NMOS, nwell potential for PMOS. This procedure is (in brackets [...]), together with its reference node, for example GND for NMOS, nwell potential
currently to be done manually, an automated setup is in preparation. for PMOS. This procedure is currently to be done manually, a semi-automated setup using
a GUI is in preparation.
Instead of NULL, one may give a control signal to aseegen1, to start the pulse sequence.
'mon' is a monitoring output, showing each pulse as a voltage equivalent to the current.
After a transient simulation, plotting the data output versus a non-radiated device After a transient simulation, plotting the data output versus a non-radiated device
may reveal the SEE influence. may reveal the SEE influence.
@ -45,14 +49,26 @@ Description: "single event effect generator"
PORT_TABLE: PORT_TABLE:
Port_Name: ctrl out Port_Name: ctrl mon
Description: "control input" "output" Description: "control input" "monitor"
Direction: in out Direction: in out
Default_Type: v i Default_Type: v v
Allowed_Types: [v,vd,i,id] [i,id] Allowed_Types: [v,vd,i,id] [v]
Vector: no yes Vector: no no
Vector_Bounds: - [1 -] Vector_Bounds: - -
Null_Allowed: yes no Null_Allowed: yes yes
PORT_TABLE:
Port_Name: out
Description: "output"
Direction: out
Default_Type: i
Allowed_Types: [i,id]
Vector: yes
Vector_Bounds: [1 -]
Null_Allowed: no
PARAMETER_TABLE: PARAMETER_TABLE:
@ -158,16 +174,19 @@ again the output starts pulsing at port (node pair) number 1.
The control input ctrl (voltage or current) may be used The control input ctrl (voltage or current) may be used
to start or repeat the whole sequence, depending on the circuit status. A rising voltage to start or repeat the whole sequence, depending on the circuit status. A rising voltage
at ctrl, when crossing the threshold given by ctrlthres, will initiate the sequence (including at ctrl, when crossing the threshold given by ctrlthres, will initiate the sequence (including
tdelay and tperiod). tdelay and tperiod). If set to NULL, the pulse (sequence) will start immediately after tdelay.
'mon' is a monitoring output, showing each pulse as a voltage equivalent to the current. It
may be used just for plotting, or for re-triggering an action.
This model will work in transient analysis. This model will work in transient analysis.
Example ngspice usage (with control) Example ngspice usage (with control)
aseegen1 ctrl [%id(n1 m1) %id(n2 m2) %id(n1 m1) %id(n2 m2)] seemod1 aseegen1 ctrl mon [%id(n1 m1) %id(n2 m2) %id(n1 m1) %id(n2 m2)] seemod1
.model seemod1 seegen (tdelay = 8n tperiod=25n) .model seemod1 seegen (tdelay = 8n tperiod=25n)
Example ngspice usage (without control, ctrl replaced by NULL, parameters as offered by default) Example ngspice usage (without control, ctrl replaced by NULL, parameters as offered by default)
aseegen2 NULL [%id(n1 m1) %id(n5 n6) %id(n6 n7) %i(isingle) ] seemod2 aseegen2 NULL mon [%id(n1 m1) %id(n5 n6) %id(n6 n7) %i(isingle) ] seemod2
.model seemod2 seegen (tdelay = 0 tperiod=0 ctrlthres=0.5 inull=0 tfall=500p trise=20p perlim=FALSE) .model seemod2 seegen (tdelay = 0 tperiod=0 ctrlthres=0.5 inull=0 tfall=500p trise=20p perlim=FALSE)