Subversion Repositories Vertical

Rev

Blame | Last modification | View Log | Download | RSS feed

  1. /*
  2.  * $Header: c:\\cygwin\\cvsroot/Vert03/frb_src/frb_main.c,v 1.1.1.1 2003/11/04 23:34:59 mjames
  3.  Exp $
  4.  *
  5.  * $Log: frb_main.c,v $
  6.  * Revision 1.1.1.1  2003/11/04 23:34:59  mjames
  7.  * Imported into local repositrory
  8.  *
  9.  * Revision 1.10  2002/09/09 10:36:19  mjames
  10.  * Checkpoint checkin
  11.  *
  12.  * Revision 1.9  2002/08/14 12:11:31  mjames
  13.  * Added an 'external' tag to the documentation
  14.  *
  15.  * Revision 1.9  2002/04/04 14:53:06  mjames
  16.  * Added mentor board station reader to the portfolio
  17.  *
  18.  * Revision 1.8  2001/10/31 22:20:05  mjames
  19.  * Tidying up problematical comments caused by CVS
  20.  * 'intelligent' comment guessing
  21.  *
  22.  * Revision 1.7  2001/10/22 11:00:15  mjames
  23.  * Modified list_devices to take an options flag
  24.  *
  25.  * Revision 1.6  2001/10/02 20:53:47  mjames
  26.  * Moved documentation about code to main program module.
  27.  *
  28.  * Revision 1.5  2001/09/28 14:34:12  mjames
  29.  * FIxed yydebug variable to exist when YYDEBUG macro
  30.  * is not defined. Otherwise linker error will be reported.
  31.  *
  32.  * Revision 1.4  2001/07/09 15:47:35  mjames
  33.  * Placed the version string in an independent file to save time on building
  34.  * all of the variants of Vertical
  35.  *
  36.  * Revision 1.3  2001/06/06 12:10:22  mjames
  37.  * Move from HPUX
  38.  *
  39.  * Revision 1.2  2000/12/04 13:14:02  mjames
  40.  * Imported all of the PCB syntax readers.
  41.  *
  42.  * Converted "a/b" to mean "a" divided by "b" insted of a single string
  43.  * "a/b" in Verilog
  44.  *
  45.  * Revision 1.1.1.1  2000/10/19 21:58:38  mjames
  46.  * Mike put it here
  47.  *
  48.  *
  49.  * Revision 1.36  2000/10/04  10:37:05  10:37:05  mjames (Mike James)
  50.  * Modified for Vertical2 : support COMPONENTS and SIGNALS
  51.  *
  52.  * Revision 1.36  2000/10/04  10:37:05  10:37:05  mjames (Mike James)
  53.  * Part of Release PSAVAT01
  54.  *
  55.  * Revision 1.35  2000/10/02  11:04:13  11:04:13  mjames (Mike James)
  56.  * new_vhdl
  57.  *
  58.  
  59.  * Revision 1.34  2000/09/27  14:42:13  14:42:13  mjames (Mike James)
  60.  
  61.  * Part of Release Sep_27_ST_2000
  62.  
  63.  *
  64.  
  65.  * Revision 1.33  2000/09/27  10:45:08  10:45:08  mjames (Mike James)
  66.  
  67.  * Corrected to use correct return code from yyparse()
  68.  
  69.  *
  70.  
  71.  * Revision 1.32  2000/09/21  10:15:43  10:15:43  mjames (Mike James)
  72.  
  73.  * Part of Release Sep21Alpha
  74.  
  75.  *
  76.  
  77.  * Revision 1.31  2000/08/25  09:57:11  09:57:11  mjames (Mike James)
  78.  
  79.  * Part of Release Aug25_alpha
  80.  
  81.  *
  82.  
  83.  * Revision 1.30  2000/08/16  08:57:27  08:57:27  mjames (Mike James)
  84.  
  85.  * Part of Release CD01_Aug2000
  86.  
  87.  *
  88.  
  89.  * Revision 1.29  2000/08/14  14:45:09  14:45:09  mjames (Mike James)
  90.  
  91.  * Part of Release Aug_14_2000
  92.  
  93.  *
  94.  
  95.  * Revision 1.28  2000/08/11  08:30:29  08:30:29  mjames (Mike James)
  96.  
  97.  * Part of Release Aug_11_2000
  98.  
  99.  *
  100.  
  101.  * Revision 1.27  2000/08/09  10:31:43  10:31:43  mjames (Mike James)
  102.  
  103.  * Part of Release Aug__9_2000
  104.  
  105.  *
  106.  
  107.  * Revision 1.26  2000/05/31  11:42:52  11:42:52  mjames (Mike James)
  108.  
  109.  * Part of Release May_31_2000
  110.  
  111.  *
  112.  
  113.  * Revision 1.25  2000/05/31  11:30:11  11:30:11  mjames (Mike James)
  114.  
  115.  * Added acfread.ini file reading
  116.  
  117.  *
  118.  
  119.  * Revision 1.24  2000/05/08  17:01:35  17:01:35  mjames (Mike James)
  120.  
  121.  * Part of Release May__8_2000
  122.  
  123.  *
  124.  
  125.  * Revision 1.23  2000/05/08  16:59:28  16:59:28  mjames (Mike James)
  126.  
  127.  * Part of Release May__8_2000
  128.  
  129.  *
  130.  
  131.  * Revision 1.22  2000/05/08  16:57:04  16:57:04  mjames (Mike James)
  132.  
  133.  * Part of Release May__8_2000
  134.  
  135.  *
  136.  
  137.  * Revision 1.21  2000/03/08  16:19:02  16:19:02  mjames (Mike James)
  138.  
  139.  * New version including PC
  140.  
  141.  *
  142.  
  143.  * Revision 1.18  2000/01/20  15:58:44  15:58:44  mjames (Mike James)
  144.  
  145.  * Part of Release R22
  146.  
  147.  *
  148.  
  149.  * Revision 1.17  99/12/22  11:15:24  11:15:24  mjames (Mike James)
  150.  
  151.  * Part of Release Dec_22_1999
  152.  
  153.  *
  154.  
  155.  * Revision 1.16  99/06/25  14:35:32  14:35:32  mjames (Mike James)
  156.  
  157.  * Added in reference to expression.h, but no changes made
  158.  
  159.  * to the function of acfread yet.
  160.  
  161.  *
  162.  
  163.  * Revision 1.15  99/05/04  09:51:08  09:51:08  mjames (Mike James)
  164.  
  165.  * General checkin
  166.  
  167.  *
  168.  
  169.  * Revision 1.13  98/02/11  11:26:01  11:26:01  mjames (Mike James)
  170.  
  171.  * Checked in for version 6.2a
  172.  
  173.  *
  174.  
  175.  * Revision 1.12  97/04/23  08:42:53  08:42:53  mjames (Mike James)
  176.  
  177.  * CHecked in for release rel23041997
  178.  
  179.  *
  180.  
  181.  * Revision 1.11  97/01/03  13:33:14  13:33:14  mjames (Mike James)
  182.  
  183.  * Changed the order of printing the banner on startup so that it is before all
  184.  
  185.  * other output from the tool.
  186.  
  187.  *
  188.  
  189.  * Revision 1.10  96/08/06  13:35:32  13:35:32  mjames (Mike James)
  190.  
  191.  * Changed date of compile
  192.  
  193.  *
  194.  
  195.  * Revision 1.9  96/07/19  14:36:33  14:36:33  mjames (Mike James)
  196.  
  197.  * Amended major revision
  198.  
  199.  *
  200.  
  201.  * Revision 1.8  1996/07/12  15:52:12  mjames
  202.  
  203.  * Sorted out things like Alias and Jumpers
  204.  
  205.  * Work Correctly
  206.  
  207.  * Print COrrectly
  208.  
  209.  *
  210.  
  211.  * Revision 1.7  96/03/29  14:46:09  14:46:09  mjames (Mike James)
  212.  
  213.  * Added VHDL netlist writing to the capabilities of ACFREAD
  214.  
  215.  *
  216.  
  217.  * Revision 1.6  96/03/18  13:50:34  13:50:34  mjames (Mike James)
  218.  
  219.  * Real Revision 2.1
  220.  
  221.  *
  222.  
  223.  * Revision 1.3  96/02/13  09:13:04  09:13:04  mjames (Mike James)
  224.  
  225.  * Updated to be version 2.0 with net joining
  226.  
  227.  *
  228.  
  229.  * Revision 1.2  96/02/07  16:01:19  16:01:19  mjames (Mike James)
  230.  
  231.  * Added correct RCS header
  232.  
  233.  *
  234.  
  235.  * Revision 1.1  96/02/07  15:49:03  15:49:03  mjames (Mike James)
  236.  
  237.  * Initial revision
  238.  
  239.  *
  240.  
  241.  * Revision 1.5  96/02/07  11:04:14  11:04:14  mjames (Mike James)
  242.  
  243.  * Checkin before adding new command parsing to program
  244.  
  245.  *
  246.  
  247.  * Revision 1.4  96/01/10  13:12:59  13:12:59  mjames (Mike James)
  248.  
  249.  * Works in debug mode with EPLD listings and PCB layout
  250.  
  251.  *
  252.  
  253.  * Revision 1.3  96/01/08  15:23:13  15:23:13  mjames (Mike James)
  254.  
  255.  * Managing to make sense of things now
  256.  
  257.  *
  258.  
  259.  * Revision 1.2  96/01/07  20:23:01  Mike_James
  260.  
  261.  *
  262.  
  263.  * Revision 1.1  96/01/07  12:38:41  Mike_James
  264.  
  265.  * Initial revision
  266.  
  267.  *
  268.  
  269.  * Revision 1.2  96/01/04  17:54:41  17:54:41  mjames (Mike James)
  270.  
  271.  * Altered to conditionally debug
  272.  
  273.  *
  274.  
  275.  * Revision 1.1  96/01/04  10:17:57  10:17:57  mjames (Mike James)
  276.  
  277.  * Initial revision
  278.  
  279.  *
  280.  
  281. */
  282. /*
  283. @title
  284. PROGRAM frbread: Converter for .FRB files
  285. @application external
  286. @text
  287. PCB netlist to ACFP converter. Looks for netlists in ASCII containing tags like:
  288. @listing
  289. .HEA
  290. .END
  291. .TIM
  292. .UNI
  293. .JOB
  294. .TYP
  295. .APP
  296. .ADD_COM
  297. .ADD_TER
  298. .ATT_COM
  299. .ATT_TRE
  300. .TER
  301. @text
  302. Commonly seen with a '.FRB' file suffix or '.CDI' file suffix.
  303. More common Racal-Zuken CadStar
  304. file format.
  305. One of several file formats the Southampton
  306. Drawing office is likely to hand out. See also PROGRAM repread and PROGRAM rep2read.
  307.  
  308. @break
  309. Invocation
  310. @listing
  311. frbread <frb_file> [d]
  312. @text
  313. The frb file name is the first argument, the third argument is a debug flag.
  314. If a lower
  315. case 'd' is present, the Bison parser (interpreter of keywords and syntax) prints extremely
  316. verbose diagnostics.
  317. @break
  318. Normally the acfp file produced on standard output is redirected to a file e.g.
  319. @listing
  320. frbread file.frb > file.acfp
  321. @text
  322. Will produce file.acfp from file.frb.
  323. @break
  324. Following this it is necessary to run the output through Vertical again in order to
  325. set up properties on nets (power and ground being made not routable for instance) using the
  326. del routable command. Alternatively the acfp file can be edited to set the net routing flags
  327. for these nets.
  328. @end
  329. */
  330.  
  331. #include <stdio.h>
  332. #include <stdlib.h>
  333. #include <string.h>
  334. #if defined HAS_TCL
  335. #include "tcl_l.h"
  336. #endif
  337. #include "cmdlog.h"
  338. #include "cmdparse.h"
  339. #include "database.h"
  340. #include "expression.h"
  341. #include "generic.h"
  342. #include "printout.h"
  343. #include "routing.h"
  344.  
  345. #ident                                                                                        \
  346.     "@(#)$Header: c:\\cygwin\\cvsroot/Vert03/frb_src/frb_main.c,v 1.1.1.1 2003/11/04 23:34:59 mjames Exp $";
  347.  
  348. #if defined YYDEBUG
  349. extern int yydebug;
  350. #else
  351. int yydebug = 0;
  352. #endif
  353.  
  354. extern FILE *yyin;
  355.  
  356. int main (int argc, char *argv[])
  357.  
  358. {
  359.         InitialiseData ();
  360.         ExecuteString (
  361.             "echo running \\$(VERTICAL_INIT) file name = $(VERTICAL_INIT) ",
  362.             argc - 1,
  363.             (argv + 1));
  364.         ExecuteString ("do $(VERTICAL_INIT) ", argc - 2, (argv + 2));
  365.         Log (LOG_GENERAL, "# Finished initialisation script\n");
  366.         print_header (stdout, "'frbread': From Drawing Office file");
  367.         yydebug = 0;
  368.         if (argc > 2 && argv[2][0] == 'd')
  369.                 yydebug = 1;
  370.         if (argc > 1)
  371.                 yyin = fopen (argv[1], "r");
  372.         else
  373.                 yyin = stdin;
  374.         if (!yyin)
  375.                 printf ("cannot open input file (%s)\n", argv[1]);
  376.         else
  377.                 while (yyparse () == 0)
  378.                         ;
  379.         perform_routing (Free);
  380.  
  381.         list_database (stdout, 0); /* no jumpers 0= do not flatten them */
  382.         list_devices (
  383.             stdout,
  384.             PRINT_TYPE | PRINT_EXPAND_BUS | PRINT_GENERIC | PRINT_GROUP | PRINT_ROUTE_FLAGS |
  385.                 PRINT_EQUIVALENT_PINS);
  386. }
  387.