Browse Source
Add parsing and translation of the FREQ form of E-source devices,
Add parsing and translation of the FREQ form of E-source devices,
integrated with the existing parsing of AND/NAND/OR/NOR forms (inpcom.c). For the implementation, add a new analog XSPICE code model, xfer. Add an example to examples/sp.pre-master-46
committed by
Holger Vogt
6 changed files with 834 additions and 134 deletions
-
185examples/sp/filter.lib
-
91examples/sp/filter.sp
-
470src/frontend/inpcom.c
-
1src/xspice/icm/analog/modpath.lst
-
130src/xspice/icm/analog/xfer/cfunc.mod
-
91src/xspice/icm/analog/xfer/ifspec.ifs
@ -0,0 +1,185 @@ |
|||
.SUBCKT filter 1 2 3 |
|||
*2-port S-parameter file |
|||
*Title: * simple test for xfer code model: comparison |
|||
*Generated by ngspice at Tue May 23 06:49:31 2023 |
|||
* Hz S RI R |
|||
* Z1=50.000000 Z2=50.000000 |
|||
|
|||
R1N 1 10 -5.000000e+01 |
|||
R1P 10 11 1.000000e+02 |
|||
R2N 2 20 -5.000000e+01 |
|||
R2P 20 21 1.000000e+02 |
|||
|
|||
*S11 FREQ DB PHASE |
|||
E11 11 12 FREQ {V(10,3)}= DB |
|||
+( 1.000000e+07Hz, 3.654967e-07, -7.619541e+01) |
|||
+( 1.487179e+07Hz, 1.964030e-07, -1.157703e+02) |
|||
+( 1.974359e+07Hz, -1.084219e-07, -1.569277e+02) |
|||
+( 2.461538e+07Hz, -5.321598e-06, -1.985756e+02) |
|||
+( 2.948718e+07Hz, -1.265047e-05, -2.395114e+02) |
|||
+( 3.435897e+07Hz, -2.727603e-05, -2.792878e+02) |
|||
+( 3.923077e+07Hz, -6.620604e-05, -3.184596e+02) |
|||
+( 4.410256e+07Hz, -1.624082e-04, -3.582070e+02) |
|||
+( 4.897436e+07Hz, -3.755273e-04, -3.996839e+02) |
|||
+( 5.384615e+07Hz, -7.725656e-04, -4.432805e+02) |
|||
+( 5.871795e+07Hz, -1.320643e-03, -4.881884e+02) |
|||
+( 6.358974e+07Hz, -1.599290e-03, -5.330311e+02) |
|||
+( 6.846154e+07Hz, -4.631092e-04, -5.776220e+02) |
|||
+( 7.333333e+07Hz, -1.388239e-02, -6.262936e+02) |
|||
+( 7.820513e+07Hz, -1.245578e+01, -8.015034e+02) |
|||
+( 8.307692e+07Hz, -1.142468e+00, -6.888087e+02) |
|||
+( 8.794872e+07Hz, -1.292324e+00, -7.542062e+02) |
|||
+( 9.282051e+07Hz, -2.163078e+00, -8.283885e+02) |
|||
+( 9.769231e+07Hz, -3.764829e+00, -9.213357e+02) |
|||
+( 1.025641e+08Hz, -4.165673e+00, -1.041098e+03) |
|||
+( 1.074359e+08Hz, -2.143343e+00, -1.139856e+03) |
|||
+( 1.123077e+08Hz, -1.084156e+00, -1.201868e+03) |
|||
+( 1.171795e+08Hz, -7.962690e-01, -1.249480e+03) |
|||
+( 1.220513e+08Hz, -1.204024e+00, -1.318959e+03) |
|||
+( 1.269231e+08Hz, -4.148462e-01, -1.169292e+03) |
|||
+( 1.317949e+08Hz, -1.026085e-02, -1.240330e+03) |
|||
+( 1.366667e+08Hz, -1.360661e-04, -1.265793e+03) |
|||
+( 1.415385e+08Hz, -2.410965e-03, -1.281511e+03) |
|||
+( 1.464103e+08Hz, -3.787891e-03, -1.293132e+03) |
|||
+( 1.512821e+08Hz, -3.602264e-03, -1.302433e+03) |
|||
+( 1.561538e+08Hz, -2.547410e-03, -1.310211e+03) |
|||
+( 1.610256e+08Hz, -1.530232e-03, -1.316893e+03) |
|||
+( 1.658974e+08Hz, -8.667728e-04, -1.322741e+03) |
|||
+( 1.707692e+08Hz, -4.905888e-04, -1.327928e+03) |
|||
+( 1.756410e+08Hz, -2.840626e-04, -1.332578e+03) |
|||
+( 1.805128e+08Hz, -1.688713e-04, -1.336783e+03) |
|||
+( 1.853846e+08Hz, -1.041703e-04, -1.340612e+03) |
|||
+( 1.902564e+08Hz, -6.546576e-05, -1.344121e+03) |
|||
+( 1.951282e+08Hz, -4.228835e-05, -1.347353e+03) |
|||
+( 2.000000e+08Hz, -2.867354e-05, -1.350343e+03) |
|||
|
|||
*S12 FREQ DB PHASE |
|||
E12 12 3 FREQ {V(20,3)}= DB |
|||
+( 1.000000e+07Hz, -1.248758e+02, -1.373971e+02) |
|||
+( 1.487179e+07Hz, -9.831399e+01, -1.647281e+02) |
|||
+( 1.974359e+07Hz, -7.673566e+01, -2.026127e+02) |
|||
+( 2.461538e+07Hz, -5.898226e+01, -2.906518e+02) |
|||
+( 2.948718e+07Hz, -5.542440e+01, -3.666485e+02) |
|||
+( 3.435897e+07Hz, -5.204910e+01, -4.009490e+02) |
|||
+( 3.923077e+07Hz, -4.814977e+01, -4.271950e+02) |
|||
+( 4.410256e+07Hz, -4.426072e+01, -4.514100e+02) |
|||
+( 4.897436e+07Hz, -4.063346e+01, -4.755494e+02) |
|||
+( 5.384615e+07Hz, -3.749934e+01, -5.003303e+02) |
|||
+( 5.871795e+07Hz, -3.516924e+01, -5.256223e+02) |
|||
+( 6.358974e+07Hz, -3.433887e+01, -5.509590e+02) |
|||
+( 6.846154e+07Hz, -3.971774e+01, -5.765977e+02) |
|||
+( 7.333333e+07Hz, -2.496027e+01, -4.260244e+02) |
|||
+( 7.820513e+07Hz, -2.540060e-01, -5.317362e+02) |
|||
+( 8.307692e+07Hz, -6.358120e+00, -6.335796e+02) |
|||
+( 8.794872e+07Hz, -5.894279e+00, -6.719727e+02) |
|||
+( 9.282051e+07Hz, -4.063864e+00, -7.129969e+02) |
|||
+( 9.769231e+07Hz, -2.367660e+00, -7.603597e+02) |
|||
+( 1.025641e+08Hz, -2.098602e+00, -8.143919e+02) |
|||
+( 1.074359e+08Hz, -4.094614e+00, -8.636479e+02) |
|||
+( 1.123077e+08Hz, -6.557734e+00, -8.998592e+02) |
|||
+( 1.171795e+08Hz, -7.759301e+00, -9.295624e+02) |
|||
+( 1.220513e+08Hz, -6.159604e+00, -9.703161e+02) |
|||
+( 1.269231e+08Hz, -1.040475e+01, -1.077742e+03) |
|||
+( 1.317949e+08Hz, -2.627115e+01, -1.123641e+03) |
|||
+( 1.366667e+08Hz, -4.503397e+01, -9.675219e+02) |
|||
+( 1.415385e+08Hz, -3.255698e+01, -9.893598e+02) |
|||
+( 1.464103e+08Hz, -3.059532e+01, -1.012566e+03) |
|||
+( 1.512821e+08Hz, -3.081422e+01, -1.036661e+03) |
|||
+( 1.561538e+08Hz, -3.231825e+01, -1.058931e+03) |
|||
+( 1.610256e+08Hz, -3.453111e+01, -1.077318e+03) |
|||
+( 1.658974e+08Hz, -3.699828e+01, -1.091740e+03) |
|||
+( 1.707692e+08Hz, -3.947129e+01, -1.103061e+03) |
|||
+( 1.756410e+08Hz, -4.184769e+01, -1.112161e+03) |
|||
+( 1.805128e+08Hz, -4.409577e+01, -1.119694e+03) |
|||
+( 1.853846e+08Hz, -4.621280e+01, -1.126103e+03) |
|||
+( 1.902564e+08Hz, -4.820666e+01, -1.131686e+03) |
|||
+( 1.951282e+08Hz, -5.008836e+01, -1.136645e+03) |
|||
+( 2.000000e+08Hz, -5.186916e+01, -1.141123e+03) |
|||
|
|||
*S21 FREQ DB PHASE |
|||
E21 21 22 FREQ {V(10,3)}= DB |
|||
+( 1.000000e+07Hz, -1.248758e+02, -1.373971e+02) |
|||
+( 1.487179e+07Hz, -9.831399e+01, -1.647281e+02) |
|||
+( 1.974359e+07Hz, -7.673566e+01, -2.026127e+02) |
|||
+( 2.461538e+07Hz, -5.898226e+01, -2.906518e+02) |
|||
+( 2.948718e+07Hz, -5.542440e+01, -3.666485e+02) |
|||
+( 3.435897e+07Hz, -5.204910e+01, -4.009490e+02) |
|||
+( 3.923077e+07Hz, -4.814977e+01, -4.271950e+02) |
|||
+( 4.410256e+07Hz, -4.426072e+01, -4.514100e+02) |
|||
+( 4.897436e+07Hz, -4.063346e+01, -4.755494e+02) |
|||
+( 5.384615e+07Hz, -3.749934e+01, -5.003303e+02) |
|||
+( 5.871795e+07Hz, -3.516924e+01, -5.256223e+02) |
|||
+( 6.358974e+07Hz, -3.433887e+01, -5.509590e+02) |
|||
+( 6.846154e+07Hz, -3.971774e+01, -5.765977e+02) |
|||
+( 7.333333e+07Hz, -2.496027e+01, -4.260244e+02) |
|||
+( 7.820513e+07Hz, -2.540060e-01, -5.317362e+02) |
|||
+( 8.307692e+07Hz, -6.358120e+00, -6.335796e+02) |
|||
+( 8.794872e+07Hz, -5.894279e+00, -6.719727e+02) |
|||
+( 9.282051e+07Hz, -4.063864e+00, -7.129969e+02) |
|||
+( 9.769231e+07Hz, -2.367660e+00, -7.603597e+02) |
|||
+( 1.025641e+08Hz, -2.098602e+00, -8.143919e+02) |
|||
+( 1.074359e+08Hz, -4.094614e+00, -8.636479e+02) |
|||
+( 1.123077e+08Hz, -6.557734e+00, -8.998592e+02) |
|||
+( 1.171795e+08Hz, -7.759301e+00, -9.295624e+02) |
|||
+( 1.220513e+08Hz, -6.159604e+00, -9.703161e+02) |
|||
+( 1.269231e+08Hz, -1.040475e+01, -1.077742e+03) |
|||
+( 1.317949e+08Hz, -2.627115e+01, -1.123641e+03) |
|||
+( 1.366667e+08Hz, -4.503397e+01, -9.675219e+02) |
|||
+( 1.415385e+08Hz, -3.255698e+01, -9.893598e+02) |
|||
+( 1.464103e+08Hz, -3.059532e+01, -1.012566e+03) |
|||
+( 1.512821e+08Hz, -3.081422e+01, -1.036661e+03) |
|||
+( 1.561538e+08Hz, -3.231825e+01, -1.058931e+03) |
|||
+( 1.610256e+08Hz, -3.453111e+01, -1.077318e+03) |
|||
+( 1.658974e+08Hz, -3.699828e+01, -1.091740e+03) |
|||
+( 1.707692e+08Hz, -3.947129e+01, -1.103061e+03) |
|||
+( 1.756410e+08Hz, -4.184769e+01, -1.112161e+03) |
|||
+( 1.805128e+08Hz, -4.409577e+01, -1.119694e+03) |
|||
+( 1.853846e+08Hz, -4.621280e+01, -1.126103e+03) |
|||
+( 1.902564e+08Hz, -4.820666e+01, -1.131686e+03) |
|||
+( 1.951282e+08Hz, -5.008836e+01, -1.136645e+03) |
|||
+( 2.000000e+08Hz, -5.186916e+01, -1.141123e+03) |
|||
|
|||
*S22 FREQ DB PHASE |
|||
E22 22 3 FREQ {V(20,3)}= DB |
|||
+( 1.000000e+07Hz, 1.633257e-07, -1.859873e+01) |
|||
+( 1.487179e+07Hz, -1.597472e-07, -3.368599e+01) |
|||
+( 1.974359e+07Hz, -9.840549e-08, -6.829764e+01) |
|||
+( 2.461538e+07Hz, -5.748843e-06, -2.027281e+02) |
|||
+( 2.948718e+07Hz, -1.209271e-05, -3.137855e+02) |
|||
+( 3.435897e+07Hz, -2.686288e-05, -3.426102e+02) |
|||
+( 3.923077e+07Hz, -6.619051e-05, -3.559304e+02) |
|||
+( 4.410256e+07Hz, -1.626503e-04, -3.646130e+02) |
|||
+( 4.897436e+07Hz, -3.750315e-04, -3.714149e+02) |
|||
+( 5.384615e+07Hz, -7.720713e-04, -3.773802e+02) |
|||
+( 5.871795e+07Hz, -1.321131e-03, -3.830562e+02) |
|||
+( 6.358974e+07Hz, -1.599127e-03, -3.888868e+02) |
|||
+( 6.846154e+07Hz, -4.639695e-04, -3.955734e+02) |
|||
+( 7.333333e+07Hz, -1.388161e-02, -4.057551e+02) |
|||
+( 7.820513e+07Hz, -1.245578e+01, -4.419690e+02) |
|||
+( 8.307692e+07Hz, -1.142468e+00, -3.983505e+02) |
|||
+( 8.794872e+07Hz, -1.292324e+00, -4.097393e+02) |
|||
+( 9.282051e+07Hz, -2.163078e+00, -4.176053e+02) |
|||
+( 9.769231e+07Hz, -3.764828e+00, -4.193838e+02) |
|||
+( 1.025641e+08Hz, -4.165672e+00, -4.076855e+02) |
|||
+( 1.074359e+08Hz, -2.143343e+00, -4.074397e+02) |
|||
+( 1.123077e+08Hz, -1.084156e+00, -4.178506e+02) |
|||
+( 1.171795e+08Hz, -7.962687e-01, -4.296447e+02) |
|||
+( 1.220513e+08Hz, -1.204024e+00, -4.416736e+02) |
|||
+( 1.269231e+08Hz, -4.148459e-01, -4.461929e+02) |
|||
+( 1.317949e+08Hz, -1.026073e-02, -4.669521e+02) |
|||
+( 1.366667e+08Hz, -1.361528e-04, -4.892508e+02) |
|||
+( 1.415385e+08Hz, -2.411138e-03, -5.172082e+02) |
|||
+( 1.464103e+08Hz, -3.788042e-03, -5.519999e+02) |
|||
+( 1.512821e+08Hz, -3.601989e-03, -5.908887e+02) |
|||
+( 1.561538e+08Hz, -2.547212e-03, -6.276516e+02) |
|||
+( 1.610256e+08Hz, -1.529976e-03, -6.577430e+02) |
|||
+( 1.658974e+08Hz, -8.674572e-04, -6.807399e+02) |
|||
+( 1.707692e+08Hz, -4.901623e-04, -6.981937e+02) |
|||
+( 1.756410e+08Hz, -2.836349e-04, -7.117446e+02) |
|||
+( 1.805128e+08Hz, -1.694495e-04, -7.226059e+02) |
|||
+( 1.853846e+08Hz, -1.034247e-04, -7.315943e+02) |
|||
+( 1.902564e+08Hz, -6.587183e-05, -7.392507e+02) |
|||
+( 1.951282e+08Hz, -4.251059e-05, -7.459375e+02) |
|||
+( 2.000000e+08Hz, -2.798303e-05, -7.519027e+02) |
|||
|
|||
.ENDS |
|||
@ -0,0 +1,91 @@ |
|||
* Simple test for xfer code model: comparison |
|||
* |
|||
* This circuit compares the results of an AC analysis of a filter (node out) |
|||
* with those from a behavioural model controlled by measured S-parameters |
|||
* of that circuit (node xout). The AC analysis has more data points than |
|||
* that used to measure the S-parameters, to prevent the results from matching |
|||
* exactly. |
|||
|
|||
* The use of S-parameters to create a behavioural simulation of a component |
|||
* was discussed here: |
|||
* https://sourceforge.net/p/ngspice/discussion/120973/thread/51228e0b01/ |
|||
|
|||
* Circuit from: |
|||
* Novarianti, Dini. (2019). |
|||
* Design and Implementation of Chebyshev Band Pass Filter with |
|||
* M-Derived Section in Frequency Band 88 - 108 MHz. |
|||
* Jurnal Jartel: Jurnal Jaringan Telekomunikasi. 8. 7-11. |
|||
* 10.33795/jartel.v8i1.147. |
|||
* |
|||
* https://www.researchgate.net/publication/352822864_Design_and_Implementation_of_Chebyshev_Band_Pass_Filter_with_M-Derived_Section_in_Frequency_Band_88_-_108_MHz |
|||
|
|||
* Set this parameter to 1 to generate a Touchstone file that can be used |
|||
* to generate the behavioural part of the circuit, filter.lib |
|||
|
|||
.param do_sp=0 |
|||
.csparam do_sp=do_sp |
|||
|
|||
.if (do_sp) |
|||
|
|||
.csparam Rbase=50 ; This is required by "wrs2p", below. |
|||
vgen 1 0 dc 0 ac 1 portnum 1 |
|||
|
|||
.else |
|||
|
|||
vgen in 0 dc 0 ac 1 |
|||
rs in 1 50 |
|||
|
|||
.endif |
|||
|
|||
l1 1 2 0.058u |
|||
c2 2 0 40.84p |
|||
l3 2 3 0.128u |
|||
c4 3 0 47.91p |
|||
l5 3 4 0.128u |
|||
c6 4 0 40.48p |
|||
l7 4 5 0.058u |
|||
|
|||
la 5 6 0.044u |
|||
lb 6 a 0.078u |
|||
cb a 0 17.61p |
|||
lc 6 b 0.151u |
|||
cc b 0 34.12p |
|||
c7 6 7 26.035p |
|||
|
|||
l8 7 0 0.0653u |
|||
c8 7 8 20.8p |
|||
l9 8 0 0.055u |
|||
c9 8 9 20.8p |
|||
l10 9 0 0.653u |
|||
|
|||
c10 9 out 45.64p |
|||
|
|||
.if (do_sp) |
|||
|
|||
vl out 0 dc 0 ac 0 portnum 2 |
|||
|
|||
.else |
|||
|
|||
rl out 0 50 |
|||
|
|||
* Behavioural circuit, for comparison. |
|||
|
|||
.inc filter.lib |
|||
R1 in port1 50 |
|||
xsp port1 xout 0 filter |
|||
R2 xout 0 50 |
|||
|
|||
.endif |
|||
|
|||
.control |
|||
if $&do_sp |
|||
sp lin 40 10meg 200meg |
|||
wrs2p filter.s2p |
|||
plot S_1_1 S_2_2 polar |
|||
else |
|||
ac lin 400 10meg 200meg |
|||
plot db(mag(out)) 5*unwrap(ph(out)) db(mag(xout)) 5*unwrap(ph(xout)) |
|||
end |
|||
|
|||
.endc |
|||
.end |
|||
@ -0,0 +1,130 @@ |
|||
/* Transfer function block for AC simulation, based on s_xfer code model. */ |
|||
|
|||
#include <stdlib.h> |
|||
|
|||
#define PI 3.141592653589793238462643383279502884197 |
|||
|
|||
/* How the table information is stored internally. */ |
|||
|
|||
struct data_pt { |
|||
double f; /* Frequency, radians/sec. */ |
|||
Mif_Complex_t s; /* The S-parameter. */ |
|||
}; |
|||
|
|||
static void cleanup(ARGS, Mif_Callback_Reason_t reason) |
|||
{ |
|||
struct data_pt *table; |
|||
|
|||
switch (reason) { |
|||
case MIF_CB_DESTROY: |
|||
table = (struct data_pt *)STATIC_VAR(table); |
|||
if (table) { |
|||
free(table); |
|||
STATIC_VAR(table) = NULL; |
|||
} |
|||
break; |
|||
} |
|||
} |
|||
|
|||
void cm_xfer(ARGS) /* structure holding parms, inputs, outputs, etc. */ |
|||
{ |
|||
struct data_pt *table; |
|||
Mif_Complex_t ac_gain; |
|||
double factor; |
|||
int span, size, i; |
|||
|
|||
span = PARAM(span); |
|||
if (INIT) { |
|||
Mif_Boolean_t ri, db, rad; |
|||
int offset, bad = 0, j; |
|||
|
|||
/* Validate table. */ |
|||
|
|||
offset = PARAM(offset); |
|||
size = PARAM_SIZE(table); |
|||
bad = size % span; |
|||
if (!bad) { |
|||
for (i = 0; i < size - span; i += span) { |
|||
if (PARAM(table[i]) < 0 || |
|||
PARAM(table[i + span]) < PARAM(table[i])) { |
|||
bad = 1; |
|||
break; |
|||
} |
|||
} |
|||
} |
|||
if (bad) { |
|||
cm_message_send("Warning: badly formed table."); |
|||
return; |
|||
} |
|||
|
|||
/* Allocate the internal table. */ |
|||
|
|||
size /= span; |
|||
table = (struct data_pt *)calloc(size, sizeof(struct data_pt)); |
|||
STATIC_VAR(table) = table; |
|||
CALLBACK = cleanup; |
|||
|
|||
/* Fill it. */ |
|||
|
|||
ri = PARAM(r_i); |
|||
db = PARAM(db); |
|||
rad = PARAM(rad); |
|||
for (i = 0, j = 0; i < size; i++, j += span) { |
|||
table[i].f = PARAM(table[j]) * 2.0 * PI; |
|||
if (ri) { |
|||
table[i].s.real = PARAM(table[j + offset]); |
|||
table[i].s.imag = PARAM(table[j + offset + 1]); |
|||
} else { |
|||
double phase, mag; |
|||
|
|||
mag = PARAM(table[j + offset]); |
|||
if (db) |
|||
mag = pow(10, mag / 20); |
|||
phase = PARAM(table[j + offset + 1]); |
|||
if (!rad) |
|||
phase *= 2 * PI / 360; |
|||
table[i].s.real = mag * cos(phase); |
|||
table[i].s.imag = mag * sin(phase); |
|||
} |
|||
} |
|||
} |
|||
|
|||
table = (struct data_pt *)STATIC_VAR(table); |
|||
if (!table) |
|||
return; |
|||
if (ANALYSIS == MIF_AC) { |
|||
double rv; |
|||
|
|||
size = PARAM_SIZE(table) / span; |
|||
rv = RAD_FREQ; |
|||
if (rv <= table[0].f) { |
|||
ac_gain = table[0].s; |
|||
} else if (rv >= table[size - 1].f) { |
|||
ac_gain = table[size - 1].s; |
|||
} else { |
|||
for (i = 0; i < size; i++) { |
|||
if (table[i].f > rv) |
|||
break; |
|||
} |
|||
|
|||
/* Linear interpolation. */ |
|||
|
|||
factor = (rv - table[i - 1].f) / (table[i].f - table[i - 1].f); |
|||
ac_gain.real = table[i - 1].s.real + |
|||
factor * (table[i].s.real - table[i - 1].s.real); |
|||
ac_gain.imag = table[i - 1].s.imag + |
|||
factor * (table[i].s.imag - table[i - 1].s.imag); |
|||
} |
|||
AC_GAIN(out, in) = ac_gain; |
|||
} else { /* DC, transient ... */ |
|||
if (ANALYSIS == MIF_TRAN) { |
|||
if (!STATIC_VAR(warned)) { |
|||
STATIC_VAR(warned) = 1; |
|||
cm_message_send("The xfer code model does not support " |
|||
"transient analysis."); |
|||
} |
|||
} |
|||
OUTPUT(out) = table[0].s.real * INPUT(in); |
|||
} |
|||
} |
|||
|
|||
@ -0,0 +1,91 @@ |
|||
/* Interface specification for PWL transfer function code model. */ |
|||
|
|||
NAME_TABLE: |
|||
|
|||
Spice_Model_Name: xfer |
|||
C_Function_Name: cm_xfer |
|||
Description: "AC transfer function block" |
|||
|
|||
|
|||
PORT_TABLE: |
|||
|
|||
Port_Name: in out |
|||
Description: "input" "output" |
|||
Direction: in out |
|||
Default_Type: v v |
|||
Allowed_Types: [v,vd,i,id] [v,vd,i,id] |
|||
Vector: no no |
|||
Vector_Bounds: - - |
|||
Null_Allowed: no no |
|||
|
|||
PARAMETER_TABLE: |
|||
|
|||
Parameter_Name: table |
|||
Description: "PWL table: frequency/magnitude/phase" |
|||
Data_Type: real |
|||
Default_Value: - |
|||
Limits: - |
|||
Vector: yes |
|||
Vector_Bounds: [3 -] |
|||
Null_Allowed: no |
|||
|
|||
PARAMETER_TABLE: |
|||
|
|||
Parameter_Name: r_i |
|||
Description: "table is in real/imaginary format" |
|||
Data_Type: boolean |
|||
Default_Value: false |
|||
Limits: - |
|||
Vector: no |
|||
Vector_Bounds: - |
|||
Null_Allowed: yes |
|||
|
|||
PARAMETER_TABLE: |
|||
|
|||
Parameter_Name: db |
|||
Description: "table is in magnitude(dB)/phase format" |
|||
Data_Type: boolean |
|||
Default_Value: true |
|||
Limits: - |
|||
Vector: no |
|||
Vector_Bounds: - |
|||
Null_Allowed: yes |
|||
|
|||
PARAMETER_TABLE: |
|||
|
|||
Parameter_Name: rad |
|||
Description: "phase in radians, not degrees" |
|||
Data_Type: boolean |
|||
Default_Value: false |
|||
Limits: - |
|||
Vector: no |
|||
Vector_Bounds: - |
|||
Null_Allowed: yes |
|||
|
|||
PARAMETER_TABLE: |
|||
|
|||
Parameter_Name: span offset |
|||
Description: "Length of table rows" "Offset within row" |
|||
Data_Type: int int |
|||
Default_Value: 3 1 |
|||
Limits: [ 3 - ] [ 1 - ] |
|||
Vector: no no |
|||
Vector_Bounds: - - |
|||
Null_Allowed: yes yes |
|||
|
|||
/* This is used internally to store the table in compact complex form. */ |
|||
|
|||
STATIC_VAR_TABLE: |
|||
|
|||
Static_Var_Name: table |
|||
Description: "Internal copy of data" |
|||
Data_Type: pointer |
|||
|
|||
/* Only warn once about use in transient analysis. */ |
|||
|
|||
STATIC_VAR_TABLE: |
|||
|
|||
Static_Var_Name: warned |
|||
Description: "Warning indicator" |
|||
Data_Type: int |
|||
|
|||
Write
Preview
Loading…
Cancel
Save
Reference in new issue