malt-wr
init.c File Reference
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "constype.h"
#include "config.h"
#include "filenames.h"
#include "param.h"
Include dependency graph for init.c:

Go to the source code of this file.

Functions

void trademark ()
 
void command_line_error (char *filename)
 
void init_parameters ()
 
static int check_config_item (char *item_type, char **item_list, int item_num)
 
static int blank_line (char *line)
 
static void unrecognized_value (char *line, char *filename)
 
static void out_of_range (char *line, char *filename)
 
int read_config (char *filename)
 
static int check_option (char *option)
 
int read_options (int argc, char *argv[])
 
int generate_jspice_config ()
 
int file_copy (char *infilename, char *outfilename)
 

Variables

PARAMETERS param
 

Function Documentation

static int blank_line ( char *  line)
static

Definition at line 150 of file init.c.

151 {
152  int i=0, n=strlen(line);
153 
154  while(i<n)
155  {
156  if(!isspace(line[i++]))
157  return 0;
158  }
159  return 1;
160 }
static char line[LONG_LINE_LENGTH]
Definition: collect.c:7
static int check_config_item ( char *  item_type,
char **  item_list,
int  item_num 
)
static

Definition at line 132 of file init.c.

133 {
134  int i=0;
135  int not_found = 1;
136 
137  do
138  {
139  not_found = strcmp(item_type, item_list[i++]);
140  }
141  while(not_found && (i < item_num));
142 
143  if (!not_found)
144  return(i-1);
145  else
146  return(item_num + 1);
147 }
static int check_option ( char *  option)
static

Definition at line 819 of file init.c.

820 {
821  int k,n;
822  int jset=0;
823  int iset=0;
824 
825  if(option[0]!='-')
826  {
827  printf("Unrecognized option: %s\n", option);
828  return 0;
829  }
830 
831  n=strlen(option);
832  for(k=1; k<n; k++)
833  switch(option[k])
834  {
835  case 'm':
836  if(jset)
838  else
840  break;
841 
842  case 'h':
843  if(iset)
845  else {
847  if(jset)
849  }
850  break;
851 
852  case 'r':
854  if(jset)
856  break;
857 
858  case 's':
859  if(iset)
861  else {
863  if(jset)
865  }
866  break;
867 
868  case 'j':
869  jset=1;
870  break;
871 
872  case 'i':
873  iset=1;
874  break;
875 
876  case 'q':
878  break;
879 
880  case 'p':
882  break;
883 
884  case 'v':
886  break;
887 
888  case 'w':
890  break;
891 
892 
893 /*
894  case 'x':
895  if(jset)
896  param.input_options |= JX_SET;
897  else
898  {
899  printf("Unrecognized option: %s\n", option);
900  return 0;
901  }
902  break;
903 */
904 
905  case 'd':
906  if(iset)
908  else
909  {
910  printf("Unrecognized option: %s\n", option);
911  return 0;
912  }
913  break;
914 
915  case 'B':
917  break;
918 
919  default:
920  printf("Unrecognized option: %s\n", option);
921  return 0;
922  }
923 
924  return 1;
925 }
#define H_SET
Definition: constype.h:12
#define JR_SET
Definition: constype.h:17
#define JS_SET
Definition: constype.h:15
#define IS_SET
Definition: constype.h:31
#define BATCH_SET
Definition: constype.h:35
#define ID_SET
Definition: constype.h:29
int input_options
Definition: constype.h:199
#define R_SET
Definition: constype.h:16
#define P_SET
Definition: constype.h:23
#define Q_SET
Definition: constype.h:20
#define JH_SET
Definition: constype.h:13
#define M_SET
Definition: constype.h:10
PARAMETERS param
Definition: init.c:10
#define IH_SET
Definition: constype.h:30
#define V_SET
Definition: constype.h:21
#define W_SET
Definition: constype.h:33
#define JM_SET
Definition: constype.h:11
#define S_SET
Definition: constype.h:14
void command_line_error ( char *  filename)

Definition at line 27 of file init.c.

28 {
29  char help[NAME_LENGTH];
30 
31  /* set the line that will call display of the command line help */
32  strcpy(help, "more ");
33  strcat(help, filename);
34 
35  system(help);
36 }
#define NAME_LENGTH
Definition: constype.h:3
static char filename[LINE_LENGTH]
Definition: optimize.c:35
int file_copy ( char *  infilename,
char *  outfilename 
)

Definition at line 1136 of file init.c.

1137 {
1138  FILE *infp, *outfp;
1139  char line[LINE_LENGTH];
1140 
1141  infp=fopen(infilename,"r");
1142  if(infp==NULL)
1143  return 0;
1144  outfp=fopen(outfilename,"w");
1145  if(outfp==NULL)
1146  return 0;
1147 
1148  while(fgets(line, LINE_LENGTH, infp)!=NULL)
1149  fputs(line, outfp);
1150  fclose(infp);
1151  fclose(outfp);
1152  return 1;
1153 }
static char line[LONG_LINE_LENGTH]
Definition: collect.c:7
#define LINE_LENGTH
Definition: constype.h:4
int generate_jspice_config ( )

Definition at line 967 of file init.c.

