/* rep_main*/
/*
* $Id: rep_main.c,v 1.1.1.1 2003/11/04 23:34:58 mjames Exp $
*
* $Log: rep_main.c,v $
* Revision 1.1.1.1 2003/11/04 23:34:58 mjames
* Imported into local repositrory
*
* Revision 1.10 2002/09/09 10:36:20 mjames
* Checkpoint checkin
*
* Revision 1.9 2002/08/14 12:05:15 mjames
* Added an 'external' tag to the documentation
*
* Revision 1.9 2002/04/04 15:04:26 mjames
* Fixed #ident problem
*
* Revision 1.8 2001/10/31 22:20:16 mjames
* Tidying up problematical comments caused by CVS
* 'intelligent' comment guessing
*
* Revision 1.7 2001/10/22 10:56:05 mjames
* Modified list_devices to take an options flag
*
* Revision 1.6 2001/10/02 20:50:50 mjames
* Moved documentation about code to main program module.
*
* Revision 1.5 2001/09/28 14:34:11 mjames
* FIxed yydebug variable to exist when YYDEBUG macro
* is not defined. Otherwise linker error will be reported.
*
* Revision 1.4 2001/07/09 10:05:28 mjames
* Placed the version string in an independent file to save time on building
* all of the variants of Vertical
*
* Revision 1.3 2001/06/06 12:10:18 mjames
* Move from HPUX
*
* Revision 1.2 2000/12/04 13:14:04 mjames
* Imported all of the PCB syntax readers.
*
* Converted "a/b" to mean "a" divided by "b" insted of a single string
* "a/b" in Verilog
*
* Revision 1.1.1.1 2000/10/19 21:58:39 mjames
* Mike put it here
*
*
* Revision 1.21 2000/10/04 10:37:09 10:37:09 mjames (Mike James)
* Modified for Vertical2 : support COMPONENTS and SIGNALS
*
* Revision 1.21 2000/10/04 10:37:09 10:37:09 mjames (Mike James)
* Part of Release PSAVAT01
*
* Revision 1.20 2000/10/02 11:04:19 11:04:19 mjames (Mike James)
* new_vhdl
*
* Revision 1.19 2000/09/27 14:42:19 14:42:19 mjames (Mike James)
* Part of Release Sep_27_ST_2000
*
* Revision 1.18 2000/09/27 10:58:36 10:58:36 mjames (Mike James)
* Started using correct return code for yyparse()
*
* Revision 1.17 2000/09/21 10:15:50 10:15:50 mjames (Mike James)
* Part of Release Sep21Alpha
*
* Revision 1.16 2000/08/25 09:57:15 09:57:15 mjames (Mike James)
* Part of Release Aug25_alpha
*
* Revision 1.15 2000/08/16 08:57:31 08:57:31 mjames (Mike James)
* Part of Release CD01_Aug2000
*
* Revision 1.14 2000/08/14 14:45:12 14:45:12 mjames (Mike James)
* Part of Release Aug_14_2000
*
* Revision 1.13 2000/08/11 08:30:33 08:30:33 mjames (Mike James)
* Part of Release Aug_11_2000
*
* Revision 1.12 2000/08/09 10:31:48 10:31:48 mjames (Mike James)
* Part of Release Aug__9_2000
*
* Revision 1.11 2000/05/31 11:42:59 11:42:59 mjames (Mike James)
* Part of Release May_31_2000
*
* Revision 1.10 2000/05/31 11:13:52 11:13:52 mjames (Mike James)
* Added use of vertical.ini
*
* Revision 1.9 2000/05/08 17:01:39 17:01:39 mjames (Mike James)
* Part of Release May__8_2000
*
* Revision 1.8 2000/05/08 16:59:32 16:59:32 mjames (Mike James)
* Part of Release May__8_2000
*
* Revision 1.7 2000/05/08 16:57:09 16:57:09 mjames (Mike James)
* Part of Release May__8_2000
*
* Revision 1.6 2000/03/08 16:19:27 16:19:27 mjames (Mike James)
* New version including PC
*
* Revision 1.3 2000/01/20 15:58:49 15:58:49 mjames (Mike James)
* Part of Release R22
*
* Revision 1.2 99/12/22 11:15:29 11:15:29 mjames (Mike James)
* Part of Release Dec_22_1999
*
* Revision 1.1 99/11/23 13:54:30 13:54:30 mjames (Mike James)
* Initial revision
*
*
*
*/
/*
@title
PROGRAM repread: Converter number 1 for .REP files
@application external
@text
PCB netlist to ACFP converter. The netlist file has net names in the first column of the
file and then connected pins on the net listed as indented by one character.
@break
Example Netlist
@listing
NETNAME1
X1 A1
X3 12
NETNAME2
U1 A4
G1 12
X1 A2
@text
Invocation
@listing
repread <rep_file> [ d ]
@text
If a lower
case 'd' is present as the second argument, the Bison parser
(interpreter of keywords and syntax) prints extremely verbose diagnostics.
@break
Normally the acfp file produced on standard output is redirected to a file e.g.
@listing
repread file.rep > file.acfp
@text
Will produce file.acfp from file.rep.
@break
Following this it is necessary to run the output through Vertical again in order to
set up properties on nets (power and ground being made not routable for instance) using the
del routable command. Alternatively the acfp file can be edited to set the net routing
flags for these nets.
@break
Netlist is commonly seen with a '.REP' file suffix. One of several file formats the Southampton
Drawing office is likely to hand out. See also PROGRAM frbread and PROGRAM rep2read .
@end
*/
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#if defined HAS_TCL
#include "tcl_l.h"
#endif
#include "cmdlog.h"
#include "cmdparse.h"
#include "database.h"
#include "expression.h"
#include "generic.h"
#include "printout.h"
#include "routing.h"
#ident \
"@(#)$Header: c:\\cygwin\\cvsroot/Vert03/rep_src/rep_main.c,v 1.1.1.1 2003/11/04 23:34:58 mjames Exp $";
#if defined YYDEBUG
extern int yydebug;
#else
int yydebug = 1;
#endif
extern FILE *yyin;
int main (int argc, char *argv[])
{
InitialiseData ();
ExecuteString (
"echo running \\$(VERTICAL_INIT) file name = $(VERTICAL_INIT) ",
argc - 1,
(argv + 1));
ExecuteString ("do $(VERTICAL_INIT) ", argc - 2, (argv + 2));
Log (LOG_GENERAL, "# Finished initialisation script\n");
print_header (stdout, "'repread': From .rep file");
yydebug = 0;
if (argc > 2 && argv[2][0] == 'd')
yydebug = 1;
if (argc > 1)
yyin
= fopen (argv
[1], "r");
else
yyin = stdin;
if (!yyin)
Log (LOG_ERROR, "cannot open input file (%s)\n", argv[1]);
else
while (yyparse () == 0)
;
perform_routing (Free);
list_database (stdout, 0);
list_devices (
stdout,
PRINT_TYPE | PRINT_EXPAND_BUS | PRINT_GENERIC | PRINT_GROUP | PRINT_ROUTE_FLAGS |
PRINT_EQUIVALENT_PINS);
}