Enable single terminal n devices (Verilog-A modules)

This commit is contained in:
Holger Vogt 2024-06-25 10:54:30 +02:00
parent 727a920032
commit 442d8554f0
2 changed files with 44 additions and 6 deletions

View File

@ -1996,11 +1996,8 @@ devmodtranslate(struct card *s, char *subname, wordlist * const orig_modnames)
s->line = copy(bxx_buffer(&buffer));
break;
/* 2 or 3 (temp) terminals for diode d, 2 or more for OSDI devices */
/* 2 or 3 (temp) terminals for diode d */
case 'd':
#ifdef OSDI
case 'n':
#endif
name = gettok(&t); /* get refdes */
bxx_printf(&buffer, "%s ", name);
tfree(name);
@ -2039,8 +2036,48 @@ devmodtranslate(struct card *s, char *subname, wordlist * const orig_modnames)
s->line = copy(bxx_buffer(&buffer));
break;
#ifdef OSDI
/* 1 or more terinals for OSDI devices*/
case 'n':
name = gettok(&t); /* get refdes */
bxx_printf(&buffer, "%s ", name);
tfree(name);
name = gettok_node(&t); /* get first attached netname */
bxx_printf(&buffer, "%s ", name);
tfree(name);
name = gettok_node(&t); /* this can be either a model name or a node name. */
if (name == NULL) {
name = copy(""); /* allow 'tfree' */
}
else {
for (;;) {
wlsub = wl_find(name, orig_modnames);
if (wlsub) {
break;
}
else {
bxx_printf(&buffer, "%s ", name);
tfree(name);
name = gettok(&t);
if (name == NULL) { /* No token anymore - leave */
name = copy(""); /* allow 'tfree' */
break;
}
}
} /* while */
}
translate_mod_name(&buffer, name, subname, orig_modnames);
tfree(name);
bxx_putc(&buffer, ' ');
bxx_put_cstring(&buffer, t);
tfree(s->line);
s->line = copy(bxx_buffer(&buffer));
break;
#endif
/* 3 terminal devices */
case 'u': /* urc transmissionline */
/* 3 terminal devices */
case 'w': /* current controlled switch */
case 'j': /* jfet */
case 'z': /* hfet, mesa */

View File

@ -46,7 +46,8 @@ void INP2N(CKTcircuit *ckt, INPtables *tab, struct card *current) {
char *token;
INPgetNetTok(&line, &token, 1);
if (i >= 2) {
/* We have single terminal Verilog-A modules */
if (i >= 1) {
txfree(INPgetMod(ckt, token, &thismodel, tab));
/* /1* check if using model binning -- pass in line since need 'l' and 'w' *1/ */