In VDMOS device, if instance parameter tnodeout is set,
check for exactly five nodes
This commit is contained in:
parent
51be270f06
commit
a46bb7b108
|
|
@ -157,7 +157,7 @@ static void inp_add_series_resistor(struct card *deck);
|
||||||
static void subckt_params_to_param(struct card *deck);
|
static void subckt_params_to_param(struct card *deck);
|
||||||
static void inp_fix_temper_in_param(struct card *deck);
|
static void inp_fix_temper_in_param(struct card *deck);
|
||||||
static void inp_fix_agauss_in_param(struct card *deck, char *fcn);
|
static void inp_fix_agauss_in_param(struct card *deck, char *fcn);
|
||||||
static void inp_vdmos_model(struct card *deck);
|
static int inp_vdmos_model(struct card *deck);
|
||||||
static void inp_check_syntax(struct card *deck);
|
static void inp_check_syntax(struct card *deck);
|
||||||
|
|
||||||
static char *inp_spawn_brace(char *s);
|
static char *inp_spawn_brace(char *s);
|
||||||
|
|
@ -636,7 +636,9 @@ struct card *inp_readall(FILE *fp, char *dir_name, bool comfile, bool intfile,
|
||||||
|
|
||||||
inp_remove_excess_ws(working);
|
inp_remove_excess_ws(working);
|
||||||
|
|
||||||
inp_vdmos_model(working);
|
if(inp_vdmos_model(working))
|
||||||
|
return NULL;;
|
||||||
|
|
||||||
/* don't remove unused model if we have an .if clause, because we
|
/* don't remove unused model if we have an .if clause, because we
|
||||||
cannot yet decide here which model we finally will need */
|
cannot yet decide here which model we finally will need */
|
||||||
if (!has_if) {
|
if (!has_if) {
|
||||||
|
|
@ -6840,13 +6842,14 @@ static void inp_quote_params(struct card *c, struct card *end_c,
|
||||||
Assemble all other tokens in a wordlist, and flatten it
|
Assemble all other tokens in a wordlist, and flatten it
|
||||||
to become the new .model line.
|
to become the new .model line.
|
||||||
*/
|
*/
|
||||||
static void inp_vdmos_model(struct card *deck)
|
static int inp_vdmos_model(struct card *deck)
|
||||||
{
|
{
|
||||||
struct card *card;
|
struct card *card;
|
||||||
for (card = deck; card; card = card->nextcard) {
|
for (card = deck; card; card = card->nextcard) {
|
||||||
|
|
||||||
char *curr_line, *cut_line, *token, *new_line;
|
char *curr_line, *cut_line, *token, *new_line;
|
||||||
wordlist *wl = NULL, *wlb;
|
wordlist *wl = NULL, *wlb;
|
||||||
|
int i;
|
||||||
|
|
||||||
curr_line = cut_line = card->line;
|
curr_line = cut_line = card->line;
|
||||||
|
|
||||||
|
|
@ -6881,8 +6884,23 @@ static void inp_vdmos_model(struct card *deck)
|
||||||
tfree(card->line);
|
tfree(card->line);
|
||||||
card->line = new_line;
|
card->line = new_line;
|
||||||
}
|
}
|
||||||
|
/* we have a VDMOS instance line with 'tnodeout' and thus need exactly 5 nodes
|
||||||
|
*/
|
||||||
|
else if (strstr(curr_line, "tnodeout")) {
|
||||||
|
for (i = 0; i < 7; i++)
|
||||||
|
curr_line = nexttok(curr_line);
|
||||||
|
if (!ciprefix("tnodeout", curr_line)) {
|
||||||
|
fprintf(cp_err,
|
||||||
|
"Error: We need exactly 5 nodes\n"
|
||||||
|
" drain, gate, source, tjunction, tcase\n"
|
||||||
|
" in VDMOS instance line\n"
|
||||||
|
" %s\n", card->line);
|
||||||
|
return 1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/* storage for devices which get voltage source added */
|
/* storage for devices which get voltage source added */
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue