|
|
|
@ -33,12 +33,11 @@ static void if_set_binned_model(CKTcircuit *, char *, char *, struct dvec *); |
|
|
|
|
|
|
|
|
|
|
|
/* |
|
|
|
* devhelp: lists available devices and information on parameters |
|
|
|
* devhelp : shows all available devices |
|
|
|
* devhelp devname : shows all parameters of that model/instance |
|
|
|
* devhelp devname parname : shows parameter meaning |
|
|
|
* Options: -csv (comma separated value for generating docs) |
|
|
|
* |
|
|
|
* devhelp: lists available devices and information on parameters |
|
|
|
* devhelp : shows all available devices |
|
|
|
* devhelp devname : shows all parameters of that model/instance |
|
|
|
* devhelp devname parname : shows parameter meaning |
|
|
|
* Options: -csv (comma separated value for generating docs) |
|
|
|
*/ |
|
|
|
|
|
|
|
void com_devhelp(wordlist *wl) |
|
|
|
@ -220,13 +219,12 @@ printdesc(IFparm p, bool csv) |
|
|
|
|
|
|
|
|
|
|
|
/* |
|
|
|
* show: list device operating point info |
|
|
|
* show |
|
|
|
* show devs : params |
|
|
|
* show devs : params ; devs : params |
|
|
|
* show dev dev dev : param param param , dev dev : param param |
|
|
|
* show t : param param param, t : param param |
|
|
|
* |
|
|
|
* show: list device operating point info |
|
|
|
* show |
|
|
|
* show devs : params |
|
|
|
* show devs : params ; devs : params |
|
|
|
* show dev dev dev : param param param , dev dev : param param |
|
|
|
* show t : param param param, t : param param |
|
|
|
*/ |
|
|
|
|
|
|
|
static int count; |
|
|
|
@ -957,7 +955,8 @@ printvals_old(dgen *dg, IFparm *p, int i) |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
/* (old "show" command) |
|
|
|
/* |
|
|
|
* (old "show" command) |
|
|
|
* Display various device parameters. The syntax of this command is |
|
|
|
* show devicelist : parmlist |
|
|
|
* where devicelist can be "all", the name of a device, a string like r*, |
|
|
|
@ -1035,10 +1034,11 @@ old_show(wordlist *wl) |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
/* Alter a device parameter. The new syntax here is |
|
|
|
* alter @device[parameter] = expr |
|
|
|
* alter device = expr |
|
|
|
* alter device parameter = expr |
|
|
|
/* |
|
|
|
* Alter a device parameter. The new syntax here is |
|
|
|
* alter @device[parameter] = expr |
|
|
|
* alter device = expr |
|
|
|
* alter device parameter = expr |
|
|
|
* expr must be real (complex isn't handled right now, integer is fine though, |
|
|
|
* but no strings ... for booleans, use 0/1). |
|
|
|
*/ |
|
|
|
@ -1121,7 +1121,6 @@ com_alter_common(wordlist *wl, int do_model) |
|
|
|
struct dvec *dv; |
|
|
|
struct pnode *names; |
|
|
|
|
|
|
|
/* DIE 2009_02_06 */ |
|
|
|
int i; |
|
|
|
|
|
|
|
if (!ft_curckt) { |
|
|
|
@ -1130,30 +1129,15 @@ com_alter_common(wordlist *wl, int do_model) |
|
|
|
} |
|
|
|
|
|
|
|
/* |
|
|
|
wordlist 'wl' will be splitted into a wordlist wl2 with three elements, |
|
|
|
containing |
|
|
|
1) '@dev[param]' string (i.e.: the substring before '=' char); |
|
|
|
2) '=' string; |
|
|
|
3) 'expression' string. |
|
|
|
|
|
|
|
Spaces around the '=' sign have to be removed. This is provided |
|
|
|
by inp_remove_excess_ws(). But take care if command is entered manually! |
|
|
|
|
|
|
|
If the 'altermod' argument is 'altermod m1 vth0=0.7', 'm1' has to be kept as the |
|
|
|
element in wl2 before splitting inserts the three new elements. |
|
|
|
If 'expression' is a vector (e.g. [ 1.0 1.2 1.4 ] ), its elements |
|
|
|
in wl2 have to follow the splitting. wl_splice() will take care of this. |
|
|
|
*/ |
|
|
|
* when the assignment operator '=' is embedded in a wl_word |
|
|
|
* then split the word into several words |
|
|
|
* |
|
|
|
* Spaces around the '=' sign have to be removed. This is provided |
|
|
|
* by inp_remove_excess_ws(). But take care if command is entered manually! |
|
|
|
*/ |
|
|
|
for (; wl; wl = wl->wl_next) { |
|
|
|
char *argument = wl->wl_word; |
|
|
|
/* searching for '=' ... */ |
|
|
|
char *eqptr = strchr(argument, '='); |
|
|
|
|
|
|
|
/* argument may be '=', then do nothing |
|
|
|
or =token |
|
|
|
or token= |
|
|
|
or token1=token2 |
|
|
|
...and if found split argument into three chars and make a new wordlist */ |
|
|
|
if (eqptr) { |
|
|
|
if (strlen(argument) > 1) { |
|
|
|
wordlist *wn = NULL; |
|
|
|
@ -1170,12 +1154,12 @@ com_alter_common(wordlist *wl, int do_model) |
|
|
|
|
|
|
|
if (!wl) { |
|
|
|
/* no equal sign found, probably a pre3f4 input format |
|
|
|
'alter device value' |
|
|
|
'alter device parameter value' |
|
|
|
are supported, |
|
|
|
'alter device parameter value parameter value [ parameter value ]' |
|
|
|
multiple param value pairs are not supported! |
|
|
|
*/ |
|
|
|
* 'alter device value' |
|
|
|
* 'alter device parameter value' |
|
|
|
* are supported, |
|
|
|
* 'alter device parameter value parameter value [ parameter value ]' |
|
|
|
* with multiple param value pairs are not supported! |
|
|
|
*/ |
|
|
|
wordlist *wlin = parent->wl_next; |
|
|
|
int wlen = wl_length(wlin); |
|
|
|
int maxelem = 3; |
|
|
|
@ -1216,10 +1200,11 @@ com_alter_common(wordlist *wl, int do_model) |
|
|
|
return; |
|
|
|
} |
|
|
|
|
|
|
|
/* device parameter = expr |
|
|
|
device = expr |
|
|
|
@dev[param] = expr |
|
|
|
*/ |
|
|
|
/* |
|
|
|
* device parameter = expr |
|
|
|
* device = expr |
|
|
|
* @dev[param] = expr |
|
|
|
*/ |
|
|
|
|
|
|
|
dev = NULL; |
|
|
|
param = NULL; |
|
|
|
@ -1261,8 +1246,8 @@ com_alter_common(wordlist *wl, int do_model) |
|
|
|
|
|
|
|
if (!names) { |
|
|
|
/* Put this to try to resolve the case of |
|
|
|
alter @vin[pulse] = [ 0 5 10n 10n 10n 50n 100n ] |
|
|
|
*/ |
|
|
|
* alter @vin[pulse] = [ 0 5 10n 10n 10n 50n 100n ] |
|
|
|
*/ |
|
|
|
char *xsbuf, *rem_xsbuf; |
|
|
|
|
|
|
|
double *list; |
|
|
|
@ -1295,7 +1280,7 @@ com_alter_common(wordlist *wl, int do_model) |
|
|
|
if (!dv) |
|
|
|
return; |
|
|
|
|
|
|
|
/* Here I was, to change the inclusion in the circuit. |
|
|
|
/* Here I was, to change the inclusion in the circuit. |
|
|
|
* will have to revise that dv is right for its insertion. |
|
|
|
*/ |
|
|
|
if_setparam(ft_curckt->ci_ckt, &dev, param, dv, do_model); |
|
|
|
|