968 {
969  FILE *fp;
970  int is_ws = (strstr(param.spice_name, "wrspice") != NULL);
971 
972  fp=fopen(JSPICE_CONFIG,"w");
973  if(fp == NULL)
974  {
975  printf("Cannot create %s configuration file %s.\n\n",
976  is_ws ? "wrspice" : "jspice", JSPICE_CONFIG);
977  return 0;
978  }
979 
980  if (is_ws) {
981  fprintf(fp, "set subc_catchar=\":\"\n");
982  fprintf(fp, "set subc_catmode=\"spice3\"\n\n");
983  }
984 
985  fprintf(fp, "set circuit = '%s'\n\n", param.circuit_name);
986 
987  fprintf(fp, "quiet = %d\n\n", ((param.input_options & Q_SET)?1:0));
988 
989  fprintf(fp, "set circext = '%s'\n", param.circuit_ext);
990  fprintf(fp, "set paramext = '%s'\n", param.param_ext);
991  fprintf(fp, "set printext = '%s'\n", param.print_ext);
992  fprintf(fp, "set passfailext = '%s'\n\n", param.passfail_ext);
993  fprintf(fp, "set checkext = '%s'\n", param.check_ext);
994 
995 #if 0
996  fprintf(fp, "set stepext = '%s'\n", param.step_ext);
997 #endif
998 
999  fprintf(fp, "set phasext = '%s'\n", param.phase_ext);
1000  fprintf(fp, "set avrext = '%s'\n", param.avr_ext);
1001  fprintf(fp, "set holdext = '%s'\n", param.hold_ext);
1002  fprintf(fp, "set setupext = '%s'\n", param.setup_ext);
1003  fprintf(fp, "set sepext = '%s'\n", param.separation_ext);
1004  fprintf(fp, "set goodext = '%s'\n", param.good_ext);
1005  fprintf(fp, "set badext = '%s'\n", param.bad_ext);
1006  fprintf(fp, "set tparext = '%s'\n\n", TPARAM_EXT);
1007  fprintf(fp, "set nomext = '%s'\n\n", param.nom_ext);
1008 
1009  fprintf(fp, "set reportext = '%s'\n\n", param.report_ext);
1010 
1011  fprintf(fp, "set input_dir = '%s'\n", param.input_dir);
1012  fprintf(fp, "set tmp_dir = '%s'\n", param.tmp_dir);
1013  fprintf(fp, "set output_dir = '%s'\n\n", param.output_dir);
1014 
1015  fprintf(fp, "failthres = %.2f\n", param.min_fail_thresh);
1016  fprintf(fp, "accuracy = %.5f\n", param.accuracy/100.0);
1017  fprintf(fp, "time_accuracy = %.5f\n", param.time_accuracy);
1018  fprintf(fp, "delay_variation = %.2f\n", param.max_delay_var);
1019  fprintf(fp, "check_inputs = %d\n", param.inputs_checked);
1020 
1021  fclose(fp);
1022 
1023  return 1;
1024 }
#define JSPICE_CONFIG
Definition: filenames.h:5
char good_ext[NAME_LENGTH]
Definition: constype.h:166
char circuit_name[NAME_LENGTH]
Definition: constype.h:184
char setup_ext[NAME_LENGTH]
Definition: constype.h:164
char output_dir[NAME_LENGTH]
Definition: constype.h:149
int input_options
Definition: constype.h:199
char param_ext[NAME_LENGTH]
Definition: constype.h:156
char bad_ext[NAME_LENGTH]
Definition: constype.h:167
TIME accuracy
Definition: constype.h:122
char report_ext[NAME_LENGTH]
Definition: constype.h:171
#define Q_SET
Definition: constype.h:20
PHASE min_fail_thresh
Definition: constype.h:119
char print_ext[NAME_LENGTH]
Definition: constype.h:157
char spice_name[NAME_LENGTH]
Definition: constype.h:152
char hold_ext[NAME_LENGTH]
Definition: constype.h:163
char phase_ext[NAME_LENGTH]
Definition: constype.h:159
TIME time_accuracy
Definition: constype.h:125
char avr_ext[NAME_LENGTH]
Definition: constype.h:162
char input_dir[NAME_LENGTH]
Definition: constype.h:143
PARAMETERS param
Definition: init.c:10
#define TPARAM_EXT
Definition: param.h:26
char step_ext[NAME_LENGTH]
Definition: constype.h:160
char check_ext[NAME_LENGTH]
Definition: constype.h:161
TIME max_delay_var
Definition: constype.h:129
char separation_ext[NAME_LENGTH]
Definition: constype.h:165
char circuit_ext[NAME_LENGTH]
Definition: constype.h:155
char tmp_dir[NAME_LENGTH]
Definition: constype.h:146
int inputs_checked
Definition: constype.h:139
char passfail_ext[NAME_LENGTH]
Definition: constype.h:158
char nom_ext[NAME_LENGTH]
Definition: constype.h:174
void init_parameters ( )

Definition at line 39 of file init.c.

