Subversion Repositories Vertical

Rev

Go to most recent revision | Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
2 mjames 1
/* pads_main*/
2
/* $Id: pads_main.c,v 1.1.1.1 2003/11/04 23:34:58 mjames Exp $
3
 *
4
 * $Log: pads_main.c,v $
5
 * Revision 1.1.1.1  2003/11/04 23:34:58  mjames
6
 * Imported into local repositrory
7
 *
8
 * Revision 1.7  2002/08/14 12:07:12  mjames
9
 * Added an 'external' tag to the documentation
10
 *
11
 * Revision 1.7  2002/04/04 15:04:27  mjames
12
 * Fixed #ident problem
13
 *
14
 * Revision 1.6  2001/10/31 22:20:10  mjames
15
 * Tidying up problematical comments caused by CVS
16
 * 'intelligent' comment guessing
17
 *
18
 * Revision 1.5  2001/10/22 10:58:40  mjames
19
 * Modified list_devices to take an options flag
20
 *
21
 * Revision 1.4  2001/10/02 20:53:27  mjames
22
 * Moved documentation about code to main program module.
23
 *
24
 * Revision 1.3  2001/09/28 14:34:11  mjames
25
 * FIxed yydebug variable to exist when YYDEBUG macro
26
 * is not defined. Otherwise linker error will be reported.
27
 *
28
 * Revision 1.2  2001/07/09 15:48:52  mjames
29
 * Cleaned up for checkin
30
 *
31
 * Revision 1.1  2001/07/05 13:10:50  MJAMES
32
 * Created padsread for PADS-PCB netlists
33
 *
34
 * Revision 1.3  2001/06/06 12:10:20  mjames
35
 * Move from HPUX
36
 *
37
 * Revision 1.2  2000/12/04 13:14:03  mjames
38
 * Imported all of the PCB syntax readers.
39
 *
40
 * Converted "a/b" to mean "a" divided by "b" insted of a single string
41
 * "a/b" in Verilog
42
 *
43
 * Revision 1.1.1.1  2000/10/19 21:58:38  mjames
44
 * Mike put it here
45
 *
46
 *
47
 * Revision 1.26  2000/10/04  10:37:07  10:37:07  mjames (Mike James)
48
 * Modified for Vertical2 : support COMPONENTS and SIGNALS
49
 *
50
 * Revision 1.26  2000/10/04  10:37:07  10:37:07  mjames (Mike James)
51
 * Part of Release PSAVAT01
52
 *
53
 * Revision 1.25  2000/10/02  11:04:16  11:04:16  mjames (Mike James)
54
 * new_vhdl
55
 *
56
 * Revision 1.24  2000/09/27  14:42:17  14:42:17  mjames (Mike James)
57
 * Part of Release Sep_27_ST_2000
58
 *
59
 * Revision 1.23  2000/09/27  10:57:51  10:57:51  mjames (Mike James)
60
 * Using correct return code from yyparse()
61
 *
62
 * Revision 1.22  2000/09/21  10:15:47  10:15:47  mjames (Mike James)
63
 * Part of Release Sep21Alpha
64
 *
65
 * Revision 1.21  2000/08/25  09:57:13  09:57:13  mjames (Mike James)
66
 * Part of Release Aug25_alpha
67
 *
68
 * Revision 1.20  2000/08/16  08:57:29  08:57:29  mjames (Mike James)
69
 * Part of Release CD01_Aug2000
70
 *
71
 * Revision 1.19  2000/08/14  14:45:10  14:45:10  mjames (Mike James)
72
 * Part of Release Aug_14_2000
73
 *
74
 * Revision 1.18  2000/08/11  08:30:31  08:30:31  mjames (Mike James)
75
 * Part of Release Aug_11_2000
76
 *
77
 * Revision 1.17  2000/08/09  10:31:46  10:31:46  mjames (Mike James)
78
 * Part of Release Aug__9_2000
79
 *
80
 * Revision 1.16  2000/05/31  11:42:55  11:42:55  mjames (Mike James)
81
 * Part of Release May_31_2000
82
 *
83
 * Revision 1.15  2000/05/31  11:30:16  11:30:16  mjames (Mike James)
84
 * Added acfread.ini file reading
85
 *
86
 * Revision 1.14  2000/05/08  17:01:36  17:01:36  mjames (Mike James)
87
 * Part of Release May__8_2000
88
 *
89
 * Revision 1.13  2000/05/08  16:59:30  16:59:30  mjames (Mike James)
90
 * Part of Release May__8_2000
91
 *
92
 * Revision 1.12  2000/05/08  16:57:06  16:57:06  mjames (Mike James)
93
 * Part of Release May__8_2000
94
 *
95
 * Revision 1.11  2000/03/08  16:19:17  16:19:17  mjames (Mike James)
96
 * New version including PC
97
 *
98
 * Revision 1.8  2000/01/20  15:58:46  15:58:46  mjames (Mike James)
99
 * Part of Release R22
100
 *
101
 * Revision 1.7  99/12/22  11:15:27  11:15:27  mjames (Mike James)
102
 * Part of Release Dec_22_1999
103
 *
104
 * Revision 1.6  99/06/25  14:35:44  14:35:44  mjames (Mike James)
105
 * Added in reference to expression.h, but no changes made
106
 * to the function of acfread yet.
107
 *
108
 * Revision 1.5  99/05/04  09:52:29  09:52:29  mjames (Mike James)
109
 * General checkin
110
 *
111
 * Revision 1.3  98/02/11  11:26:44  11:26:44  mjames (Mike James)
112
 * Checked in for version 6.2a
113
 *
114
 * Revision 1.2  97/04/23  08:43:16  08:43:16  mjames (Mike James)
115
 * CHecked in for release rel23041997
116
 *
117
 * Revision 1.1  97/01/03  13:32:40  13:32:40  mjames (Mike James)
118
 * Initial revision
119
 *
120
 *
121
 */
