27 if(sp->
sig_bgn[sig_num] == NULL)
33 pp->
index = sig_index;
76 if(sp->
sig_bgn[sig_num] == NULL)
82 pp->
index = sig_index;
103 printf(
"Warning!\n");
104 printf(
"Only one simulation point has been encountured between PHASE_THRESHOLD_MIN and PHASE_THRESHOLD_MAX!\n");
105 printf(
"The position of the pulse may be estimated with inadequate precision!\n");
137 (sig_val < sp->sig_end[sig_num]->p_above))
150 pp->
index= sig_index;
165 static int add_edge(
SIGNALS *sp,
int sig_num,
double sig_val,
TIME sig_time,
double old_sig_val,
TIME old_sig_time,
int sig_index,
int old_sig_index,
int direction)
177 pp->
index = sig_index;
181 pp->
t = old_sig_time;
182 pp->
index = old_sig_index;
183 pp->
val = old_sig_val;
187 pp->
exact_time = (sig_time-old_sig_time)*delta + old_sig_time;
210 for(sig_num=0; sig_num<sp->
signal_num; sig_num++)
241 return (k+1)*(2*M_PI);
259 int index, old_index=0;
260 float time, old_time;
262 int expected_edge[3];
266 fp=fopen(filename,
"r");
269 printf(
"Cannot open file: %s.\n", filename);
283 printf(
"ERROR IN FILE \".io\"\nset inout_num = %s\n",
line);
292 printf(
"ERROR IN FILE \".io\"\nset var_in_num = %s\n",
line);
307 printf(
"ERROR IN FILE \".io\"\nset user_names = %s\n",
line);
327 printf(
"ERROR IN FILE \".io\"\nset phase_names = %s\n",
line);
335 printf(
"ERROR IN FILE \".io\"\nset voltage_names = %s\n",
line);
373 for(i=0; i<=Sdiv3; i++)
376 signals_in_row=Smod3;
381 if(sscanf(
line,
"%d %e", &index, &time)!=2)
385 if(index!=old_index+1)
402 printf(
"Warning !!!\n");
403 printf(
"Numbers of samples in different signal sets do not match.");
404 printf(
"Possible error in input data file.");
415 if((i==1) && (index==1))
423 for(m=0; m<signals_in_row; m++)
425 if(sscanf(&
line[k],
"%le", &sig_val)!=1)
464 if(
add_edge(sp, (i-1)*3+m, sig_val, time, old_sig_val, old_time, index, old_index, expected_edge[m]))
471 if(
add_edge(sp, (i-1)*3+m, sig_val, time, old_sig_val, old_time, index, old_index, expected_edge[m]))
475 old_sig_val = sig_val;
510 int signals_in_row, valid_value;
514 int index, old_index=0;
517 fp=fopen(filename,
"r");
556 printf(
"ERROR IN LINE: %d\n", line_no);
576 for(i=0; i<=Sdiv3; i++)
579 signals_in_row=Smod3;
582 if(sscanf(
line,
"%d %e", &index, &time)!=2)
584 if(index!=old_index+1)
595 for(m=0; m<signals_in_row; m++)
598 if(sig_tmp[sig_nr]!=NULL)
599 if(time==sig_tmp[sig_nr]->t)
608 for(m=0; m<signals_in_row; m++)
610 if(sscanf(&
line[k],
"%le", &sig_val)!=1)
614 if(sig_tmp[sig_nr]!=NULL)
615 if(time==sig_tmp[sig_nr]->t)
620 sig_tmp[sig_nr]->
phase=sig_val;
624 sig_tmp[sig_nr]->
val=sig_val;
627 sig_tmp[sig_nr]=sig_tmp[sig_nr]->
next;
659 if(pp->
val > last_pp->
val)
662 if(last_pp->
prev != NULL)
700 PHASE p10delta, pt0delta;
707 while(pp_phase!=NULL)
715 pp_phase->
t= t10delta*(pt0delta/p10delta) + pp_phase->
t_below;
723 pp_phase=pp_phase->
next;
740 strcpy(phase_filename, filename);
755 strcpy(phase_filename, filename);
772 strcpy(voltage_filename, filename);
822 while(tmp_check!=NULL)
824 next_check=tmp_check->
next;
826 tmp_check=next_check;
struct async_checkpoint * next
SIGNALS * collect_pulses_by_phase(char *filename)
SIGNALS * collect_edges(char *filename)
char(* jspice_phase_names)[NAME_LENGTH]
int skip_arg(char *line, int arg_num)
static SIGNALS * collect_pulses(char *filename, int method)
char(* signal_names)[NAME_LENGTH]
PHASE min_pulse_phase_diff
#define COLLECT_BY_VOLTAGE
SIGNALS * collect_pulses_by_voltage(char *filename)
static int read_line(FILE *fp, char *line, int *line_no)
static PHASE normalized_phase(PHASE p_val)
static int verify_phase(SIGNALS *sp)
int collect_values(SIGNALS *sp, char *filename, int collected)
static void add_signal_by_phase(SIGNALS *sp, int sig_num, double sig_val, TIME sig_time, int sig_index)
char phase_ext[NAME_LENGTH]
static void add_signal_by_voltage(SIGNALS *sp, int sig_num, double sig_val, TIME sig_time, int sig_index)
static char line[LONG_LINE_LENGTH]
static void remove_not_complete_pulses(SIGNALS *sp)
char(* jspice_voltage_names)[NAME_LENGTH]
ASYNC_CHECK * async_check_list
static int add_edge(SIGNALS *sp, int sig_num, double sig_val, TIME sig_time, double old_sig_val, TIME old_sig_time, int sig_index, int old_sig_index, int direction)
int interpolate_phase_thresh_time(SIGNALS *sp_phase)
void free_data(SIGNALS *sp)
static char filename[LINE_LENGTH]