Allow primitives to hvae unconnected input ports.
This commit is contained in:
parent
d9b86d9b3a
commit
3bd08e6212
11
t-dll.cc
11
t-dll.cc
|
|
@ -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: t-dll.cc,v 1.110 2003/04/11 05:18:08 steve Exp $"
|
#ident "$Id: t-dll.cc,v 1.111 2003/05/13 01:56:15 steve Exp $"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
# include "config.h"
|
# include "config.h"
|
||||||
|
|
@ -1026,6 +1026,12 @@ void dll_target::udp(const NetUDP*net)
|
||||||
obj->pins_ = new ivl_nexus_t[obj->npins_];
|
obj->pins_ = new ivl_nexus_t[obj->npins_];
|
||||||
for (unsigned idx = 0 ; idx < obj->npins_ ; idx += 1) {
|
for (unsigned idx = 0 ; idx < obj->npins_ ; idx += 1) {
|
||||||
const Nexus*nex = net->pin(idx).nexus();
|
const Nexus*nex = net->pin(idx).nexus();
|
||||||
|
|
||||||
|
/* Skip unconnected input pins. These will take on HiZ
|
||||||
|
values by the code generators. */
|
||||||
|
if (nex->t_cookie() == 0)
|
||||||
|
continue;
|
||||||
|
|
||||||
assert(nex->t_cookie());
|
assert(nex->t_cookie());
|
||||||
obj->pins_[idx] = (ivl_nexus_t) nex->t_cookie();
|
obj->pins_[idx] = (ivl_nexus_t) nex->t_cookie();
|
||||||
nexus_log_add(obj->pins_[idx], obj, idx);
|
nexus_log_add(obj->pins_[idx], obj, idx);
|
||||||
|
|
@ -2120,6 +2126,9 @@ extern const struct target tgt_dll = { "dll", &dll_target_obj };
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* $Log: t-dll.cc,v $
|
* $Log: t-dll.cc,v $
|
||||||
|
* Revision 1.111 2003/05/13 01:56:15 steve
|
||||||
|
* Allow primitives to hvae unconnected input ports.
|
||||||
|
*
|
||||||
* Revision 1.110 2003/04/11 05:18:08 steve
|
* Revision 1.110 2003/04/11 05:18:08 steve
|
||||||
* Handle signed magnitude compare all the
|
* Handle signed magnitude compare all the
|
||||||
* way through to the vvp code generator.
|
* way through to the vvp code generator.
|
||||||
|
|
|
||||||
|
|
@ -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.77 2003/04/11 05:18:08 steve Exp $"
|
#ident "$Id: stub.c,v 1.78 2003/05/13 01:56:15 steve Exp $"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
# include "config.h"
|
# include "config.h"
|
||||||
|
|
@ -731,6 +731,12 @@ static void show_logic(ivl_net_logic_t net)
|
||||||
fprintf(out, " xor %s (%s", name,
|
fprintf(out, " xor %s (%s", name,
|
||||||
ivl_nexus_name(ivl_logic_pin(net, 0)));
|
ivl_nexus_name(ivl_logic_pin(net, 0)));
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case IVL_LO_UDP:
|
||||||
|
fprintf(out, " primitive %s (%s", name,
|
||||||
|
ivl_nexus_name(ivl_logic_pin(net, 0)));
|
||||||
|
break;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
fprintf(out, " unsupported gate %s (%s", name,
|
fprintf(out, " unsupported gate %s (%s", name,
|
||||||
ivl_nexus_name(ivl_logic_pin(net, 0)));
|
ivl_nexus_name(ivl_logic_pin(net, 0)));
|
||||||
|
|
@ -738,8 +744,14 @@ static void show_logic(ivl_net_logic_t net)
|
||||||
}
|
}
|
||||||
|
|
||||||
npins = ivl_logic_pins(net);
|
npins = ivl_logic_pins(net);
|
||||||
for (idx = 1 ; idx < npins ; idx += 1)
|
for (idx = 1 ; idx < npins ; idx += 1) {
|
||||||
fprintf(out, ", %s", ivl_nexus_name(ivl_logic_pin(net,idx)));
|
ivl_nexus_t nex = ivl_logic_pin(net,idx);
|
||||||
|
|
||||||
|
if (nex == 0)
|
||||||
|
fprintf(out, ", <HiZ>");
|
||||||
|
else
|
||||||
|
fprintf(out, ", %s", ivl_nexus_name(nex));
|
||||||
|
}
|
||||||
|
|
||||||
fprintf(out, ");\n");
|
fprintf(out, ");\n");
|
||||||
|
|
||||||
|
|
@ -840,6 +852,9 @@ int target_design(ivl_design_t des)
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* $Log: stub.c,v $
|
* $Log: stub.c,v $
|
||||||
|
* Revision 1.78 2003/05/13 01:56:15 steve
|
||||||
|
* Allow primitives to hvae unconnected input ports.
|
||||||
|
*
|
||||||
* Revision 1.77 2003/04/11 05:18:08 steve
|
* Revision 1.77 2003/04/11 05:18:08 steve
|
||||||
* Handle signed magnitude compare all the
|
* Handle signed magnitude compare all the
|
||||||
* way through to the vvp code generator.
|
* way through to the vvp code generator.
|
||||||
|
|
|
||||||
|
|
@ -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: vvp_scope.c,v 1.92 2003/04/11 05:18:08 steve Exp $"
|
#ident "$Id: vvp_scope.c,v 1.93 2003/05/13 01:56:15 steve Exp $"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
# include "vvp_priv.h"
|
# include "vvp_priv.h"
|
||||||
|
|
@ -684,12 +684,20 @@ static void draw_udp_in_scope(ivl_net_logic_t lptr)
|
||||||
vvp_mangle_id(ivl_udp_name(udp)));
|
vvp_mangle_id(ivl_udp_name(udp)));
|
||||||
draw_delay(lptr);
|
draw_delay(lptr);
|
||||||
|
|
||||||
for (pdx = 1 ; pdx < ivl_logic_pins(lptr) ; pdx += 1)
|
for (pdx = 1 ; pdx < ivl_logic_pins(lptr) ; pdx += 1) {
|
||||||
{
|
ivl_nexus_t nex = ivl_logic_pin(lptr, pdx);
|
||||||
ivl_nexus_t nex = ivl_logic_pin(lptr, pdx);
|
|
||||||
fprintf(vvp_out, ", ");
|
/* Unlike other logic gates, primitives may have unconnected
|
||||||
draw_input_from_net(nex);
|
inputs. The proper behavior is to attach a HiZ to the
|
||||||
}
|
port. */
|
||||||
|
if (nex == 0) {
|
||||||
|
fprintf(vvp_out, ", C<z>");
|
||||||
|
|
||||||
|
} else {
|
||||||
|
fprintf(vvp_out, ", ");
|
||||||
|
draw_input_from_net(nex);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
fprintf(vvp_out, ";\n");
|
fprintf(vvp_out, ";\n");
|
||||||
}
|
}
|
||||||
|
|
@ -708,12 +716,21 @@ static void draw_logic_in_scope(ivl_net_logic_t lptr)
|
||||||
typedef const char*const_charp;
|
typedef const char*const_charp;
|
||||||
const_charp*input_strings = calloc(ninp, sizeof(const_charp));
|
const_charp*input_strings = calloc(ninp, sizeof(const_charp));
|
||||||
|
|
||||||
for (pdx = 0 ; pdx < ninp ; pdx += 1)
|
for (pdx = 0 ; pdx < ninp ; pdx += 1) {
|
||||||
input_strings[pdx] = draw_net_input(ivl_logic_pin(lptr, pdx+1));
|
ivl_nexus_t nex = ivl_logic_pin(lptr, pdx+1);
|
||||||
|
if (nex == 0) {
|
||||||
|
/* Only UDPs can have unconnected inputs. */
|
||||||
|
assert(ivl_logic_type(lptr) == IVL_LO_UDP);
|
||||||
|
input_strings[pdx] = 0;
|
||||||
|
} else {
|
||||||
|
input_strings[pdx] = draw_net_input(nex);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
switch (ivl_logic_type(lptr)) {
|
switch (ivl_logic_type(lptr)) {
|
||||||
|
|
||||||
case IVL_LO_UDP:
|
case IVL_LO_UDP:
|
||||||
|
free(input_strings);
|
||||||
draw_udp_in_scope(lptr);
|
draw_udp_in_scope(lptr);
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
|
@ -746,6 +763,7 @@ static void draw_logic_in_scope(ivl_net_logic_t lptr)
|
||||||
/* Skip pullup and pulldown objects. Things that have
|
/* Skip pullup and pulldown objects. Things that have
|
||||||
pull objects as inputs will instead generate the
|
pull objects as inputs will instead generate the
|
||||||
appropriate C<?> symbol. */
|
appropriate C<?> symbol. */
|
||||||
|
free(input_strings);
|
||||||
return;
|
return;
|
||||||
|
|
||||||
case IVL_LO_AND:
|
case IVL_LO_AND:
|
||||||
|
|
@ -1629,6 +1647,9 @@ int draw_scope(ivl_scope_t net, ivl_scope_t parent)
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* $Log: vvp_scope.c,v $
|
* $Log: vvp_scope.c,v $
|
||||||
|
* Revision 1.93 2003/05/13 01:56:15 steve
|
||||||
|
* Allow primitives to hvae unconnected input ports.
|
||||||
|
*
|
||||||
* Revision 1.92 2003/04/11 05:18:08 steve
|
* Revision 1.92 2003/04/11 05:18:08 steve
|
||||||
* Handle signed magnitude compare all the
|
* Handle signed magnitude compare all the
|
||||||
* way through to the vvp code generator.
|
* way through to the vvp code generator.
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue