
/*
 * $Header: c:\\cygwin\\cvsroot/Vert03/vertlib/printout.h,v 1.1.1.1 2003/11/04 23:34:57 mjames
 Exp $
 *
 * $Log: printout.h,v $
 * Revision 1.1.1.1  2003/11/04 23:34:57  mjames
 * Imported into local repositrory
 *
 * Revision 1.10  2002/09/09 10:10:49  mjames
 * Moved pin remapping function to pin ident editing function from
 * sorting pin name routine.
 *
 * Revision 1.9  2002/08/06 12:52:27  mjames
 * Merge in from latest version
 *
 * Revision 1.9  2002/04/10 14:29:10  mjames
 * Moved setting debug level to cmdutil.c
 *
 * Amended print external command to list all net names on socket pins
 * whether routed or not.
 *
 * Revision 1.8  2001/12/24 21:18:28  mjames
 * Declare ensure_reservation externally
 *
 * Revision 1.7  2001/10/31 22:20:14  mjames
 * Tidying up problematical comments caused by CVS
 * 'intelligent' comment guessing
 *
 * Revision 1.6  2001/10/11 16:10:16  mjames
 * Corrections to the SWAP command, and printout so that
 * WRITE net now outputs all chips in the design so that their generics
 * can be passed forward to the next phase.
 *
 * Revision 1.5  2001/07/09 15:38:55  mjames
 * Placed the version string in an independent file to save time on building
 * all of the variants of Vertical
 *
 * Revision 1.4  2001/06/06 12:10:18  mjames
 * Move from HPUX
 *
 * Revision 1.3  2001/02/01 21:41:45  mjames
 * Made the code begin to compile without TCL/TK
 *
 * Revision 1.2  2000/10/21 20:41:30  mjames
 * Added the 'write flatten' command that only lists the wires
 * created by making jumpered connections rather than listing
 * the jumpers themselves
 *
 * Revision 1.1.1.1  2000/10/19 21:58:39  mjames
 * Mike put it here
 *
 *
 * Revision 1.42  2000/10/04  10:37:12  10:37:12  mjames (Mike James)
 * Modified for Vertical2 : support COMPONENTS and SIGNALS
 *
 * Revision 1.42  2000/10/04  10:37:12  10:37:12  mjames (Mike James)
 * Part of Release PSAVAT01
 *
 * Revision 1.41  2000/10/02  11:04:18  11:04:18  mjames (Mike James)
 * new_vhdl
 *
 * Revision 1.40  2000/09/27  14:42:24  14:42:24  mjames (Mike James)
 * Part of Release Sep_27_ST_2000
 *
 * Revision 1.39  2000/09/21  10:15:55  10:15:55  mjames (Mike James)
 * Part of Release Sep21Alpha
 *
 * Revision 1.38  2000/09/21  09:47:29  09:47:29  mjames (Mike James)
 * Added code to deal with pin equivalents
 *
 * Revision 1.37  2000/08/25  09:57:20  09:57:20  mjames (Mike James)
 * Part of Release Aug25_alpha
 *
 * Revision 1.36  2000/08/16  08:57:36  08:57:36  mjames (Mike James)
 * Part of Release CD01_Aug2000
 *
 * Revision 1.35  2000/08/14  14:45:16  14:45:16  mjames (Mike James)
 * Part of Release Aug_14_2000
 *
 * Revision 1.34  2000/08/11  08:30:37  08:30:37  mjames (Mike James)
 * Part of Release Aug_11_2000
 *
 * Revision 1.33  2000/08/09  10:31:53  10:31:53  mjames (Mike James)
 * Part of Release Aug__9_2000
 *
 * Revision 1.32  2000/05/31  11:43:05  11:43:05  mjames (Mike James)
 * Part of Release May_31_2000
 *
 * Revision 1.31  2000/05/08  17:01:43  17:01:43  mjames (Mike James)
 * Part of Release May__8_2000
 *
 * Revision 1.30  2000/05/08  16:59:36  16:59:36  mjames (Mike James)
 * Part of Release May__8_2000
 *
 * Revision 1.29  2000/05/08  16:57:13  16:57:13  mjames (Mike James)
 * Part of Release May__8_2000
 *
 * Revision 1.28  2000/03/08  16:19:25  16:19:25  mjames (Mike James)
 * New version including PC
 *
 * Revision 1.25  2000/01/20  15:58:53  15:58:53  mjames (Mike James)
 * Part of Release R22
 *
 * Revision 1.24  99/12/22  11:15:34  11:15:34  mjames (Mike James)
 * Part of Release Dec_22_1999
 *
 * Revision 1.23  99/11/23  13:53:46  13:53:46  mjames (Mike James)
 * Added Verliog support and removed VHDL functions to a separate file
 *
 * Revision 1.21  98/07/14  13:25:55  13:25:55  mjames (Mike James)
 * Altered device printout to meet new requirements
 *
 * Revision 1.20  98/06/15  14:19:17  14:19:17  mjames (Mike James)
 * Added template printout functionality
 *
 * Revision 1.19  98/03/16  11:38:21  11:38:21  mjames (Mike James)
 * Added generics to printout listings
 *
 * Revision 1.18  98/02/11  11:27:04  11:27:04  mjames (Mike James)
 * Checked in for version 6.2a
 *
 * Revision 1.17  98/01/13  11:33:52  11:33:52  mjames (Mike James)
 * Added the bility to use a VHDL template file
 * containing $ENT$ and $ARCH$ in the position where one
 * wants the entity and architecture to be given.
 *
 * Revision 1.16  97/04/23  08:44:43  08:44:43  mjames (Mike James)
 * CHecked in for release rel23041997
 *
 * Revision 1.15  96/12/13  08:44:16  08:44:16  mjames (Mike James)
 * Update to v5.1, added Write ID , exact routing
 *
 * Revision 1.14  96/07/19  14:38:58  14:38:58  mjames (Mike James)
 * Update to give to PRL
 *
 * Revision 1.13  1996/07/12  15:52:12  mjames
 * Sorted out things like Alias and Jumpers
 * Work Correctly
 * Print COrrectly
 *
 * Revision 1.12  96/06/04  11:58:20  11:58:20  mjames (Mike James)
 * Added a lot of stuff to do with internal/external sockets,
 * Net renaming. Net jumpering by node ID as well as net name
 *
 * Revision 1.11  96/05/29  11:01:38  11:01:38  mjames (Mike James)
 * ,
 *
 * Revision 1.10  96/03/29  14:47:14  14:47:14  mjames (Mike James)
 * Added VHDL netlist writing to the capabilities of ACFREAD
 *
 * Revision 1.9  96/03/18  13:51:24  13:51:24  mjames (Mike James)
 * Real Revision 2.1
 *
 * Revision 1.6  96/02/13  09:13:37  09:13:37  mjames (Mike James)
 * Updated to be version 2.0 with net joining
 *
 * Revision 1.5  96/02/09  10:51:04  10:51:04  mjames (Mike James)
 * Added different behaviour for 'write id' and 'write name'
 * 'write id' now writes all pins including unused ones
 * 'write name' only writes used pins in the ACF file
 *
 *  .
 *
 *
 * Revision 1.4  96/02/08  15:28:38  15:28:38  mjames (Mike James)
 * First release
 *
 * Revision 1.3  96/02/07  16:01:39  16:01:39  mjames (Mike James)
 * Added correct RCS header
 *
 * Revision 1.2  96/02/07  15:50:54  15:50:54  mjames (Mike James)
 * Added RCS ident message
 *
 * Revision 1.1  96/01/10  13:15:16  13:15:16  mjames (Mike James)
 * Initial revision
 *  */
 