122
/*
123
@title
124
PROGRAM padsread: Converter for .PADS files
125
@application external
126
@text
127
PCB netlist to ACFP converter. Looks for netlists in ASCII containing tags like:
128
@listing
129
*PADS-PCB*
130
*PART*
131
*NET*
132
*SIGNAL*
133
*END*
134
.
135
@text
136
Commonly seen with a '.PADS' file suffix. This file is from PADS-PCB
137
as used by ARM on the ARM Integrator card system.
138
@text
139
Usage
140
@listing
141
padsread <pads_file> [ d ]
142
@text
143
If a lower
144
case 'd' is present as the second argument, the Bison parser
145
(interpreter of keywords and syntax) prints extremely verbose diagnostics.
146
@break
147
Normally the acfp file produced on standard output is redirected to a file e.g.
148
@listing
149
padsread file.pads > file.acfp
150
@text
151
Will produce file.acfp from file.pads.
152
@break
153
Following this it is necessary to run the output through Vertical again in order to
154
set up properties on nets (power and ground being made not routable for instance) using the
155
del routable command. Alternatively the acfp file can be edited to set the net routing
156
flags for these nets.
157
@end
158
*/
159
 
160
#include <stdio.h>
161
#include <stdlib.h>
162
#include <string.h>
163
#if defined HAS_TCL
164
#include "tcl_l.h"
165
#endif
166
#include "cmdlog.h"
167
#include "cmdparse.h"
168
#include "database.h"
169
#include "expression.h"
170
#include "generic.h"
171
#include "printout.h"
172
#include "routing.h"
173
 
174
#ident                                                                                        \
175
    "@(#)$Header: c:\\cygwin\\cvsroot/Vert03/pads_src/pads_main.c,v 1.1.1.1 2003/11/04 23:34:58 mjames Exp $";
176
#if defined YYDEBUG
177
extern int yydebug;
178
#else
179
int yydebug = 0;
180
#endif
181
 
182
extern FILE *yyin;
183
 
184
int main (int argc, char *argv[])
185
{
186
        InitialiseData ();
187
        ExecuteString (
188
            "echo running \\$(VERTICAL_INIT) file name = $(VERTICAL_INIT) ",
189
            argc - 1,
190
            (argv + 1));
191
        ExecuteString ("do $(VERTICAL_INIT) ", argc - 2, (argv + 2));
192
        Log (LOG_GENERAL, "# Finished initialisation script\n");
193
        print_header (stdout, "'padsread': From PADS-PCB .net file");
194
        yydebug = 0;
195
        if (argc > 2 && argv[2][0] == 'd')
196
                yydebug = 1;
197
        if (argc > 1)
198
                yyin = fopen (argv[1], "r");
199
        else
200
                yyin = stdin;
201
        if (!yyin)
202
                printf ("cannot open input file (%s)\n", argv[1]);
203
        else
204
                while (yyparse () == 0)
205
                        ;
206
 
207
        perform_routing (Free);
208
        list_database (stdout, 0); /*no jumpers so flatten jumpers arg=0 */
209
        list_devices (
210
            stdout,
211
            PRINT_TYPE | PRINT_EXPAND_BUS | PRINT_GENERIC | PRINT_GROUP | PRINT_ROUTE_FLAGS |
212
                PRINT_EQUIVALENT_PINS);
213
}