Browse Source

Add a predifined variable 'skywaterpdk' to speed up circuit

loading and parsing.
If set, it removes quoting tokens for params. This requires
that Skywater PDK does adequately stick to the ngspice syntax
to put params in between braces. As far as tests go, it does.
It also set the number of nodes for MSO devices to 4, so no lengthy
search is required.
pre-master-46
Holger Vogt 2 years ago
parent
commit
3d1cbf93ee
  1. 3
      src/frontend/inpcom.c
  2. 4
      src/frontend/options.c
  3. 3
      src/frontend/subckt.c
  4. 1
      src/include/ngspice/fteext.h

3
src/frontend/inpcom.c

@ -7860,6 +7860,9 @@ static void inp_quote_params(struct card *c, struct card *end_c,
{
bool in_control = FALSE;
if (ft_skywaterpdk)
return;
for (; c && c != end_c; c = c->nextcard) {
int i, j, num_terminals;

4
src/frontend/options.c

@ -23,7 +23,7 @@ Author: 1985 Wayne A. Christopher, U. C. Berkeley CAD Group
bool ft_acctprint = FALSE, ft_noacctprint = FALSE, ft_listprint = FALSE;
bool ft_nodesprint = FALSE, ft_optsprint = FALSE, ft_noinitprint = FALSE;
bool ft_norefprint = FALSE;
bool ft_norefprint = FALSE, ft_skywaterpdk = FALSE;
bool ft_ngdebug = FALSE, ft_nginfo = FALSE, ft_stricterror = FALSE;
static void setdb(char *str);
@ -307,6 +307,8 @@ cp_usrset(struct variable *var, bool isset)
ft_ngdebug = isset;
} else if (eq(var->va_name, "nginfo")) {
ft_nginfo = isset;
} else if (eq(var->va_name, "skywaterpdk")) {
ft_skywaterpdk = isset;
} else if (eq(var->va_name, "noinit")) {
ft_noinitprint = isset;
} else if (eq(var->va_name, "norefvalue")) {

3
src/frontend/subckt.c

@ -1695,6 +1695,9 @@ numnodes(const char *line, struct subs *subs, wordlist const *modnames)
return (nodes);
}
}
/* if we use option skywaterpdk, MOS has four nodes. Required if number of devices is large */
if (ft_skywaterpdk && c == 'm')
return 4;
n = inp_numnodes(c);

1
src/include/ngspice/fteext.h

@ -268,6 +268,7 @@ extern struct card *inp_getoptsc(char *line, struct card *options);
extern bool ft_ngdebug;
extern bool ft_nginfo;
extern bool ft_stricterror;
extern bool ft_skywaterpdk;
/* parse.c */

Loading…
Cancel
Save