XSPICE, CIDER models excuded from inp_fix_param_values(), debug output

This commit is contained in:
h_vogt 2008-04-13 14:27:27 +00:00
parent 8ed853345e
commit d1bcacb208
1 changed files with 38 additions and 3 deletions

View File

@ -975,6 +975,8 @@ inp_readall(FILE *fp, struct line **data, int call_depth, char *dir_name)
char *global_copy = NULL, keep_char;
int line_number = 1; /* sjb - renamed to avoid confusion with struct line */
FILE *newfp;
FILE *fdo;
struct line *tmp_ptr1 = NULL;
int i, j;
bool found_library, found_lib_name, found_end = FALSE, shell_eol_continuation = FALSE;
bool dir_name_flag = FALSE;
@ -1496,6 +1498,15 @@ inp_readall(FILE *fp, struct line **data, int call_depth, char *dir_name)
inp_add_control_section(working, &line_number);
}
*data = cc;
#ifdef _DEBUG
/*debug: print into file*/
if (tmp_ptr1) tfree(tmp_ptr1);
fdo = fopen("debug-out.txt", "w");
for(tmp_ptr1 = cc; tmp_ptr1 != NULL; tmp_ptr1 = tmp_ptr1->li_next)
fprintf(fdo, "%s\n", tmp_ptr1->li_line);
;
(void) fclose(fdo);
#endif
return;
}
@ -2501,8 +2512,15 @@ inp_fix_param_values( struct line *deck )
if ( ciprefix( ".endc", line ) ) { control_section = FALSE; c = c->li_next; continue; }
if ( control_section || ciprefix( ".option", line ) ) { c = c->li_next; continue; } /* no handling of params in "option" lines */
if ( ciprefix( "set", line ) ) { c = c->li_next; continue; } /* no handling of params in "set" lines */
if ( *line == 'b' ) { c = c->li_next; continue; } /* no handling of params in B source lines */
/* exclude CIDER models */
if ( ciprefix( ".model", line ) && ( strstr(line, "numos") || strstr(line, "numd") || strstr(line, "nbjt") ||
strstr(line, "nbjt2") || strstr(line, "numd2") ) )
{ c = c->li_next; continue; }
/* exclude CIDER devices with ic.file parameter */
if ( strstr(line, "ic.file")) { c = c->li_next; continue; }
if ( *line == 'b' ) { c = c->li_next; continue; }
while ( ( equal_ptr = strstr( line, "=" ) ) ) {
// skip over equality '=='
@ -2515,6 +2533,10 @@ inp_fix_param_values( struct line *deck )
if ( isdigit(*beg_of_str) || *beg_of_str == '{' || *beg_of_str == '.' ||
( *beg_of_str == '-' && isdigit(*(beg_of_str+1)) ) ) {
line = equal_ptr + 1;
} else if (*beg_of_str == '[') {
/* fill in some code to put curly brackets around all params inside a pair of square brackets */
/* for now skip [...] and go to next '=' token in line*/
line = equal_ptr + 1;
} else {
end_of_str = beg_of_str;
while ( *end_of_str != '\0' && (!isspace(*end_of_str) || has_paren) ) {
@ -2622,7 +2644,9 @@ get_number_terminals( char *c )
char *name[10];
char nam_buf[33];
bool area_found = FALSE;
#ifdef TRACE
char first_toc[32];
#endif
switch (*c) {
case 'r': case 'c': case 'l': case 'k': case 'f': case 'h': case 'b':
case 'v': case 'i': case 'w': case 'd':
@ -2631,7 +2655,7 @@ get_number_terminals( char *c )
case 'u': case 'j': case 'z':
return 3;
break;
case 't': case 'o': case 'g': case 'e': case 's':
case 't': case 'o': case 'g': case 'e': case 's': case 'y':
return 4;
break;
case 'm': /* recognition of 4, 5, 6, or 7 nodes for SOI devices needed */
@ -2644,6 +2668,17 @@ get_number_terminals( char *c )
}
return i-2;
break;
case 'p': /* recognition of up to 100 cpl nodes */
i = j = 0;
/* find the last token in the line*/
while ( (i < 100) && (*c != '\0') ) {
strncpy(nam_buf, gettok_instance(&c), 32);
if (strstr(nam_buf, "=")) j++;
i++;
}
if (i == 100) return 0;
return i-j-2;
break;
case 'q': /* recognition of 3/4 terminal bjt's needed */
i = j = 0;
while ( (i < 10) && (*c != '\0') ) {