40 {
42 
43  param.maxplane = 50000;
44  param.maxiter = 100;
45  param.miniter = 10;
51 
54 
62 
63  strcpy(param.spice_name, JSPICE_CALL);
64  strcpy(param.input_dir, INPUT_DIR);
65  strcpy(param.tmp_dir, TMP_DIR);
66  strcpy(param.output_dir, OUTPUT_DIR);
67 
68  strcpy(param.circuit_ext, CIRCUIT_EXT);
69  strcpy(param.param_ext, PARAM_EXT);
70  strcpy(param.print_ext, PRINT_EXT);
71  strcpy(param.step_ext, STEP_EXT);
72  strcpy(param.check_ext, CHECK_EXT);
73  strcpy(param.avr_ext, AVR_EXT);
74  strcpy(param.hold_ext, HOLD_EXT);
75  strcpy(param.setup_ext, SETUP_EXT);
77  strcpy(param.good_ext, GOOD_EXT);
78  strcpy(param.bad_ext, BAD_EXT);
79  strcpy(param.logic_ext, LOGIC_EXT);
80  strcpy(param.hose_ext, HOLDSETUP_EXT);
81  strcpy(param.report_ext, REPORT_EXT);
83  strcpy(param.comp_ext, VALUE_COMP_EXT);
84  strcpy(param.phase_ext, PHASE_EXT);
85  strcpy(param.nom_ext, NOMINAL_EXT);
86  strcpy(param.init_ext, INIT_EXT);
88  strcpy(param.marg_ext, MARGIN_EXT);
89  strcpy(param.bound_ext, BOUNDARY_EXT);
90  strcpy(param.opt_ext, OPT_EXT);
91  strcpy(param.region_ext, REGION_EXT);
93  strcpy(param.signal_ext, SIGNAL_EXT);
94 
104 }
char logic_ext[NAME_LENGTH]
Definition: constype.h:168
double avr_one_volt
Definition: constype.h:204
#define SETUP_EXT
Definition: param.h:35
#define INIT_EXT
Definition: param.h:28
char good_ext[NAME_LENGTH]
Definition: constype.h:166
char hose_ext[NAME_LENGTH]
Definition: constype.h:170
#define BOUNDARY_EXT
Definition: param.h:42
#define PASS_FAIL_THRESHOLD
Definition: param.h:11
#define CHECKING_RATIO
Definition: param.h:12
#define TMP_DIR
Definition: param.h:19
#define CHECK_EXT
Definition: param.h:32
#define VOLTAGE_THRESHOLD
Definition: param.h:7
double max_zero_volt
Definition: constype.h:211
char setup_ext[NAME_LENGTH]
Definition: constype.h:164
char output_dir[NAME_LENGTH]
Definition: constype.h:149
int input_options
Definition: constype.h:199
#define LATCH_CHECK_INT
Definition: param.h:64
#define LATCH_CHECKRATIO
Definition: param.h:67
float checkpoint_ratio
Definition: constype.h:115
int interpolate
Definition: constype.h:99
#define MAX_DELAY_VARIATION
Definition: param.h:15
#define PHASE_THRESHOLD
Definition: param.h:1
char param_ext[NAME_LENGTH]
Definition: constype.h:156
#define PRINT_EXT
Definition: param.h:27
#define TIMEINIT_EXT
Definition: param.h:56
char bad_ext[NAME_LENGTH]
Definition: constype.h:167
#define AVR_EXT
Definition: param.h:34
char signal_ext[NAME_LENGTH]
Definition: constype.h:181
#define PHASE_THRESHOLD_MIN
Definition: param.h:9
char timeinit_ext[NAME_LENGTH]
Definition: constype.h:180
TIME accuracy
Definition: constype.h:122
#define COLLECT_BY_PHASE
Definition: constype.h:44
int miniter
Definition: constype.h:71
PHASE min_pulse_phase_diff
Definition: constype.h:111
PHASE min_phase_thresh
Definition: constype.h:86
TIME min_checks_interval
Definition: constype.h:221
char report_ext[NAME_LENGTH]
Definition: constype.h:171
PHASE min_fail_thresh
Definition: constype.h:119
#define MIN_PHASE_THRESHOLD
Definition: param.h:3
#define CIRCUIT_EXT
Definition: param.h:24
char print_ext[NAME_LENGTH]
Definition: constype.h:157
#define GOOD_EXT
Definition: param.h:37
PHASE nom_phase_thresh
Definition: constype.h:82
#define LATCH_ONE_VOLT
Definition: param.h:60
#define PASSFAIL_EXT
Definition: param.h:29
TIME min_interval_to_falledge
Definition: constype.h:229
double min_one_volt
Definition: constype.h:214
#define MINIMUM_STEP
Definition: param.h:16
char init_ext[NAME_LENGTH]
Definition: constype.h:175
char spice_name[NAME_LENGTH]
Definition: constype.h:152
char hold_ext[NAME_LENGTH]
Definition: constype.h:163
#define DEFAULT_TIME_ACCURACY
Definition: param.h:14
#define MAX_PHASE_THRESHOLD
Definition: param.h:4
#define LATCH_EDGE_INT
Definition: param.h:65
#define LATCH_MIN_EDGE_INT
Definition: param.h:66
int min_time_step
Definition: constype.h:136
TIME min_interval_to_riseedge
Definition: constype.h:225
#define INTERPOLATE_EXT
Definition: param.h:55
char phase_ext[NAME_LENGTH]
Definition: constype.h:159
TIME time_accuracy
Definition: constype.h:125
char avr_ext[NAME_LENGTH]
Definition: constype.h:162
char input_dir[NAME_LENGTH]
Definition: constype.h:143
char comp_ext[NAME_LENGTH]
Definition: constype.h:173
#define NOMINAL_EXT
Definition: param.h:40
PARAMETERS param
Definition: init.c:10
#define REPORT_EXT
Definition: param.h:51
char marg_ext[NAME_LENGTH]
Definition: constype.h:176
#define BAD_EXT
Definition: param.h:39
#define PHASE_EXT
Definition: param.h:33
#define STEP_EXT
Definition: param.h:31
int pulse_extraction_method
Definition: constype.h:78
VOLTAGE volt_thresh
Definition: constype.h:103
char step_ext[NAME_LENGTH]
Definition: constype.h:160
char check_ext[NAME_LENGTH]
Definition: constype.h:161
char period_ext[NAME_LENGTH]
Definition: constype.h:172
double nom_edge_thresh
Definition: constype.h:208
TIME max_delay_var
Definition: constype.h:129
char separation_ext[NAME_LENGTH]
Definition: constype.h:165
#define INPUT_DIR
Definition: param.h:18
#define PARAM_EXT
Definition: param.h:25
char circuit_ext[NAME_LENGTH]
Definition: constype.h:155
#define HOLDSETUP_EXT
Definition: param.h:50
char tmp_dir[NAME_LENGTH]
Definition: constype.h:146
int maxiter
Definition: constype.h:68
#define SEPARATION_EXT
Definition: param.h:38
double clk_chktime_ratio
Definition: constype.h:234
#define SIGNAL_EXT
Definition: param.h:46
#define LATCH_MIN_ONE
Definition: param.h:62
char bound_ext[NAME_LENGTH]
Definition: constype.h:178
PHASE max_phase_thresh
Definition: constype.h:90
TIME min_edge_sep
Definition: constype.h:218
#define JSPICE_CALL
Definition: param.h:22
char region_ext[NAME_LENGTH]
Definition: constype.h:179
#define OUTPUT_DIR
Definition: param.h:20
int inputs_checked
Definition: constype.h:139
#define DEFAULT_ACCURACY
Definition: param.h:13
#define OPT_EXT
Definition: param.h:43
#define REGION_EXT
Definition: param.h:44
char opt_ext[NAME_LENGTH]
Definition: constype.h:177
int maxplane
Definition: constype.h:65
#define INTERPOLATION
Definition: param.h:5
#define LATCH_MAX_ZERO
Definition: param.h:63
#define MARGIN_EXT
Definition: param.h:41
#define VALUE_COMP_EXT
Definition: param.h:54
char passfail_ext[NAME_LENGTH]
Definition: constype.h:158
#define LOGIC_EXT
Definition: param.h:48
#define LATCH_THRESHOLD
Definition: param.h:61
char nom_ext[NAME_LENGTH]
Definition: constype.h:174
#define HOLD_EXT
Definition: param.h:36
static void out_of_range ( char *  line,
char *  filename 
)
static

