
/* $Id: cdi_main.c,v 1.1.1.1 2003/11/04 23:34:57 mjames Exp $
 *
 * $Log: cdi_main.c,v $
 * Revision 1.1.1.1  2003/11/04 23:34:57  mjames
 * Imported into local repositrory
 *
 * Revision 1.10  2002/09/09 10:36:19  mjames
 * Checkpoint checkin
 *
 * Revision 1.9  2002/08/14 12:03:07  mjames
 * Added an 'external' tag to the documentation
 *
 * Revision 1.9  2002/04/04 15:04:28  mjames
 * Fixed #ident problem
 *
 * Revision 1.8  2001/10/31 22:19:58  mjames
 * Tidying up problematical comments caused by CVS
 * 'intelligent' comment guessing
 *
 * Revision 1.7  2001/10/22 11:01:36  mjames
 * Modified list_devices to take an options flag
 *
 * Revision 1.6  2001/10/02 20:55:37  mjames
 * Moved documentation about code to main program module.
 *
 * Revision 1.5  2001/09/28 14:34:13  mjames
 * FIxed yydebug variable to exist when YYDEBUG macro
 * is not defined. Otherwise linker error will be reported.
 *
 * Revision 1.4  2001/07/09 15:36:57  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:26  mjames
 * Move from HPUX
 *
 * Revision 1.2  2000/12/04 13:14:01  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:34  mjames
 * Mike put it here
 *
 *
 * Revision 1.29  2000/10/04  10:37:01  10:37:01  mjames (Mike James)
 * Modified to become part of vertical2, complete
 * with VHDL COMPONENT and SIGNAL declarations.
 *
 * Revision 1.29  2000/10/04  10:37:01  10:37:01  mjames (Mike James)
 * Part of Release PSAVAT01
 *
 * Revision 1.28  2000/10/02  11:04:07  11:04:07  mjames (Mike James)
 * new_vhdl
 *
 * Revision 1.27  2000/09/27  14:42:07  14:42:07  mjames (Mike James)
 * Part of Release Sep_27_ST_2000
 *
 * Revision 1.26  2000/09/27  10:41:21  10:41:21  mjames (Mike James)
 * Modified to use correct return code from yyparse.
 *
 * Revision 1.25  2000/09/21  10:15:37  10:15:37  mjames (Mike James)
 * Part of Release Sep21Alpha
 *
 * Revision 1.24  2000/08/25  09:57:06  09:57:06  mjames (Mike James)
 * Part of Release Aug25_alpha
 *
 * Revision 1.23  2000/08/16  08:57:23  08:57:23  mjames (Mike James)
 * Part of Release CD01_Aug2000
 *
 * Revision 1.22  2000/08/14  14:45:05  14:45:05  mjames (Mike James)
 * Part of Release Aug_14_2000
 *
 * Revision 1.21  2000/08/11  08:30:26  08:30:26  mjames (Mike James)
 * Part of Release Aug_11_2000
 *
 * Revision 1.20  2000/08/09  10:31:39  10:31:39  mjames (Mike James)
 * Part of Release Aug__9_2000
 *
 * Revision 1.19  2000/05/31  11:42:44  11:42:44  mjames (Mike James)
 * Part of Release May_31_2000
 *
 * Revision 1.18  2000/05/31  11:29:15  11:29:15  mjames (Mike James)
 * Added acfread.ini file reading
 *
 * Revision 1.17  2000/05/08  17:01:30  17:01:30  mjames (Mike James)
 * Part of Release May__8_2000
 *
 * Revision 1.16  2000/05/08  16:59:24  16:59:24  mjames (Mike James)
 * Part of Release May__8_2000
 *
 * Revision 1.15  2000/05/08  16:57:00  16:57:00  mjames (Mike James)
 * Part of Release May__8_2000
 *
 * Revision 1.14  2000/03/08  16:17:24  16:17:24  mjames (Mike James)
 * Removed syntactically confused 'junk'
 *
 * Revision 1.11  2000/01/20  15:58:38  15:58:38  mjames (Mike James)
 * Part of Release R22
 *
 * Revision 1.10  99/12/22  11:15:19  11:15:19  mjames (Mike James)
 * Part of Release Dec_22_1999
 *
 * Revision 1.9  99/06/25  14:34:26  14:34:26  mjames (Mike James)
 * Added in reference to expression.h, but no changes made
 * to the function of acfread yet.
 *
 * Revision 1.8  99/06/18  09:06:34  09:06:34  mjames (Mike James)
 * Checkin before major design changes
 *
 * Revision 1.7  1999/06/14  10:47:18  mjames
 * *** empty log message ***
 *
 * Revision 1.7  1999/06/14  10:47:18  mjames
 * *** empty log message ***
 *
 * Revision 1.6  1999/06/11  14:21:15  mjames
 * *** empty log message ***
 *
 * Revision 1.6  1999/06/11  14:21:15  mjames
 * *** empty log message ***
 *
 * Revision 1.5  99/05/04  09:48:09  09:48:09  mjames (Mike James)
 *
 *
 * Revision 1.3  98/02/11  11:24:57  11:24:57  mjames (Mike James)
 * Checked in for version 6.2a
 *
 * Revision 1.2  97/04/23  08:42:39  08:42:39  mjames (Mike James)
 * CHecked in for release rel23041997
 *
 * Revision 1.1  97/01/03  13:33:57  13:33:57  mjames (Mike James)
 * Initial revision
 *
 *
 */
/*
@title
PROGRAM cdiread: Converter for .CDI files
@application external
@text
PCB netlist to ACFP converter. Looks for netlists in ASCII containing tags like:
@listing
.ASS
.IMP
.COM
.CSP
.PCB
.CON
.COD
.REM
.EOD
@text
Commonly seen with a '.CDI' file suffix. I think this is one of the random Racal-Zuken output
file types.
@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/cdi_src/cdi_main.c,v 1.1.1.1 2003/11/04 23:34:57 mjames Exp $";
#if defined YYDEBUG
extern int yydebug;
#else
int yydebug = 0;
#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, "'cdiread': From .cdi 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)
                printf ("cannot open input file (%s)\n", argv[1]);
        else
                while (yyparse () == 0)
                        ;

        perform_routing (Free);
        list_database (stdout, 0); /* no jumpers :0= no hierarchy */
        list_devices (
            stdout,
            PRINT_TYPE | PRINT_EXPAND_BUS | PRINT_GENERIC | PRINT_GROUP | PRINT_ROUTE_FLAGS |
                PRINT_EQUIVALENT_PINS);
}