#pragma once
#include <stdio.h>

 
/* control flags controlling printout options */
#define PRINT_ALL 1
#define PRINT_TYPE 2
#define PRINT_USABLE 4        /* if net is routable print its identifier */
#define PRINT_EXPAND_BUS 8    /* explode VHDL buses */
#define PRINT_GENERIC 16      /* list generic values */
#define PRINT_GROUP 32        /* print pin groups  */
#define PRINT_ROUTE_FLAGS 64  /* printout routing group flags  */
#define PRINT_AS_UNROUTED 128 /* printout pins as unrouted (Write fit)   */
#define PRINT_EQUIVALENT_PINS                                                                 \
        256                  /* Print pins that are equivalent : used in                      \
                               jumpering and pass through   */
#define NO_PRINT_PINS 512    /* print no pin information whatsoever */
#define PRINT_NET_NAMES 1024 /* print net name assignment on pins even if not routed here */

#define FLATTEN_JUMPERS 0
#define PRESERVE_JUMPERS 1

extern char *check_null_str (char *s);
extern void print_header (FILE *f, char *tool);

extern void print_VLOG_header (FILE *f, char *tool);

extern void list_database (FILE *f, int flatten_jumpers);

extern void list_components (FILE *f);

extern void list_devices (FILE *f, int listflags);

extern void list_extern_devices (FILE *f);

extern void list_extern_sockets (FILE *f);

extern void list_joined (FILE *f);

extern void print_device (FILE *f, socket_t *dev, int options);

extern void print_ACF_entity (FILE *f, char *entityname);

extern void print_pin_renames (FILE *f);

extern void produce_frb (FILE *f);

extern void list_jumper (FILE *f);

extern void list_alias (FILE *f);

extern void list_nets (FILE *f, net_t *cnet, int flatten_jumpers);

extern void list_net_structure (
    FILE *f, net_t *cnet, net_t *root_net, int alias_depth, int flatten_jumpers);