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.
This commit is contained in:
Holger Vogt 2023-11-23 18:29:48 +01:00
parent dd58b07949
commit 3d1cbf93ee
4 changed files with 10 additions and 1 deletions

View File

@ -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;

View File

@ -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")) {

View File

@ -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);

View File

@ -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 */