Definition at line 170 of file init.c.

171 {
172  printf("Parameter out of range in %s:\n%s\n\n",
173  filename, line);
174 }
static char line[LONG_LINE_LENGTH]
Definition: collect.c:7
static char filename[LINE_LENGTH]
Definition: optimize.c:35
int read_config ( char *  filename)

Definition at line 189 of file init.c.

190 {
191  char config_item[NAME_LENGTH], eq[NAME_LENGTH], item[NAME_LENGTH];
192  char in_buffer[LINE_LENGTH];
193  FILE *fp;
194  float fvalue;
195  int ivalue;
196  int no_error=1;
197 
198 
199  if((fp = fopen(filename, "r"))==NULL)
200  {
201  printf("Warning !!!\nCannot open configuration file %s.\n\n", filename);
202  return 0;
203  }
204 
205  while(fgets(in_buffer, LINE_LENGTH, fp)!=NULL)
206  {
207  if(in_buffer[0]=='*')
208  continue;
209 
210  if(blank_line(in_buffer))
211  continue;
212 
213 {
214 /* SRW ** Here's an alternate tokenizer that allows interior white space
215  in the right side. It alsl makes space arount '=' optional.
216  This makes it possible to pass arguments to spice_name.
217 */
218 
219  char *b = in_buffer;
220  char *s = config_item;
221  while (isspace(*b))
222  b++;
223  while (*b && !isspace(*b) && *b != '=')
224  *s++ = *b++;
225  *s = 0;
226  while (isspace(*b) || *b == '=')
227  b++;
228  if (!*b || !*config_item) {
229  printf("Unrecognized line in %s:\n%s\n\n", filename, in_buffer);
230  no_error = 0;
231  continue;
232  }
233  strncpy(item, b, NAME_LENGTH);
234  item[NAME_LENGTH-1] = 0;
235  s = item + strlen(item) - 1;
236  while (s >= item && isspace(*s))
237  *s-- = 0;
238 }
239 /*
240  if(sscanf(in_buffer, "%s%s%s", config_item, eq, item)!=3)
241  {
242  printf("Unrecognized line in %s:\n%s\n\n", filename, in_buffer);
243  no_error = 0;
244  continue;
245  }
246 
247  if(strcmp(eq, "=") != 0)
248  {
249  printf("Unrecognized line in %s:\n%s\n\n", filename, in_buffer);
250  no_error = 0;
251  continue;
252  }
253 */
254 
255  switch(check_config_item(config_item, config_item_list, CONFIG_ITEM_NUM))
256  {
258  if(strcmp(item, "PT")==0)
260  else
261  if(strcmp(item, "VP")==0)
263  else
264  {
265  unrecognized_value(in_buffer, filename);
266  no_error = 0;
267  }
268  break;
269 
270  case PH_THR_NOM_CONFIG:
271  if(sscanf(item, "%f", &fvalue)!=1)
272  {
273  unrecognized_value(in_buffer, filename);
274  no_error = 0;
275  }
276  else
277  if((fvalue<0.0) || (fvalue>2.0))
278  {
279  out_of_range(in_buffer, filename);
280  no_error = 0;
281  }
282  else
283  param.nom_phase_thresh=fvalue*M_PI;
284  break;
285 
286  case PH_THR_MIN_CONFIG:
287  if(sscanf(item, "%f", &fvalue)!=1)
288  {
289  unrecognized_value(in_buffer, filename);
290  no_error = 0;
291  }
292  else
293  if((fvalue<0.0) || (fvalue>2.0))
294  {
295  out_of_range(in_buffer, filename);
296  no_error = 0;
297  }
298  else
299  param.min_phase_thresh=fvalue*M_PI;
300  break;
301 
302  case PH_THR_MAX_CONFIG:
303  if(sscanf(item, "%f", &fvalue)!=1)
304  {
305  unrecognized_value(in_buffer, filename);
306  no_error = 0;
307  }
308  else
309  if((fvalue<0.0) || (fvalue>2.0))
310  {
311  out_of_range(in_buffer, filename);
312  no_error = 0;
313  }
314  else
315  param.max_phase_thresh=fvalue*M_PI;
316  break;
317 
318  case INTERPOL_CONFIG:
319  if(strcmp(item, "YES")==0)
320  param.interpolate = 1;
321  else
322  if(strcmp(item, "NO")==0)
323  param.interpolate = 0;
324  else
325  {
326  unrecognized_value(in_buffer, filename);
327  no_error = 0;
328  }
329  break;
330 
331  case VOLT_THR_CONFIG:
332  if(sscanf(item, "%f", &fvalue)!=1)
333  {
334  unrecognized_value(in_buffer, filename);
335  no_error = 0;
336  }
337  else
338  param.volt_thresh=fvalue*1e-6;
339  break;
340 
341  case MAXPLANE_CONFIG:
342  if(sscanf(item, "%d", &ivalue)!=1)
343  {
344  unrecognized_value(in_buffer, filename);
345  no_error = 0;
346  }
347  else
348  param.maxplane=ivalue;
349  break;
350 
351  case MAXITER_CONFIG:
352  if(sscanf(item, "%d", &ivalue)!=1)
353  {
354  unrecognized_value(in_buffer, filename);
355  no_error = 0;
356  }
357  else
358  param.maxiter=ivalue;
359  break;
360 
361  case MINITER_CONFIG:
362  if(sscanf(item, "%d", &ivalue)!=1)
363  {
364  unrecognized_value(in_buffer, filename);
365  no_error = 0;
366  }
367  else
368  param.miniter=ivalue;
369  break;
370 
371  case MIN_PH_DIFF_CONFIG:
372  if(sscanf(item, "%f", &fvalue)!=1)
373  {
374  unrecognized_value(in_buffer, filename);
375  no_error = 0;
376  }
377  else
378  if((fvalue<0.0) || (fvalue>2.0))
379  {
380  out_of_range(in_buffer, filename);
381  no_error = 0;
382  }
383  else
384  param.min_pulse_phase_diff=fvalue*M_PI;
385  break;
386 
387  case ACCURACY_CONFIG:
388  if(sscanf(item, "%f", &fvalue)!=1)
389  {
390  unrecognized_value(in_buffer, filename);
391  no_error = 0;
392  }
393  else
394  param.accuracy=fvalue;
395  break;
396 
398  if(sscanf(item, "%f", &fvalue)!=1)
399  {
400  unrecognized_value(in_buffer, filename);
401  no_error = 0;
402  }
403  else
404  param.time_accuracy=fvalue;
405  break;
406 
407  case MAX_DEL_VAR_CONFIG:
408  if(sscanf(item, "%f", &fvalue)!=1)
409  {
410  unrecognized_value(in_buffer, filename);
411  no_error = 0;
412  }
413  else
414  param.max_delay_var=fvalue;
415  break;
416 
418  if(sscanf(item, "%f", &fvalue)!=1)
419  {
420  unrecognized_value(in_buffer, filename);
421  no_error = 0;
422  }
423  else
424  param.min_time_step=fvalue;
425  break;
426 
427  case CHECK_RATIO_CONFIG:
428  if(sscanf(item, "%f", &fvalue)!=1)
429  {
430  unrecognized_value(in_buffer, filename);
431  no_error = 0;
432  }
433  else
434  if((fvalue<0.0) || (fvalue>1.0))
435  {
436  out_of_range(in_buffer, filename);
437  no_error = 0;
438  }
439  else
440  param.checkpoint_ratio=fvalue;
441  break;
442 
443  case FAIL_THR_CONFIG:
444  if(sscanf(item, "%f", &fvalue)!=1)
445  {
446  unrecognized_value(in_buffer, filename);
447  no_error = 0;
448  }
449  else
450  if((fvalue<0.0) || (fvalue>2*M_PI))
451  {
452  out_of_range(in_buffer, filename);
453  no_error = 0;
454  }
455  else
456  param.min_fail_thresh=fvalue;
457  break;
458 
459  case IN_CHECK_CONFIG:
460  if(strcmp(item, "YES")==0)
461  param.inputs_checked = 1;
462  else
463  if(strcmp(item, "NO")==0)
464  param.inputs_checked = 0;
465  else
466  {
467  unrecognized_value(in_buffer, filename);
468  no_error = 0;
469  }
470  break;
471 
472  case IN_CONFIG:
473  strcpy(param.input_dir, item);
474  if(item[strlen(item)-1]!='/')
475  strcat(param.input_dir, "/");
476  break;
477 
478  case TMP_CONFIG:
479  strcpy(param.tmp_dir, item);
480  if(item[strlen(item)-1]!='/')
481  strcat(param.tmp_dir, "/");
482  break;
483 
484  case OUT_CONFIG:
485  strcpy(param.output_dir, item);
486  if(item[strlen(item)-1]!='/')
487  strcat(param.output_dir, "/");
488  break;
489 
490  case SPICE_CONFIG:
491  strcpy(param.spice_name, item);
492  break;
493 
494  case CIRC_CONFIG:
495  strcpy(param.circuit_ext, item);
496  break;
497 
498  case PARAM_CONFIG:
499  strcpy(param.param_ext, item);
500  break;
501 
502  case CHECK_CONFIG:
503  strcpy(param.check_ext, item);
504  break;
505 
506  case STEP_CONFIG:
507  strcpy(param.step_ext, item);
508  break;
509 
510  case PRINT_CONFIG:
511  strcpy(param.print_ext, item);
512  break;
513 
514  case MID_CONFIG:
515  strcpy(param.avr_ext, item);
516  break;
517 
518  case PHASE_CONFIG:
519  strcpy(param.phase_ext, item);
520  break;
521 
522  case SETUP_CONFIG:
523  strcpy(param.setup_ext, item);
524  break;
525 
526  case HOLD_CONFIG:
527  strcpy(param.hold_ext, item);
528  break;
529 
530  case SEPARATION_CONFIG:
531  strcpy(param.separation_ext, item);
532  break;
533 
534  case GOOD_CONFIG:
535  strcpy(param.good_ext, item);
536  break;
537 
538  case BAD_CONFIG:
539  strcpy(param.bad_ext, item);
540  break;
541 
542  case LOGIC_CONFIG:
543  strcpy(param.logic_ext, item);
544  break;
545 
546  case HOSE_CONFIG:
547  strcpy(param.hose_ext, item);
548  break;
549 
550  case REPORT_CONFIG:
551  strcpy(param.report_ext, item);
552  break;
553 
554  case NOMINAL_CONFIG:
555  strcpy(param.nom_ext, item);
556  break;
557 
558  case INIT_CONFIG:
559  strcpy(param.init_ext, item);
560  break;
561 
562  case PASSFAIL_CONFIG:
563  strcpy(param.passfail_ext, item);
564  break;
565 
566  case MARGINS_CONFIG:
567  strcpy(param.marg_ext, item);
568  break;
569 
570  case BOUNDARY_CONFIG:
571  strcpy(param.bound_ext, item);
572  break;
573 
574  case OPTIMIZE_CONFIG:
575  strcpy(param.opt_ext, item);
576  break;
577 
578  case REGION_CONFIG:
579  strcpy(param.region_ext, item);
580  break;
581 
582  case SIGNAL_CONFIG:
583  strcpy(param.signal_ext, item);
584  break;
585 
586  case ONE_VOLTAGE_CONFIG:
587  if(sscanf(item, "%f", &fvalue)!=1)
588  {
589  unrecognized_value(in_buffer, filename);
590  no_error = 0;
591  }
592  param.avr_one_volt=fvalue*1.0e-3;
593  break;
594 
595 
596  case THRESHOLD_CONFIG:
597  if(sscanf(item, "%f", &fvalue)!=1)
598  {
599  unrecognized_value(in_buffer, filename);
600  no_error = 0;
601  }
602  param.nom_edge_thresh=fvalue;
603  break;
604 
605 
606  case MAX_ZERO_CONFIG:
607  if(sscanf(item, "%f", &fvalue)!=1)
608  {
609  unrecognized_value(in_buffer, filename);
610  no_error = 0;
611  }
612  param.max_zero_volt=fvalue;
613  break;
614 
615  case MIN_ONE_CONFIG:
616  if(sscanf(item, "%f", &fvalue)!=1)
617  {
618  unrecognized_value(in_buffer, filename);
619  no_error = 0;
620  }
621  param.min_one_volt=fvalue;
622  break;
623 
624  case CHECK_INT_CONFIG:
625  if(sscanf(item, "%f", &fvalue)!=1)
626  {
627  unrecognized_value(in_buffer, filename);
628  no_error = 0;
629  }
630  param.min_checks_interval=fvalue*1.0e-12;
631  break;
632 
634  if(sscanf(item, "%f", &fvalue)!=1)
635  {
636  unrecognized_value(in_buffer, filename);
637  no_error = 0;
638  }
639  param.min_interval_to_riseedge=fvalue*1.0e-12;
640  break;
641 
643  if(sscanf(item, "%f", &fvalue)!=1)
644  {
645  unrecognized_value(in_buffer, filename);
646  no_error = 0;
647  }
648  param.min_interval_to_falledge=fvalue*1.0e-12;
649  break;
650 
652  if(sscanf(item, "%f", &fvalue)!=1)
653  {
654  unrecognized_value(in_buffer, filename);
655  no_error = 0;
656  }
657  param.min_edge_sep=fvalue*1.0e-12;
658  break;
659 
661  if(sscanf(item, "%f", &fvalue)!=1)
662  {
663  unrecognized_value(in_buffer, filename);
664  no_error = 0;
665  }
666  param.clk_chktime_ratio=fvalue;
667  break;
668 
669 
670  default:
671  printf("Unknown option in %s:\n%s\n\n", filename, in_buffer);
672  no_error = 0;
673  break;
674  }
675  }
676 
677  fclose(fp);
678 
682 
683  return no_error;
684 }
#define BAD_CONFIG
Definition: config.h:108
char logic_ext[NAME_LENGTH]
Definition: constype.h:168
double avr_one_volt
Definition: constype.h:204
#define REPORT_CONFIG
Definition: config.h:111
char good_ext[NAME_LENGTH]
Definition: constype.h:166
#define HOSE_CONFIG
Definition: config.h:110
#define ACCURACY_CONFIG
Definition: config.h:113
char hose_ext[NAME_LENGTH]
Definition: constype.h:170
#define HOLD_CONFIG
Definition: config.h:106
double max_zero_volt
Definition: constype.h:211
#define PLS_EXTR_MTHD_CONFIG
Definition: config.h:86
char setup_ext[NAME_LENGTH]
Definition: constype.h:164
char output_dir[NAME_LENGTH]
Definition: constype.h:149
#define PH_THR_NOM_CONFIG
Definition: config.h:87
#define ONE_VOLTAGE_CONFIG
Definition: config.h:138
float checkpoint_ratio
Definition: constype.h:115
int interpolate
Definition: constype.h:99
#define SETUP_CONFIG
Definition: config.h:105
char param_ext[NAME_LENGTH]
Definition: constype.h:156
#define PH_THR_MAX_CONFIG
Definition: config.h:89
char bad_ext[NAME_LENGTH]
Definition: constype.h:167
static int check_config_item(char *item_type, char **item_list, int item_num)
Definition: init.c:132
char signal_ext[NAME_LENGTH]
Definition: constype.h:181
TIME accuracy
Definition: constype.h:122
#define CHECK_INT_CONFIG
Definition: config.h:133
#define INTEREDGE_INT_CONFIG
Definition: config.h:136
#define COLLECT_BY_PHASE
Definition: constype.h:44
int miniter
Definition: constype.h:71
static void out_of_range(char *line, char *filename)
Definition: init.c:170
PHASE min_pulse_phase_diff
Definition: constype.h:111
PHASE min_phase_thresh
Definition: constype.h:86
TIME min_checks_interval
Definition: constype.h:221
char report_ext[NAME_LENGTH]
Definition: constype.h:171
#define CIRC_CONFIG
Definition: config.h:99
PHASE min_fail_thresh
Definition: constype.h:119
#define PHASE_CONFIG
Definition: config.h:104
#define VOLT_THR_CONFIG
Definition: config.h:91
#define COLLECT_BY_VOLTAGE
Definition: constype.h:45
#define IN_CHECK_CONFIG
Definition: config.h:114
char print_ext[NAME_LENGTH]
Definition: constype.h:157
static int blank_line(char *line)
Definition: init.c:150
PHASE nom_phase_thresh
Definition: constype.h:82
#define CHECK_RATIO_CONFIG
Definition: config.h:93
#define NAME_LENGTH
Definition: constype.h:3
#define INTERPOL_CONFIG
Definition: config.h:90
TIME min_interval_to_falledge
Definition: constype.h:229
#define SPICE_CONFIG
Definition: config.h:98
double min_one_volt
Definition: constype.h:214
char init_ext[NAME_LENGTH]
Definition: constype.h:175
#define MAX_ZERO_CONFIG
Definition: config.h:131
char spice_name[NAME_LENGTH]
Definition: constype.h:152
char hold_ext[NAME_LENGTH]
Definition: constype.h:163
#define REGION_CONFIG
Definition: config.h:123
#define IN_CONFIG
Definition: config.h:95
int min_time_step
Definition: constype.h:136
#define FAIL_THR_CONFIG
Definition: config.h:94
TIME min_interval_to_riseedge
Definition: constype.h:225
#define OUT_CONFIG
Definition: config.h:97
char phase_ext[NAME_LENGTH]
Definition: constype.h:159
#define MARGINS_CONFIG
Definition: config.h:120
TIME time_accuracy
Definition: constype.h:125
char avr_ext[NAME_LENGTH]
Definition: constype.h:162
#define GOOD_CONFIG
Definition: config.h:107
char input_dir[NAME_LENGTH]
Definition: constype.h:143
#define TIME_ACCURACY_CONFIG
Definition: config.h:128
#define MINITER_CONFIG
Definition: config.h:127
PARAMETERS param
Definition: init.c:10
#define PRINT_CONFIG
Definition: config.h:101
char marg_ext[NAME_LENGTH]
Definition: constype.h:176
#define MAXPLANE_CONFIG
Definition: config.h:125
#define LINE_LENGTH
Definition: constype.h:4
int pulse_extraction_method
Definition: constype.h:78
VOLTAGE volt_thresh
Definition: constype.h:103
char step_ext[NAME_LENGTH]
Definition: constype.h:160
#define MID_CONFIG
Definition: config.h:112
char check_ext[NAME_LENGTH]
Definition: constype.h:161
double nom_edge_thresh
Definition: constype.h:208
TIME max_delay_var
Definition: constype.h:129
char separation_ext[NAME_LENGTH]
Definition: constype.h:165
char circuit_ext[NAME_LENGTH]
Definition: constype.h:155
#define TMP_CONFIG
Definition: config.h:96
#define CONFIG_ITEM_NUM
Definition: config.h:78
#define SIGNAL_CONFIG
Definition: config.h:129
#define MAX_DEL_VAR_CONFIG
Definition: config.h:115
char tmp_dir[NAME_LENGTH]
Definition: constype.h:146
#define PH_THR_MIN_CONFIG
Definition: config.h:88
int maxiter
Definition: constype.h:68
#define STEP_CONFIG
Definition: config.h:102
#define MAXITER_CONFIG
Definition: config.h:126
double clk_chktime_ratio
Definition: constype.h:234
#define RISEEDGE_CHECK_INT_CONFIG
Definition: config.h:134
#define MIN_PH_DIFF_CONFIG
Definition: config.h:92
char bound_ext[NAME_LENGTH]
Definition: constype.h:178
static char * config_item_list[]
Definition: config.h:21
PHASE max_phase_thresh
Definition: constype.h:90
#define INIT_CONFIG
Definition: config.h:118
TIME min_edge_sep
Definition: constype.h:218
char region_ext[NAME_LENGTH]
Definition: constype.h:179
#define SEPARATION_CONFIG
Definition: config.h:124
int inputs_checked
Definition: constype.h:139
#define PARAM_CONFIG
Definition: config.h:100
#define BOUNDARY_CONFIG
Definition: config.h:121
#define MIN_ONE_CONFIG
Definition: config.h:132
#define OPTIMIZE_CONFIG
Definition: config.h:122
char opt_ext[NAME_LENGTH]
Definition: constype.h:177
int maxplane
Definition: constype.h:65
static void unrecognized_value(char *line, char *filename)
Definition: init.c:163
#define CLK_CHECKTIME_CONFIG
Definition: config.h:137
#define FALLEDGE_CHECK_INT_CONFIG
Definition: config.h:135
#define THRESHOLD_CONFIG
Definition: config.h:130
static char filename[LINE_LENGTH]
Definition: optimize.c:35
#define NOMINAL_CONFIG
Definition: config.h:117
char passfail_ext[NAME_LENGTH]
Definition: constype.h:158
#define PASSFAIL_CONFIG
Definition: config.h:119
#define MIN_TIME_STEP_CONFIG
Definition: config.h:116
char nom_ext[NAME_LENGTH]
Definition: constype.h:174
#define LOGIC_CONFIG
Definition: config.h:109
#define CHECK_CONFIG
Definition: config.h:103
int read_options ( int  argc,
char *  argv[] 
)

