fix extra and verilog_extra handling in instance lines (verilog netlists)
This commit is contained in:
parent
d174306880
commit
64d947a9dd
13
src/token.c
13
src/token.c
|
|
@ -2511,7 +2511,7 @@ void print_verilog_element(FILE *fd, int inst)
|
||||||
int no_of_pins=0;
|
int no_of_pins=0;
|
||||||
int tmp1 = 0;
|
int tmp1 = 0;
|
||||||
register int c, state=TOK_BEGIN, space;
|
register int c, state=TOK_BEGIN, space;
|
||||||
char *value=NULL, *token=NULL, *extra = NULL;
|
char *value=NULL, *token=NULL, *extra = NULL, *v_extra = NULL;
|
||||||
char *extra_ptr, *saveptr1, *extra_token;
|
char *extra_ptr, *saveptr1, *extra_token;
|
||||||
size_t sizetok=0, sizeval=0;
|
size_t sizetok=0, sizeval=0;
|
||||||
size_t token_pos=0, value_pos=0;
|
size_t token_pos=0, value_pos=0;
|
||||||
|
|
@ -2530,7 +2530,10 @@ void print_verilog_element(FILE *fd, int inst)
|
||||||
my_free(1041, &name);
|
my_free(1041, &name);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
my_strdup(1559, &extra, get_tok_value((xctx->inst[inst].ptr + xctx->sym)->prop_ptr, "verilog_extra", 0));
|
/* verilog_extra is the list of additional nodes passed as attributes */
|
||||||
|
my_strdup(1562, &v_extra, get_tok_value((xctx->inst[inst].ptr + xctx->sym)->prop_ptr, "verilog_extra", 0));
|
||||||
|
/* extra is the list of attributes NOT to consider as instance parameters */
|
||||||
|
my_strdup(1559, &extra, get_tok_value((xctx->inst[inst].ptr + xctx->sym)->prop_ptr, "extra", 0));
|
||||||
my_strdup(506, &template, (xctx->inst[inst].ptr + xctx->sym)->templ);
|
my_strdup(506, &template, (xctx->inst[inst].ptr + xctx->sym)->templ);
|
||||||
no_of_pins= (xctx->inst[inst].ptr + xctx->sym)->rects[PINLAYER];
|
no_of_pins= (xctx->inst[inst].ptr + xctx->sym)->rects[PINLAYER];
|
||||||
|
|
||||||
|
|
@ -2577,6 +2580,7 @@ void print_verilog_element(FILE *fd, int inst)
|
||||||
value[value_pos]='\0';
|
value[value_pos]='\0';
|
||||||
value_pos=0;
|
value_pos=0;
|
||||||
get_tok_value(template, token, 0);
|
get_tok_value(template, token, 0);
|
||||||
|
dbg(1, "token=%s, extra=%s\n", token, extra);
|
||||||
if(strcmp(token, "name") && xctx->tok_size && (!extra || !strstr(extra, token))) {
|
if(strcmp(token, "name") && xctx->tok_size && (!extra || !strstr(extra, token))) {
|
||||||
if(value[0] != '\0') /* token has a value */
|
if(value[0] != '\0') /* token has a value */
|
||||||
{
|
{
|
||||||
|
|
@ -2629,9 +2633,9 @@ void print_verilog_element(FILE *fd, int inst)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if(extra) {
|
if(v_extra) {
|
||||||
const char *val;
|
const char *val;
|
||||||
for(extra_ptr = extra; ; extra_ptr=NULL) {
|
for(extra_ptr = v_extra; ; extra_ptr=NULL) {
|
||||||
extra_token=my_strtok_r(extra_ptr, " ", "", &saveptr1);
|
extra_token=my_strtok_r(extra_ptr, " ", "", &saveptr1);
|
||||||
if(!extra_token) break;
|
if(!extra_token) break;
|
||||||
|
|
||||||
|
|
@ -2652,6 +2656,7 @@ void print_verilog_element(FILE *fd, int inst)
|
||||||
my_free(1045, &value);
|
my_free(1045, &value);
|
||||||
my_free(1046, &token);
|
my_free(1046, &token);
|
||||||
my_free(1560, &extra);
|
my_free(1560, &extra);
|
||||||
|
my_free(1567, &v_extra);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue