From b0973ae8c0cbff39eca01e31a4954c67d410ef4c Mon Sep 17 00:00:00 2001 From: stefan schippers Date: Mon, 13 Jan 2025 17:30:11 +0100 Subject: [PATCH] add_pinlayer_boxes(): fix uninitialized bb[PINLAYER][i].fill, LCC symbols: make 1st LCC level pins display spice_get_voltage annotation data --- src/save.c | 1 + src/systemlib/iopin_lcc_top.sym | 6 ++++-- src/systemlib/ipin_lcc_top.sym | 6 ++++-- src/systemlib/opin_lcc_top.sym | 6 ++++-- src/token.c | 11 ++++++++++- 5 files changed, 23 insertions(+), 7 deletions(-) diff --git a/src/save.c b/src/save.c index d1cbbac6..83a6edcf 100644 --- a/src/save.c +++ b/src/save.c @@ -3991,6 +3991,7 @@ static void add_pinlayer_boxes(int *lastr, xRect **bb, bb[PINLAYER][i].dash = 0; bb[PINLAYER][i].ellipse_a = bb[PINLAYER][i].ellipse_b = -1; bb[PINLAYER][i].sel = 0; + bb[PINLAYER][i].fill = 1; /* add to symbol pins remaining attributes from schematic pins, except name= and lab= */ my_strdup(_ALLOC_ID_, &pin_label, get_sym_template(prop_ptr, "lab")); /* remove name=... and lab=... */ my_strcat(_ALLOC_ID_, &bb[PINLAYER][i].prop_ptr, pin_label); diff --git a/src/systemlib/iopin_lcc_top.sym b/src/systemlib/iopin_lcc_top.sym index a22a52fb..d7a2b6d0 100644 --- a/src/systemlib/iopin_lcc_top.sym +++ b/src/systemlib/iopin_lcc_top.sym @@ -1,5 +1,6 @@ -v {xschem version=2.9.7 file_version=1.2} -G {type=lcc_iopin +v {xschem version=3.4.6 file_version=1.2} +G {} +K {type=lcc_iopin format="*.iopin @lab" template="name=p1 lab=xxx" } @@ -11,3 +12,4 @@ L 7 -10 2.5 -7.5 0 {} L 7 -12.5 0 -10 -2.5 {} L 7 -12.5 0 -10 2.5 {} T {@lab} -3.75 -16.25 0 1 0.2 0.2 {} +T {@#0:spice_get_voltage} -1.875 3.90625 0 1 0.2 0.2 {layer=15} diff --git a/src/systemlib/ipin_lcc_top.sym b/src/systemlib/ipin_lcc_top.sym index 5fb41bc0..55feb7da 100644 --- a/src/systemlib/ipin_lcc_top.sym +++ b/src/systemlib/ipin_lcc_top.sym @@ -1,5 +1,6 @@ -v {xschem version=2.9.7 file_version=1.2} -G {type=lcc_ipin +v {xschem version=3.4.6 file_version=1.2} +G {} +K {type=lcc_ipin format="*.ipin @lab" template="name=p1 lab=xxx" } @@ -9,3 +10,4 @@ E {} L 7 10 -2.5 12.5 0 {} L 7 10 2.5 12.5 0 {} T {@lab} 3.75 -16.25 0 0 0.2 0.2 {} +T {@#0:spice_get_voltage} 1.875 3.90625 0 0 0.2 0.2 {layer=15} diff --git a/src/systemlib/opin_lcc_top.sym b/src/systemlib/opin_lcc_top.sym index f08a2f29..e8e22299 100644 --- a/src/systemlib/opin_lcc_top.sym +++ b/src/systemlib/opin_lcc_top.sym @@ -1,5 +1,6 @@ -v {xschem version=2.9.7 file_version=1.2} -G {type=lcc_opin +v {xschem version=3.4.6 file_version=1.2} +G {} +K {type=lcc_opin format="*.opin @lab" template="name=p1 lab=xxx" } @@ -9,3 +10,4 @@ E {} L 7 -12.5 -2.5 -10 0 {} L 7 -12.5 2.5 -10 0 {} T {@lab} -3.75 -16.25 0 1 0.2 0.2 {} +T {@#0:spice_get_voltage} -1.875 3.90625 0 1 0.2 0.2 {layer=15} diff --git a/src/token.c b/src/token.c index 31c0b2cb..fdc398f9 100644 --- a/src/token.c +++ b/src/token.c @@ -4432,7 +4432,9 @@ const char *translate2(Lcc *lcc, int level, char* s) if(!tclgetboolvar("spiceprefix") && !strcmp(token, "@spiceprefix")) { if(value) my_free(_ALLOC_ID_, &value); xctx->tok_size = 0; - } else if(token[0] == '@' && (token[1] == '@' || token[1] == '#')) { /* get rid of pin attribute info */ + + } else if(!strstr(token, "spice_get_voltage") && + token[0] == '@' && (token[1] == '@' || token[1] == '#')) { /* get rid of pin attribute info */ if(value) my_free(_ALLOC_ID_, &value); xctx->tok_size = 0; } else { @@ -4473,6 +4475,13 @@ const char *translate2(Lcc *lcc, int level, char* s) memcpy(result + result_pos, token, tmp + 1); result_pos += tmp; } + /* @#n:spice_get_voltage tokens */ + else if (strstr(token, "spice_get_voltage")) { + tmp = strlen(token); + STR_ALLOC(&result, tmp + result_pos, &size); + memcpy(result + result_pos, token, tmp + 1); + result_pos += tmp; + } else if(strcmp(token,"@path")==0) { char *path = NULL; here(level);