diff --git a/net_assign.cc b/net_assign.cc index fde16e270..796fd5e38 100644 --- a/net_assign.cc +++ b/net_assign.cc @@ -17,7 +17,7 @@ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA */ #if !defined(WINNT) && !defined(macintosh) -#ident "$Id: net_assign.cc,v 1.12 2002/06/08 23:42:46 steve Exp $" +#ident "$Id: net_assign.cc,v 1.13 2002/07/02 03:02:57 steve Exp $" #endif # include "config.h" @@ -57,7 +57,12 @@ NetAssign_::NetAssign_(NetMemory*s) NetAssign_::~NetAssign_() { - if (sig_) sig_->decr_lref(); + if (sig_) { + sig_->decr_lref(); + if (sig_->peek_lref() == 0) + sig_->type(NetNet::WIRE); + } + assert( more == 0 ); if (bmux_) delete bmux_; } @@ -236,6 +241,9 @@ NetAssignNB::~NetAssignNB() /* * $Log: net_assign.cc,v $ + * Revision 1.13 2002/07/02 03:02:57 steve + * Change the signal to a net when assignments go away. + * * Revision 1.12 2002/06/08 23:42:46 steve * Add NetRamDq synthsesis from memory l-values. * diff --git a/netlist.cc b/netlist.cc index 9b7420768..ac023d9f9 100644 --- a/netlist.cc +++ b/netlist.cc @@ -17,7 +17,7 @@ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA */ #if !defined(WINNT) && !defined(macintosh) -#ident "$Id: netlist.cc,v 1.192 2002/06/21 04:59:35 steve Exp $" +#ident "$Id: netlist.cc,v 1.193 2002/07/02 03:02:57 steve Exp $" #endif # include "config.h" @@ -363,6 +363,35 @@ NetNet::Type NetNet::type() const return type_; } +void NetNet::type(NetNet::Type t) +{ + if (type_ == t) + return; + + Link::DIR dir = Link::PASSIVE; + switch (t) { + case REG: + case IMPLICIT_REG: + dir = Link::OUTPUT; + break; + case SUPPLY0: + dir = Link::OUTPUT; + break; + case SUPPLY1: + dir = Link::OUTPUT; + break; + default: + break; + } + + type_ = t; + for (unsigned idx = 0 ; idx < pin_count() ; idx += 1) { + pin(idx).set_dir(dir); + } + +} + + NetNet::PortType NetNet::port_type() const { return port_type_; @@ -2342,6 +2371,9 @@ const NetProc*NetTaskDef::proc() const /* * $Log: netlist.cc,v $ + * Revision 1.193 2002/07/02 03:02:57 steve + * Change the signal to a net when assignments go away. + * * Revision 1.192 2002/06/21 04:59:35 steve * Carry integerness throughout the compilation. * diff --git a/netlist.h b/netlist.h index f692fbe3c..4e4ff7c25 100644 --- a/netlist.h +++ b/netlist.h @@ -19,7 +19,7 @@ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA */ #if !defined(WINNT) && !defined(macintosh) -#ident "$Id: netlist.h,v 1.249 2002/07/01 00:54:21 steve Exp $" +#ident "$Id: netlist.h,v 1.250 2002/07/02 03:02:57 steve Exp $" #endif /* @@ -365,6 +365,7 @@ class NetNet : public NetObj, public LineInfo { virtual ~NetNet(); Type type() const; + void type(Type t); PortType port_type() const; void port_type(PortType t); @@ -2993,6 +2994,9 @@ extern ostream& operator << (ostream&, NetNet::Type); /* * $Log: netlist.h,v $ + * Revision 1.250 2002/07/02 03:02:57 steve + * Change the signal to a net when assignments go away. + * * Revision 1.249 2002/07/01 00:54:21 steve * synth_asych of if/else requires redirecting the target * if sub-statements. Use NetNet objects to manage the