Mangle nexus names.
This commit is contained in:
parent
f063bf833f
commit
a3c3019a04
|
|
@ -18,7 +18,7 @@
|
||||||
* along with this program; if not, write to the Free Software
|
* along with this program; if not, write to the Free Software
|
||||||
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
|
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
|
||||||
*/
|
*/
|
||||||
#ident "$Id: fpga_priv.h,v 1.1 2001/08/28 04:14:20 steve Exp $"
|
#ident "$Id: fpga_priv.h,v 1.2 2001/08/30 04:31:04 steve Exp $"
|
||||||
|
|
||||||
# include <stdio.h>
|
# include <stdio.h>
|
||||||
# include "device.h"
|
# include "device.h"
|
||||||
|
|
@ -39,8 +39,13 @@ extern device_t device;
|
||||||
extern void mangle_logic_name(ivl_net_logic_t net, char*buf, size_t nbuf);
|
extern void mangle_logic_name(ivl_net_logic_t net, char*buf, size_t nbuf);
|
||||||
extern void mangle_lpm_name(ivl_lpm_t net, char*buf, size_t nbuf);
|
extern void mangle_lpm_name(ivl_lpm_t net, char*buf, size_t nbuf);
|
||||||
|
|
||||||
|
extern const char*mangle_nexus_name(ivl_nexus_t net);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* $Log: fpga_priv.h,v $
|
* $Log: fpga_priv.h,v $
|
||||||
|
* Revision 1.2 2001/08/30 04:31:04 steve
|
||||||
|
* Mangle nexus names.
|
||||||
|
*
|
||||||
* Revision 1.1 2001/08/28 04:14:20 steve
|
* Revision 1.1 2001/08/28 04:14:20 steve
|
||||||
* Add the fpga target.
|
* Add the fpga target.
|
||||||
*
|
*
|
||||||
|
|
|
||||||
|
|
@ -16,7 +16,7 @@
|
||||||
* along with this program; if not, write to the Free Software
|
* along with this program; if not, write to the Free Software
|
||||||
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
|
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
|
||||||
*/
|
*/
|
||||||
#ident "$Id: gates.c,v 1.1 2001/08/28 04:14:20 steve Exp $"
|
#ident "$Id: gates.c,v 1.2 2001/08/30 04:31:04 steve Exp $"
|
||||||
|
|
||||||
# include <ivl_target.h>
|
# include <ivl_target.h>
|
||||||
# include "fpga_priv.h"
|
# include "fpga_priv.h"
|
||||||
|
|
@ -25,7 +25,7 @@
|
||||||
void draw_pin(ivl_nexus_t nex, const char*nam, char dir)
|
void draw_pin(ivl_nexus_t nex, const char*nam, char dir)
|
||||||
{
|
{
|
||||||
const char*use_name = nam;
|
const char*use_name = nam;
|
||||||
const char*nex_name = ivl_nexus_name(nex);
|
const char*nex_name = mangle_nexus_name(nex);
|
||||||
int invert = 0;
|
int invert = 0;
|
||||||
|
|
||||||
if (use_name[0] == '~') {
|
if (use_name[0] == '~') {
|
||||||
|
|
@ -76,6 +76,9 @@ int show_scope_gates(ivl_scope_t net, void*x)
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* $Log: gates.c,v $
|
* $Log: gates.c,v $
|
||||||
|
* Revision 1.2 2001/08/30 04:31:04 steve
|
||||||
|
* Mangle nexus names.
|
||||||
|
*
|
||||||
* Revision 1.1 2001/08/28 04:14:20 steve
|
* Revision 1.1 2001/08/28 04:14:20 steve
|
||||||
* Add the fpga target.
|
* Add the fpga target.
|
||||||
*
|
*
|
||||||
|
|
|
||||||
|
|
@ -16,11 +16,12 @@
|
||||||
* along with this program; if not, write to the Free Software
|
* along with this program; if not, write to the Free Software
|
||||||
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
|
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
|
||||||
*/
|
*/
|
||||||
#ident "$Id: mangle.c,v 1.1 2001/08/28 04:14:20 steve Exp $"
|
#ident "$Id: mangle.c,v 1.2 2001/08/30 04:31:05 steve Exp $"
|
||||||
|
|
||||||
|
|
||||||
# include "fpga_priv.h"
|
# include "fpga_priv.h"
|
||||||
# include <string.h>
|
# include <string.h>
|
||||||
|
# include <malloc.h>
|
||||||
|
|
||||||
static size_t mangle_scope_name(ivl_scope_t net, char*buf, size_t nbuf)
|
static size_t mangle_scope_name(ivl_scope_t net, char*buf, size_t nbuf)
|
||||||
{
|
{
|
||||||
|
|
@ -56,9 +57,46 @@ void mangle_lpm_name(ivl_lpm_t net, char*buf, size_t nbuf)
|
||||||
strcpy(buf+cnt, ivl_lpm_basename(net));
|
strcpy(buf+cnt, ivl_lpm_basename(net));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Nexus names are used in pin records to connect things together. It
|
||||||
|
* almost doesn't matter what the nexus name is, but for readability
|
||||||
|
* we choose a name that is close to the nexus name. This function
|
||||||
|
* converts the existing name to a name that XNF can use.
|
||||||
|
*
|
||||||
|
* For speed, this function saves the calculated string into the real
|
||||||
|
* nexus by using the private pointer. Every nexus is used at least
|
||||||
|
* twice, so this cuts the mangling time in half at least.
|
||||||
|
*/
|
||||||
|
const char* mangle_nexus_name(ivl_nexus_t net)
|
||||||
|
{
|
||||||
|
char*name = ivl_nexus_get_private(net);
|
||||||
|
char*cp;
|
||||||
|
|
||||||
|
if (name != 0) {
|
||||||
|
return name;
|
||||||
|
}
|
||||||
|
|
||||||
|
name = malloc(strlen(ivl_nexus_name(net)) + 1);
|
||||||
|
strcpy(name, ivl_nexus_name(net));
|
||||||
|
|
||||||
|
for (cp = name ; *cp ; cp += 1) switch (*cp) {
|
||||||
|
|
||||||
|
case '.':
|
||||||
|
*cp = '/';
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
ivl_nexus_set_private(net, name);
|
||||||
|
return name;
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* $Log: mangle.c,v $
|
* $Log: mangle.c,v $
|
||||||
|
* Revision 1.2 2001/08/30 04:31:05 steve
|
||||||
|
* Mangle nexus names.
|
||||||
|
*
|
||||||
* Revision 1.1 2001/08/28 04:14:20 steve
|
* Revision 1.1 2001/08/28 04:14:20 steve
|
||||||
* Add the fpga target.
|
* Add the fpga target.
|
||||||
*
|
*
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue