Check width of constant attached to nexus.
This commit is contained in:
parent
695718d691
commit
7625a6c3e7
|
|
@ -17,7 +17,7 @@
|
||||||
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
|
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
|
||||||
*/
|
*/
|
||||||
#ifdef HAVE_CVS_IDENT
|
#ifdef HAVE_CVS_IDENT
|
||||||
#ident "$Id: stub.c,v 1.102 2005/01/28 05:36:18 steve Exp $"
|
#ident "$Id: stub.c,v 1.103 2005/01/29 16:47:52 steve Exp $"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
# include "config.h"
|
# include "config.h"
|
||||||
|
|
@ -633,6 +633,41 @@ static void show_event(ivl_event_t net)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static const char* str_tab[8] = {
|
||||||
|
"HiZ", "small", "medium", "weak",
|
||||||
|
"large", "pull", "strong", "supply"};
|
||||||
|
|
||||||
|
/*
|
||||||
|
* This function is used by the show_signal to dump a constant value
|
||||||
|
* that is connected to the signal. While we are here, check that the
|
||||||
|
* value is consistent with the signal itself.
|
||||||
|
*/
|
||||||
|
static void signal_nexus_const(ivl_signal_t sig,
|
||||||
|
ivl_nexus_ptr_t ptr,
|
||||||
|
ivl_net_const_t con)
|
||||||
|
{
|
||||||
|
const char*dr0 = str_tab[ivl_nexus_ptr_drive0(ptr)];
|
||||||
|
const char*dr1 = str_tab[ivl_nexus_ptr_drive1(ptr)];
|
||||||
|
|
||||||
|
const char*bits = ivl_const_bits(con);
|
||||||
|
unsigned idx, width = ivl_const_width(con);
|
||||||
|
|
||||||
|
fprintf(out, " const-");
|
||||||
|
|
||||||
|
for (idx = 0 ; idx < width ; idx += 1) {
|
||||||
|
fprintf(out, "%c", bits[width-idx-1]);
|
||||||
|
}
|
||||||
|
|
||||||
|
fprintf(out, " (%s0, %s1, width=%u)\n", dr0, dr1, width);
|
||||||
|
|
||||||
|
if (ivl_signal_width(sig) != width) {
|
||||||
|
fprintf(stderr, "ERROR: Width of signal does not match "
|
||||||
|
"width of connected constant vector.\n");
|
||||||
|
stub_errors += 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
static void show_signal(ivl_signal_t net)
|
static void show_signal(ivl_signal_t net)
|
||||||
{
|
{
|
||||||
unsigned idx;
|
unsigned idx;
|
||||||
|
|
@ -699,10 +734,6 @@ static void show_signal(ivl_signal_t net)
|
||||||
ivl_signal_t sig;
|
ivl_signal_t sig;
|
||||||
ivl_nexus_ptr_t ptr = ivl_nexus_ptr(nex, idx);
|
ivl_nexus_ptr_t ptr = ivl_nexus_ptr(nex, idx);
|
||||||
|
|
||||||
static const char* str_tab[8] = {
|
|
||||||
"HiZ", "small", "medium", "weak",
|
|
||||||
"large", "pull", "strong", "supply"};
|
|
||||||
|
|
||||||
const char*dr0 = str_tab[ivl_nexus_ptr_drive0(ptr)];
|
const char*dr0 = str_tab[ivl_nexus_ptr_drive0(ptr)];
|
||||||
const char*dr1 = str_tab[ivl_nexus_ptr_drive1(ptr)];
|
const char*dr1 = str_tab[ivl_nexus_ptr_drive1(ptr)];
|
||||||
|
|
||||||
|
|
@ -737,12 +768,7 @@ static void show_signal(ivl_signal_t net)
|
||||||
ivl_lpm_basename(lpm), dr0, dr1);
|
ivl_lpm_basename(lpm), dr0, dr1);
|
||||||
|
|
||||||
} else if ((con = ivl_nexus_ptr_con(ptr))) {
|
} else if ((con = ivl_nexus_ptr_con(ptr))) {
|
||||||
const char*bits = ivl_const_bits(con);
|
signal_nexus_const(net, ptr, con);
|
||||||
unsigned pin = ivl_nexus_ptr_pin(ptr);
|
|
||||||
|
|
||||||
fprintf(out, " const-%c (%s0, %s1)\n",
|
|
||||||
bits[pin], dr0, dr1);
|
|
||||||
|
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
fprintf(out, " ?[%u] (%s0, %s1)\n",
|
fprintf(out, " ?[%u] (%s0, %s1)\n",
|
||||||
|
|
@ -948,6 +974,9 @@ int target_design(ivl_design_t des)
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* $Log: stub.c,v $
|
* $Log: stub.c,v $
|
||||||
|
* Revision 1.103 2005/01/29 16:47:52 steve
|
||||||
|
* Check width of constant attached to nexus.
|
||||||
|
*
|
||||||
* Revision 1.102 2005/01/28 05:36:18 steve
|
* Revision 1.102 2005/01/28 05:36:18 steve
|
||||||
* Show the lpm_mult device.
|
* Show the lpm_mult device.
|
||||||
*
|
*
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue