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