FreeCalypso > hg > ueda-linux
annotate netdiff/convert/tedax2donl.c @ 138:77acb816727b
netdiff: donl-rename-parts put together
author | Mychaela Falconia <falcon@freecalypso.org> |
---|---|
date | Mon, 07 Sep 2020 04:02:14 +0000 |
parents | 6f528e2a9e23 |
children |
rev | line source |
---|---|
136
65f87111090c
netdiff: tedax2donl written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1 /* |
65f87111090c
netdiff: tedax2donl written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2 * This program converts a tEDAx netlist into our |
65f87111090c
netdiff: tedax2donl written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
3 * Diff-Oriented Netlist (DONL) format. |
65f87111090c
netdiff: tedax2donl written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
4 */ |
65f87111090c
netdiff: tedax2donl written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
5 |
65f87111090c
netdiff: tedax2donl written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
6 #include <ctype.h> |
65f87111090c
netdiff: tedax2donl written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
7 #include <stdio.h> |
65f87111090c
netdiff: tedax2donl written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
8 #include <stdlib.h> |
65f87111090c
netdiff: tedax2donl written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
9 #include <string.h> |
65f87111090c
netdiff: tedax2donl written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
10 #include <strings.h> |
65f87111090c
netdiff: tedax2donl written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
11 |
65f87111090c
netdiff: tedax2donl written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
12 #define MAX_FIELDS 32 |
65f87111090c
netdiff: tedax2donl written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
13 |
65f87111090c
netdiff: tedax2donl written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
14 static char *infname; |
65f87111090c
netdiff: tedax2donl written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
15 static FILE *inf; |
65f87111090c
netdiff: tedax2donl written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
16 static char linebuf[512]; |
65f87111090c
netdiff: tedax2donl written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
17 static int lineno; |
65f87111090c
netdiff: tedax2donl written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
18 static char *fields[MAX_FIELDS]; |
65f87111090c
netdiff: tedax2donl written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
19 static unsigned nfields; |
65f87111090c
netdiff: tedax2donl written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
20 |
65f87111090c
netdiff: tedax2donl written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
21 static |
65f87111090c
netdiff: tedax2donl written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
22 get_line() |
65f87111090c
netdiff: tedax2donl written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
23 { |
65f87111090c
netdiff: tedax2donl written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
24 if (!fgets(linebuf, sizeof linebuf, inf)) |
65f87111090c
netdiff: tedax2donl written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
25 return(0); |
65f87111090c
netdiff: tedax2donl written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
26 lineno++; |
65f87111090c
netdiff: tedax2donl written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
27 if (!index(linebuf, '\n')) { |
65f87111090c
netdiff: tedax2donl written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
28 fprintf(stderr, "%s line %d: missing newline\n", |
65f87111090c
netdiff: tedax2donl written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
29 infname, lineno); |
65f87111090c
netdiff: tedax2donl written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
30 exit(1); |
65f87111090c
netdiff: tedax2donl written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
31 } |
65f87111090c
netdiff: tedax2donl written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
32 return(1); |
65f87111090c
netdiff: tedax2donl written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
33 } |
65f87111090c
netdiff: tedax2donl written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
34 |
65f87111090c
netdiff: tedax2donl written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
35 static void |
65f87111090c
netdiff: tedax2donl written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
36 parse_into_fields() |
65f87111090c
netdiff: tedax2donl written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
37 { |
65f87111090c
netdiff: tedax2donl written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
38 char *cp; |
65f87111090c
netdiff: tedax2donl written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
39 |
65f87111090c
netdiff: tedax2donl written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
40 nfields = 0; |
65f87111090c
netdiff: tedax2donl written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
41 for (cp = linebuf; ; ) { |
65f87111090c
netdiff: tedax2donl written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
42 while (isspace(*cp)) |
65f87111090c
netdiff: tedax2donl written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
43 cp++; |
65f87111090c
netdiff: tedax2donl written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
44 if (*cp == '\0' || *cp == '#') |
65f87111090c
netdiff: tedax2donl written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
45 break; |
65f87111090c
netdiff: tedax2donl written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
46 if (nfields >= MAX_FIELDS) { |
65f87111090c
netdiff: tedax2donl written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
47 fprintf(stderr, "%s line %d: too many fields\n", |
65f87111090c
netdiff: tedax2donl written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
48 infname, lineno); |
65f87111090c
netdiff: tedax2donl written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
49 exit(1); |
65f87111090c
netdiff: tedax2donl written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
50 } |
65f87111090c
netdiff: tedax2donl written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
51 fields[nfields++] = cp; |
65f87111090c
netdiff: tedax2donl written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
52 while (*cp) { |
65f87111090c
netdiff: tedax2donl written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
53 if (isspace(*cp)) { |
65f87111090c
netdiff: tedax2donl written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
54 *cp++ = '\0'; |
65f87111090c
netdiff: tedax2donl written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
55 break; |
65f87111090c
netdiff: tedax2donl written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
56 } |
65f87111090c
netdiff: tedax2donl written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
57 if (*cp++ != '\\') |
65f87111090c
netdiff: tedax2donl written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
58 continue; |
65f87111090c
netdiff: tedax2donl written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
59 switch (*cp++) { |
65f87111090c
netdiff: tedax2donl written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
60 case '\\': |
65f87111090c
netdiff: tedax2donl written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
61 case 'n': |
65f87111090c
netdiff: tedax2donl written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
62 case 'r': |
65f87111090c
netdiff: tedax2donl written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
63 case 't': |
65f87111090c
netdiff: tedax2donl written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
64 case ' ': |
65f87111090c
netdiff: tedax2donl written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
65 case '\t': |
65f87111090c
netdiff: tedax2donl written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
66 continue; |
65f87111090c
netdiff: tedax2donl written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
67 default: |
65f87111090c
netdiff: tedax2donl written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
68 fprintf(stderr, "%s line %d: invalid escape\n", |
65f87111090c
netdiff: tedax2donl written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
69 infname, lineno); |
65f87111090c
netdiff: tedax2donl written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
70 exit(1); |
65f87111090c
netdiff: tedax2donl written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
71 } |
65f87111090c
netdiff: tedax2donl written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
72 } |
65f87111090c
netdiff: tedax2donl written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
73 } |
65f87111090c
netdiff: tedax2donl written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
74 } |
65f87111090c
netdiff: tedax2donl written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
75 |
65f87111090c
netdiff: tedax2donl written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
76 static void |
65f87111090c
netdiff: tedax2donl written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
77 get_tedax_header() |
65f87111090c
netdiff: tedax2donl written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
78 { |
65f87111090c
netdiff: tedax2donl written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
79 do { |
65f87111090c
netdiff: tedax2donl written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
80 if (!get_line()) { |
65f87111090c
netdiff: tedax2donl written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
81 fprintf(stderr, "%s: EOF before tEDAx header\n", |
65f87111090c
netdiff: tedax2donl written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
82 infname); |
65f87111090c
netdiff: tedax2donl written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
83 exit(1); |
65f87111090c
netdiff: tedax2donl written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
84 } |
65f87111090c
netdiff: tedax2donl written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
85 parse_into_fields(); |
65f87111090c
netdiff: tedax2donl written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
86 } while (!nfields); |
65f87111090c
netdiff: tedax2donl written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
87 if (strcmp(fields[0], "tEDAx")) { |
65f87111090c
netdiff: tedax2donl written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
88 fprintf(stderr, "%s line %d: expected tEDAx header\n", |
65f87111090c
netdiff: tedax2donl written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
89 infname, lineno); |
65f87111090c
netdiff: tedax2donl written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
90 exit(1); |
65f87111090c
netdiff: tedax2donl written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
91 } |
65f87111090c
netdiff: tedax2donl written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
92 if (nfields != 2 || strcmp(fields[1], "v1")) { |
65f87111090c
netdiff: tedax2donl written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
93 fprintf(stderr, "%s line %d: expected tEDAx v1\n", |
65f87111090c
netdiff: tedax2donl written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
94 infname, lineno); |
65f87111090c
netdiff: tedax2donl written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
95 exit(1); |
65f87111090c
netdiff: tedax2donl written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
96 } |
65f87111090c
netdiff: tedax2donl written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
97 } |
65f87111090c
netdiff: tedax2donl written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
98 |
65f87111090c
netdiff: tedax2donl written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
99 static void |
65f87111090c
netdiff: tedax2donl written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
100 skip_wrong_block() |
65f87111090c
netdiff: tedax2donl written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
101 { |
65f87111090c
netdiff: tedax2donl written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
102 for (;;) { |
65f87111090c
netdiff: tedax2donl written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
103 if (!get_line()) { |
65f87111090c
netdiff: tedax2donl written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
104 fprintf(stderr, |
65f87111090c
netdiff: tedax2donl written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
105 "%s: EOF in the middle of a skip block\n", |
137
6f528e2a9e23
tedax2donl works now
Mychaela Falconia <falcon@freecalypso.org>
parents:
136
diff
changeset
|
106 infname); |
136
65f87111090c
netdiff: tedax2donl written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
107 exit(1); |
65f87111090c
netdiff: tedax2donl written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
108 } |
137
6f528e2a9e23
tedax2donl works now
Mychaela Falconia <falcon@freecalypso.org>
parents:
136
diff
changeset
|
109 parse_into_fields(); |
136
65f87111090c
netdiff: tedax2donl written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
110 if (!nfields) |
65f87111090c
netdiff: tedax2donl written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
111 continue; |
65f87111090c
netdiff: tedax2donl written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
112 if (!strcmp(fields[0], "begin")) { |
65f87111090c
netdiff: tedax2donl written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
113 fprintf(stderr, "%s line %d: nested block beginning\n", |
65f87111090c
netdiff: tedax2donl written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
114 infname, lineno); |
65f87111090c
netdiff: tedax2donl written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
115 exit(1); |
65f87111090c
netdiff: tedax2donl written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
116 } |
65f87111090c
netdiff: tedax2donl written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
117 if (!strcmp(fields[0], "end")) |
65f87111090c
netdiff: tedax2donl written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
118 return; |
65f87111090c
netdiff: tedax2donl written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
119 } |
65f87111090c
netdiff: tedax2donl written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
120 } |
65f87111090c
netdiff: tedax2donl written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
121 |
65f87111090c
netdiff: tedax2donl written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
122 static void |
65f87111090c
netdiff: tedax2donl written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
123 find_begin_netlist() |
65f87111090c
netdiff: tedax2donl written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
124 { |
65f87111090c
netdiff: tedax2donl written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
125 for (;;) { |
65f87111090c
netdiff: tedax2donl written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
126 do { |
65f87111090c
netdiff: tedax2donl written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
127 if (!get_line()) { |
65f87111090c
netdiff: tedax2donl written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
128 fprintf(stderr, |
65f87111090c
netdiff: tedax2donl written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
129 "%s: EOF before beginning of netlist block\n", |
65f87111090c
netdiff: tedax2donl written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
130 infname); |
65f87111090c
netdiff: tedax2donl written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
131 exit(1); |
65f87111090c
netdiff: tedax2donl written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
132 } |
65f87111090c
netdiff: tedax2donl written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
133 parse_into_fields(); |
65f87111090c
netdiff: tedax2donl written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
134 } while (!nfields); |
65f87111090c
netdiff: tedax2donl written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
135 if (strcmp(fields[0], "begin")) { |
65f87111090c
netdiff: tedax2donl written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
136 fprintf(stderr, "%s line %d: expected begin line\n", |
65f87111090c
netdiff: tedax2donl written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
137 infname, lineno); |
65f87111090c
netdiff: tedax2donl written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
138 exit(1); |
65f87111090c
netdiff: tedax2donl written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
139 } |
65f87111090c
netdiff: tedax2donl written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
140 if (nfields != 4) { |
65f87111090c
netdiff: tedax2donl written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
141 fprintf(stderr, |
65f87111090c
netdiff: tedax2donl written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
142 "%s line %d: begin line has wrong number of fields\n", |
65f87111090c
netdiff: tedax2donl written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
143 infname, lineno); |
65f87111090c
netdiff: tedax2donl written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
144 exit(1); |
65f87111090c
netdiff: tedax2donl written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
145 } |
65f87111090c
netdiff: tedax2donl written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
146 if (!strcmp(fields[1], "netlist")) |
65f87111090c
netdiff: tedax2donl written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
147 break; |
65f87111090c
netdiff: tedax2donl written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
148 skip_wrong_block(); |
65f87111090c
netdiff: tedax2donl written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
149 } |
65f87111090c
netdiff: tedax2donl written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
150 if (strcmp(fields[2], "v1")) { |
65f87111090c
netdiff: tedax2donl written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
151 fprintf(stderr, |
65f87111090c
netdiff: tedax2donl written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
152 "%s line %d: netlist block has wrong version\n", |
65f87111090c
netdiff: tedax2donl written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
153 infname, lineno); |
65f87111090c
netdiff: tedax2donl written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
154 exit(1); |
65f87111090c
netdiff: tedax2donl written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
155 } |
65f87111090c
netdiff: tedax2donl written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
156 } |
65f87111090c
netdiff: tedax2donl written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
157 |
65f87111090c
netdiff: tedax2donl written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
158 static void |
65f87111090c
netdiff: tedax2donl written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
159 process_netlist_block() |
65f87111090c
netdiff: tedax2donl written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
160 { |
65f87111090c
netdiff: tedax2donl written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
161 for (;;) { |
65f87111090c
netdiff: tedax2donl written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
162 if (!get_line()) { |
65f87111090c
netdiff: tedax2donl written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
163 fprintf(stderr, |
65f87111090c
netdiff: tedax2donl written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
164 "%s: EOF in the middle of the netlist block\n", |
137
6f528e2a9e23
tedax2donl works now
Mychaela Falconia <falcon@freecalypso.org>
parents:
136
diff
changeset
|
165 infname); |
136
65f87111090c
netdiff: tedax2donl written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
166 exit(1); |
65f87111090c
netdiff: tedax2donl written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
167 } |
137
6f528e2a9e23
tedax2donl works now
Mychaela Falconia <falcon@freecalypso.org>
parents:
136
diff
changeset
|
168 parse_into_fields(); |
136
65f87111090c
netdiff: tedax2donl written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
169 if (!nfields) |
65f87111090c
netdiff: tedax2donl written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
170 continue; |
65f87111090c
netdiff: tedax2donl written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
171 if (!strcmp(fields[0], "begin")) { |
65f87111090c
netdiff: tedax2donl written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
172 fprintf(stderr, "%s line %d: nested block beginning\n", |
65f87111090c
netdiff: tedax2donl written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
173 infname, lineno); |
65f87111090c
netdiff: tedax2donl written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
174 exit(1); |
65f87111090c
netdiff: tedax2donl written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
175 } |
65f87111090c
netdiff: tedax2donl written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
176 if (!strcmp(fields[0], "end")) |
65f87111090c
netdiff: tedax2donl written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
177 return; |
65f87111090c
netdiff: tedax2donl written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
178 if (strcmp(fields[0], "conn")) |
65f87111090c
netdiff: tedax2donl written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
179 continue; |
65f87111090c
netdiff: tedax2donl written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
180 if (nfields != 4) { |
65f87111090c
netdiff: tedax2donl written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
181 fprintf(stderr, |
65f87111090c
netdiff: tedax2donl written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
182 "%s line %d: conn line has wrong number of fields\n", |
65f87111090c
netdiff: tedax2donl written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
183 infname, lineno); |
65f87111090c
netdiff: tedax2donl written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
184 exit(1); |
65f87111090c
netdiff: tedax2donl written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
185 } |
65f87111090c
netdiff: tedax2donl written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
186 printf("%s\t%s.%s\n", fields[1], fields[2], fields[3]); |
65f87111090c
netdiff: tedax2donl written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
187 } |
65f87111090c
netdiff: tedax2donl written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
188 } |
65f87111090c
netdiff: tedax2donl written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
189 |
65f87111090c
netdiff: tedax2donl written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
190 main(argc, argv) |
65f87111090c
netdiff: tedax2donl written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
191 char **argv; |
65f87111090c
netdiff: tedax2donl written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
192 { |
65f87111090c
netdiff: tedax2donl written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
193 if (argc != 2) { |
65f87111090c
netdiff: tedax2donl written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
194 fprintf(stderr, "usage: %s tedax-netlist-file\n", argv[0]); |
65f87111090c
netdiff: tedax2donl written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
195 exit(1); |
65f87111090c
netdiff: tedax2donl written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
196 } |
65f87111090c
netdiff: tedax2donl written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
197 infname = argv[1]; |
65f87111090c
netdiff: tedax2donl written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
198 inf = fopen(infname, "r"); |
65f87111090c
netdiff: tedax2donl written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
199 if (!inf) { |
65f87111090c
netdiff: tedax2donl written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
200 perror(infname); |
65f87111090c
netdiff: tedax2donl written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
201 exit(1); |
65f87111090c
netdiff: tedax2donl written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
202 } |
65f87111090c
netdiff: tedax2donl written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
203 get_tedax_header(); |
65f87111090c
netdiff: tedax2donl written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
204 find_begin_netlist(); |
65f87111090c
netdiff: tedax2donl written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
205 process_netlist_block(); |
65f87111090c
netdiff: tedax2donl written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
206 exit(0); |
65f87111090c
netdiff: tedax2donl written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
207 } |