From bde0639bc41f117f4e59f566af7ddb52c73ebe5e Mon Sep 17 00:00:00 2001 From: Holger Vogt Date: Wed, 20 Oct 2021 20:06:31 +0200 Subject: [PATCH] save within subcircuit enable V(a,b) as v(a) v(b) --- src/frontend/subckt.c | 28 ++++++++++++++++++++++------ 1 file changed, 22 insertions(+), 6 deletions(-) diff --git a/src/frontend/subckt.c b/src/frontend/subckt.c index 24f4ea62a..087731121 100644 --- a/src/frontend/subckt.c +++ b/src/frontend/subckt.c @@ -1179,6 +1179,8 @@ translate(struct card *deck, char *formal, char *actual, char *scname, const cha if (ciprefix(".save", s)) { while ((paren_ptr = strchr(s, '(')) != NULL) { bool curr = FALSE; + char* comma_ptr = NULL; + if (ciprefix(" i(", paren_ptr - 2)) curr = TRUE; @@ -1189,13 +1191,27 @@ translate(struct card *deck, char *formal, char *actual, char *scname, const cha goto quit; } - bxx_put_substring(&buffer, s, name); - if (curr) - translate_inst_name(&buffer, scname, name, paren_ptr); - else - translate_node_name(&buffer, scname, name, paren_ptr); + comma_ptr = strchr(s, ','); - s = paren_ptr; + bxx_put_substring(&buffer, s, name); + /* i(Vxx) */ + if (curr) { + translate_inst_name(&buffer, scname, name, paren_ptr); + s = paren_ptr; + } + /* V(a,b) */ + else if (comma_ptr && comma_ptr < paren_ptr) { + translate_node_name(&buffer, scname, name, comma_ptr); + bxx_putc(&buffer, ','); + name = comma_ptr + 1; + translate_node_name(&buffer, scname, name, paren_ptr); + s = paren_ptr; + } + /* V(a) */ + else { + translate_node_name(&buffer, scname, name, paren_ptr); + s = paren_ptr; + } } bxx_put_cstring(&buffer, s); /* rest of line */ break;