From 4bcacb310daa6c65756338819be69ad235deb1a5 Mon Sep 17 00:00:00 2001 From: Holger Vogt Date: Sat, 26 Sep 2020 23:33:33 +0200 Subject: [PATCH] enable XSPICE %vnam in subcircuits. The token following after %vnam has to be tranlated as an instance during subcircuit expansion. --- src/frontend/subckt.c | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/src/frontend/subckt.c b/src/frontend/subckt.c index 179e9abfb..3ab62bae6 100644 --- a/src/frontend/subckt.c +++ b/src/frontend/subckt.c @@ -992,6 +992,7 @@ translate(struct card *deck, char *formal, char *actual, char *scname, const cha } for (c = deck; c; c = c->nextcard) { + bool got_vnam = FALSE; char *s = c->line; char dev_type = tolower_c(s[0]); @@ -1074,13 +1075,23 @@ translate(struct card *deck, char *formal, char *actual, char *scname, const cha if (name) tfree(name); name = next_name; + /* vname requires instance translation of token following */ + if (eq(name, "vnam")) + got_vnam = TRUE; next_name = MIFgettok(&s); bxx_put_cstring(&buffer, name); break; default: - /* must be a node name at this point, so translate it */ - translate_node_name(&buffer, scname, name, NULL); + if (got_vnam) { + /* after %vnam an instance name is following */ + translate_inst_name(&buffer, scname, name, NULL); + got_vnam = FALSE; + } + else { + /* must be a node name at this point, so translate it */ + translate_node_name(&buffer, scname, name, NULL); + } break; }