/* $Id: print_quartus.c,v 1.1.1.1 2003/11/04 23:34:57 mjames Exp $ */
/* Quartus pin fit file creator
*
* $Log: print_quartus.c,v $
* Revision 1.1.1.1 2003/11/04 23:34:57 mjames
* Imported into local repositrory
*
* Revision 1.12 2003/01/02 21:37:16 mjames
* Experiment on creating NOT_ROUTABLE_H and NOT_ROUTABLE_L
* properties on the nets so that pin jumpers can be made without a problem.
*
* Still need to sort out pin assignments made to these not_routable nets
* which will become legal in some cases so that pullups and pulldown
* pins can be used on the FPGA.
*
* Revision 1.11 2002/09/09 10:12:02 mjames
* Moved pin remapping function to pin ident editing function from
* sorting pin name routine.
*
* Revision 1.10 2002/08/14 12:06:41 mjames
* Removed debug level setting function that should not have been here
*
* Revision 1.9 2002/08/06 12:52:38 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 2002/01/16 10:08:13 mjames
* removed unused variable
*
* Revision 1.7 2001/10/31 22:20:12 mjames
* Tidying up problematical comments caused by CVS
* 'intelligent' comment guessing
*
* Revision 1.6 2001/10/22 10:58:18 mjames
* Added required header files
*
* Revision 1.5 2001/09/21 14:20:38 mjames
* Changed layout of printout to include device type if needed
*
* Revision 1.4 2001/07/09 15:38:02 mjames
* Corrected printout errors that made reference to deleted net objects.
*
* Revision 1.3 2001/07/09 09:34:23 mjames
* Printing only named nets that are routable, to create
* the correct Quatus configuration file
*
* Revision 1.2 2001/07/06 12:47:13 MJAMES
* Slight changes made for use with Quartus
*
* Revision 1.1 2001/06/06 12:10:19 mjames
* Move from HPUX
* */
/* ********************************************************************** */
#include "cmdlog.h"
#include "cmdparse.h"
#include "database.h"
#include "equivalent.h"
#include "expression.h"
#include "generic.h"
#include "print_vhdl.h"
#include "print_vlog.h"
#include "printout.h"
#include "sorting.h"
#include "vertcl_main.h"
#include <ctype.h>
#include <regex.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <sys/types.h>
#include <time.h>
#if defined NEED_DECODE_PIN
static char *decode_quartus_pin[] = {"NONE",
"input",
"output",
"output", /* buffer is a sort of Output pin (lower case is
for info only )*/
"inout",
"CONFIG_PIN",
"POWER_PIN"};
#endif
void print_quartus_pinfit (FILE *f, socket_t *dev, int options)
{
node_t *n;
/* sort all the nodes into alphabetical order */
sort_nodes (dev, NO_EXTRACT_XY);
if (dev->is_external)
fprintf (f
, "# External Connection\n\n");
else
fprintf (f
, "# Internal Socket\n\n");
/* if it hasnt got a name, use its identifier */
if (!ISNULLSTR (dev->name))
fprintf (f
, "CHIP (%s) {\n", check_null_str
(dev
->name
));
else
fprintf (f
, "CHIP (%s) {\n", dev
->identifier
);
if (!ISNULLSTR (dev->type))
{
fprintf (f
, " ASSIGNED TO AN \"%s\";\n", check_null_str
(dev
->type
));
}
n = dev->nodes;
while (n)
{
if (n->net && IS_ROUTABLE (n->net->how_routed) &&
(n->net->list_ref == &named_list))
{
f,
"\t%-20s : LOCATION = Pin_%-10s;\n",
n->net->name,
n->identifier);
}
n = n->sktnext; /* traverse to next pin on socket */
};
}