diff --git a/src/frontend/inp.c b/src/frontend/inp.c index 176b97bc7..1c2babe6b 100644 --- a/src/frontend/inp.c +++ b/src/frontend/inp.c @@ -1312,7 +1312,7 @@ inp_dodeck( out_printf("Warning: Model issue on line %d :\n %.*s ...\n%s\n", dd->linenum_orig, 72, dd->line, dd->error); else { - out_printf("Error on line %d :\n %s\n%s\n", + out_printf("Error on line %d or its substitute:\n %s\n%s\n", dd->linenum_orig, dd->line, dd->error); have_err = TRUE; return 1; diff --git a/src/frontend/inpcom.c b/src/frontend/inpcom.c index 6886692a2..7b9612932 100644 --- a/src/frontend/inpcom.c +++ b/src/frontend/inpcom.c @@ -2154,8 +2154,8 @@ static void inp_chk_for_multi_in_vcvs(struct card *c, int *line_number) tfree(xy_values2[1]); *c->line = '*'; - c = insert_new_line(c, m_instance, (*line_number)++, 0); - c = insert_new_line(c, m_model, (*line_number)++, 0); + c = insert_new_line(c, m_instance, (*line_number)++, c->linenum_orig); + c = insert_new_line(c, m_model, (*line_number)++, c->linenum_orig); } } } @@ -4997,7 +4997,7 @@ static void inp_reorder_params( // iterate through deck and find lines with multiply defined parameters // // split line up into multiple lines and place those new lines immediately -// afetr the current multi-param line in the deck +// after the current multi-param line in the deck static int inp_split_multi_param_lines(struct card *card, int line_num) { @@ -5063,7 +5063,7 @@ static int inp_split_multi_param_lines(struct card *card, int line_num) *(card->line) = '*'; // insert new param lines immediately after current line for (i = 0; i < counter; i++) - card = insert_new_line(card, array[i], line_num++, 0); + card = insert_new_line(card, array[i], line_num++, card->linenum_orig); tfree(array); } @@ -5371,6 +5371,7 @@ static void inp_compat(struct card *card) for (; card; card = card->nextcard) { char *curr_line = card->line; + int currlinenumber = card->linenum_orig; /* exclude any command inside .control ... .endc */ if (ciprefix(".control", curr_line)) { @@ -5506,7 +5507,7 @@ static void inp_compat(struct card *card) *(card->line) = '*'; // insert new lines immediately after current line for (i = 0; i < 2; i++) - card = insert_new_line(card, ckt_array[i], 0, 0); + card = insert_new_line(card, ckt_array[i], (int)i + 1, currlinenumber); } else { ckt_array[3] = tprintf( @@ -5517,7 +5518,7 @@ static void inp_compat(struct card *card) *(card->line) = '*'; // insert new lines immediately after current line for (i = 0; i < 4; i++) - card = insert_new_line(card, ckt_array[i], 0, 0); + card = insert_new_line(card, ckt_array[i], (int)i + 1, currlinenumber); } tfree(expression); tfree(title_tok); @@ -5562,7 +5563,7 @@ static void inp_compat(struct card *card) *(card->line) = '*'; // insert new B source line immediately after current line for (i = 0; i < 2; i++) - card = insert_new_line(card, ckt_array[i], 0, 0); + card = insert_new_line(card, ckt_array[i], (int)i + 1, currlinenumber); tfree(title_tok); tfree(node1); @@ -5707,7 +5708,7 @@ static void inp_compat(struct card *card) *(card->line) = '*'; // insert new lines immediately after current line for (i = 0; i < 2; i++) - card = insert_new_line(card, ckt_array[i], 0, 0); + card = insert_new_line(card, ckt_array[i], (int)i + 1, currlinenumber); } else { ckt_array[3] = tprintf(".model xfer_%s pwl(x_array=[%s] y_array=[%s] " @@ -5716,7 +5717,7 @@ static void inp_compat(struct card *card) *(card->line) = '*'; // insert new lines immediately after current line for (i = 0; i < 4; i++) - card = insert_new_line(card, ckt_array[i], 0, 0); + card = insert_new_line(card, ckt_array[i], (int)i + 1, currlinenumber); } tfree(expression); @@ -5773,7 +5774,7 @@ static void inp_compat(struct card *card) *(card->line) = '*'; // insert new B source line immediately after current line for (i = 0; i < 2; i++) - card = insert_new_line(card, ckt_array[i], 0, 0); + card = insert_new_line(card, ckt_array[i], (int)i + 1, currlinenumber); tfree(title_tok); tfree(m_token); @@ -5819,7 +5820,7 @@ static void inp_compat(struct card *card) *(card->line) = '*'; // insert new three lines immediately after current line for (i = 0; i < 3; i++) - card = insert_new_line(card, ckt_array[i], 0, 0); + card = insert_new_line(card, ckt_array[i], (int)i + 1, currlinenumber); tfree(title_tok); tfree(vnamstr); @@ -5865,7 +5866,7 @@ static void inp_compat(struct card *card) *(card->line) = '*'; // insert new three lines immediately after current line for (i = 0; i < 3; i++) - card = insert_new_line(card, ckt_array[i], 0, 0); + card = insert_new_line(card, ckt_array[i], (int)i + 1, currlinenumber); tfree(title_tok); tfree(vnamstr); @@ -5938,11 +5939,11 @@ static void inp_compat(struct card *card) // comment out current old R line *(card->line) = '*'; // insert new B source line immediately after current line - card = insert_new_line(card, xline, 0, 0); + card = insert_new_line(card, xline, 1, currlinenumber); if (rnoise) { - card = insert_new_line(card, x2line, 0, 0); - card = insert_new_line(card, x3line, 0, 0); - card = insert_new_line(card, x4line, 0, 0); + card = insert_new_line(card, x2line, 2, currlinenumber); + card = insert_new_line(card, x3line, 3, currlinenumber); + card = insert_new_line(card, x4line, 4, currlinenumber); } tfree(title_tok); @@ -6019,7 +6020,7 @@ static void inp_compat(struct card *card) *(card->line) = '*'; // insert new B source line immediately after current line for (i = 0; i < 3; i++) - card = insert_new_line(card, ckt_array[i], 0, 0); + card = insert_new_line(card, ckt_array[i], (int)i + 1, currlinenumber); tfree(title_tok); tfree(node1); @@ -6079,7 +6080,7 @@ static void inp_compat(struct card *card) *(card->line) = '*'; // insert new B source line immediately after current line for (i = 0; i < 3; i++) - card = insert_new_line(card, ckt_array[i], 0, 0); + card = insert_new_line(card, ckt_array[i], (int)i + 1, currlinenumber); tfree(title_tok); tfree(node1); @@ -6235,7 +6236,7 @@ static void inp_compat(struct card *card) card->line = inp_remove_ws(curr_line); // insert new B source line immediately after current line for (ii = paui; ii < pai; ii++) - card = insert_new_line(card, ckt_array[ii], 0, 0); + card = insert_new_line(card, ckt_array[ii], (int)ii + 1, currlinenumber); paui = pai; } @@ -6332,7 +6333,7 @@ static void inp_compat(struct card *card) // *(ckt_array[0]) = '*'; // insert new B source line immediately after current line for (ii = paui; ii < pai; ii++) - card = insert_new_line(card, ckt_array[ii], 0, 0); + card = insert_new_line(card, ckt_array[ii], (int)ii + 1, currlinenumber); paui = pai; // continue; @@ -6779,6 +6780,7 @@ static void inp_add_series_resistor(struct card *deck) if (ciprefix("l", cut_line)) { + int currlinenumber = card->linenum_orig; char *title_tok = gettok(&cut_line); char *node1 = gettok(&cut_line); char *node2 = gettok(&cut_line); @@ -6793,8 +6795,8 @@ static void inp_add_series_resistor(struct card *deck) *(card->line) = '*'; // insert new new L and R lines immediately after current line - card = insert_new_line(card, newL, 0, 0); - card = insert_new_line(card, newR, 0, 0); + card = insert_new_line(card, newL, 1, currlinenumber); + card = insert_new_line(card, newR, 2, currlinenumber); tfree(title_tok); tfree(node1); @@ -6830,7 +6832,7 @@ static void subckt_params_to_param(struct card *card) /* card->line ends with subcircuit name */ cut_line[-1] = '\0'; /* insert new_line after card->line */ - insert_new_line(card, new_line, card->linenum + 1, 0); + insert_new_line(card, new_line, card->linenum + 1, card->linenum_orig); } } } @@ -6948,7 +6950,7 @@ static void inp_dot_if(struct card *card) char *firstbr = strchr(curr_line, '('); char *lastbr = strrchr(curr_line, ')'); if ((!firstbr) || (!lastbr)) { - fprintf(cp_err, "Error in netlist line %d\n", + fprintf(cp_err, "Error in netlist line no. %d\n", card->linenum_orig); fprintf(cp_err, " Bad syntax: %s\n\n", curr_line); controlled_exit(EXIT_BAD); @@ -7921,7 +7923,7 @@ static void inp_meas_current(struct card *deck) new_line = tprintf("%s %s %s_vmeas_%d 0", new_tok, node1, node1, sn); /* insert new_line after card->line */ - insert_new_line(card, new_line, card->linenum + 1, 0); + insert_new_line(card, new_line, card->linenum + 1, card->linenum_orig); } sn++; tfree(new_tok); @@ -7975,7 +7977,7 @@ static void replace_table(struct card *startcard) tfree(begline); tfree(card->line); card->line = cut_line = neweline; - insert_new_line(card, newbline, 0, 0); + insert_new_line(card, newbline, 0, card->linenum_orig); /* read next TABLE function in cut_line */ ftablebeg = strstr(cut_line, "table("); } diff --git a/src/frontend/numparam/spicenum.c b/src/frontend/numparam/spicenum.c index 7ea060f0c..338e83464 100644 --- a/src/frontend/numparam/spicenum.c +++ b/src/frontend/numparam/spicenum.c @@ -358,13 +358,19 @@ nupa_done(void) bool is_interactive = FALSE; if (cp_getvar("interactive", CP_BOOL, NULL, 0)) is_interactive = TRUE; - printf(" Copies=%d Evals=%d Placeholders=%ld Symbols=%d Errors=%d\n", - linecountS, evalcountS, placeholder, dictsize, nerrors); + if (ft_ngdebug) + printf(" Copies=%d Evals=%d Placeholders=%ld Symbols=%d Errors=%d\n", + linecountS, evalcountS, placeholder, dictsize, nerrors); /* debug: ask if spice run really wanted */ if (ft_batchmode) controlled_exit(EXIT_FAILURE); if (!is_interactive) { - fprintf(cp_err, "Numparam expansion errors: Problem with input file.\n"); + if (ft_ngdebug) { + fprintf(cp_err, "Numparam expansion errors: Problem with the input netlist.\n"); + } + else { + fprintf(cp_err, " Please check your input netlist.\n"); + } controlled_exit(EXIT_FAILURE); } for (;;) { diff --git a/src/frontend/numparam/xpressn.c b/src/frontend/numparam/xpressn.c index 3d90c710e..b375442f5 100644 --- a/src/frontend/numparam/xpressn.c +++ b/src/frontend/numparam/xpressn.c @@ -219,10 +219,18 @@ message(dico_t *dico, const char *fmt, ...) va_list ap; if (dico->srcline >= 0) - fprintf + if (ft_ngdebug) { + fprintf (stderr, - "Original line no.: %d, new internal line no.: %d:\n", - dico->oldline, dico->srcline); + "Netlist line no. %d, new internal line no. %d:\n", + dico->oldline, dico->srcline); + } + else { + fprintf + (stderr, + "Netlist line no. %d:\n", + dico->oldline); + } va_start(ap, fmt); vfprintf(stderr, fmt, ap); @@ -385,7 +393,7 @@ fetchnumentry(dico_t *dico, char *s, bool *perr) if (entry && (entry->tp == NUPA_REAL)) return entry->vl; - *perr = message(dico, "Undefined number [%s]\n", s); + *perr = message(dico, "Undefined parameter [%s]\n", s); return 0.0; } diff --git a/src/spicelib/parser/inpptree.c b/src/spicelib/parser/inpptree.c index 9b85456c7..7a8818d59 100644 --- a/src/spicelib/parser/inpptree.c +++ b/src/spicelib/parser/inpptree.c @@ -1547,7 +1547,7 @@ void free_tree(INPparseNode *pt) break; default: - printf("oops"); + printf("oops "); break; } @@ -1666,7 +1666,7 @@ void printTree(INPparseNode * pt) break; default: - printf("oops"); + printf("oops "); break; } return;