From 16fd4287295b0b4adaea58760f6253becc06ed7b Mon Sep 17 00:00:00 2001 From: Holger Vogt Date: Wed, 21 May 2025 14:59:33 +0200 Subject: [PATCH] A short description of the code model --- examples/xspice/see/seegenator.txt | 102 +++++++++++++++++++++++++++++ 1 file changed, 102 insertions(+) create mode 100644 examples/xspice/see/seegenator.txt diff --git a/examples/xspice/see/seegenator.txt b/examples/xspice/see/seegenator.txt new file mode 100644 index 000000000..3814d185e --- /dev/null +++ b/examples/xspice/see/seegenator.txt @@ -0,0 +1,102 @@ +SEE (single event effects) generator + + + +NAME_TABLE: + +C_Function_Name: cm_seegen +Spice_Model_Name: seegen +Description: "single event effect generator" + + +PORT_TABLE: + +Port_Name: ctrl out +Description: "control input" "output" +Direction: in out +Default_Type: v i +Allowed_Types: [v,vd,i,id] [i,id] +Vector: no yes +Vector_Bounds: - [1 -] +Null_Allowed: yes no + + +PARAMETER_TABLE: + +Parameter_Name: talpha tbeta +Description: "alpha" "beta" +Data_Type: real real +Default_Value: 500e-12 20e-12 +Limits: - - +Vector: no no +Vector_Bounds: - - +Null_Allowed: yes yes + + +PARAMETER_TABLE: + +Parameter_Name: tdelay inull +Description: "pulse delay" "max current" +Data_Type: real real +Default_Value: 0 200e-6 +Limits: - - +Vector: no no +Vector_Bounds: - - +Null_Allowed: yes yes + +PARAMETER_TABLE: + +Parameter_Name: tperiod ctrlthres +Description: "pulse repetition" "control voltage threshold" +Data_Type: real real +Default_Value: 0 0.5 +Limits: - - +Vector: no no +Vector_Bounds: - - +Null_Allowed: yes yes + +STATIC_VAR_TABLE: + +Static_Var_Name: last_t_value +Data_Type: pointer +Vector: no +Description: "next pulse start time" + +STATIC_VAR_TABLE: + +Static_Var_Name: pulse_number +Data_Type: pointer +Vector: no +Description: "number of pulse" + +STATIC_VAR_TABLE: + +Static_Var_Name: last_ctrl +Data_Type: pointer +Vector: no +Description: "last control value" + +Description +This code model generates "double exponentially" formed current pulses according to +i(t) = inull * (exp(-(t-tdelay)/talpha) - (exp(-(t-tdelay)/tbeta) for t > tdelay +i(t) = 0 for t < tdelay +Minimum is one pulse output (a node pair, or a single node with the other grounded). +Several output node pairs may be defined per code model instance. Parameter tperiod +may then be used to create pulses in sequence. The first pulse is issued in the first +node pair of the node list in the vector [], the second (after time tperiod has elapsed), is injected by the +second node (pair) of the list and so on. 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 +at ctrl, when crossing the threshold given by ctrlthres, will initiate the sequence (including +tdelay and tperiod). + +This model will work in transient analysis. + +Example ngspice usage (with control) + +aseegen1 ctrl [%id(n1 m1) %id(n2 m2) %id(n1 m1) %id(n2 m2)] seemod1 +.model seemod1 seegen (tdelay = 8n tperiod=25n) + +Example ngspice usage (without control, parameters as offered by default) + +aseegen2 NULL [%id(n1 m1) %id(n5 n6) %id(n6 n7) %i(isingle) ] seemod2 +.model seemod2 seegen (tdelay = 0 tperiod=0 ctrlthres=0.5 inull=200u talpha=500p tbeta=20p)