Definition at line 929 of file init.c.

930 {
931  int i, ret_val=1;
932  int iset=0;
933 
934  if(argc < 2)
935  return 0;
936 
937  for(i=1; i<argc-1; i++)
938  {
939  if(!check_option(argv[i]))
940  ret_val=0;
941  if((param.input_options & I_SET) && (!iset))
942  {
943  strcpy(param.circuit_name, argv[argc-2]);
944  strcpy(param.opt_num, argv[argc-1]);
945  iset=1;
946  argc--;
947  }
948  }
949 
950  if(!iset)
951  strcpy(param.circuit_name, argv[argc-1]);
952 
954  {
957 
960  }
961 
962  return ret_val;
963 }
char circuit_name[NAME_LENGTH]
Definition: constype.h:184
int input_options
Definition: constype.h:199
#define COLLECT_BY_PHASE
Definition: constype.h:44
#define P_SET
Definition: constype.h:23
#define COLLECT_BY_VOLTAGE
Definition: constype.h:45
char opt_num[NAME_LENGTH]
Definition: constype.h:196
#define I_SET
Definition: constype.h:36
PARAMETERS param
Definition: init.c:10
int pulse_extraction_method
Definition: constype.h:78
#define V_SET
Definition: constype.h:21
static int check_option(char *option)
Definition: init.c:819
void trademark ( )

Definition at line 12 of file init.c.

13 {
14  printf(" TAN - Timing Analyzer, v1.0\n");
15  printf("Kris & Quentin - April 1, 1995\n\n");
16 }
static void unrecognized_value ( char *  line,
char *  filename 
)
static

Definition at line 163 of file init.c.

164 {
165  printf("Unrecognized value of parameter in %s:\n%s\n\n",
166  filename, line);
167 }
static char line[LONG_LINE_LENGTH]
Definition: collect.c:7
static char filename[LINE_LENGTH]
Definition: optimize.c:35

Variable Documentation

PARAMETERS param

Definition at line 10 of file init.c.