Parameters cannot have their width changed.
This commit is contained in:
parent
82be4ab189
commit
7796c8bcfb
|
|
@ -17,7 +17,7 @@
|
|||
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
|
||||
*/
|
||||
#ifdef HAVE_CVS_IDENT
|
||||
#ident "$Id: design_dump.cc,v 1.158 2005/05/07 03:13:30 steve Exp $"
|
||||
#ident "$Id: design_dump.cc,v 1.159 2005/05/17 20:56:55 steve Exp $"
|
||||
#endif
|
||||
|
||||
# include "config.h"
|
||||
|
|
@ -999,7 +999,7 @@ void NetEConstParam::dump(ostream&o) const
|
|||
{
|
||||
o << "<" << name_ << "=";
|
||||
NetEConst::dump(o);
|
||||
o << ">";
|
||||
o << ", wid=" << expr_width() << ">";
|
||||
}
|
||||
|
||||
void NetECReal::dump(ostream&o) const
|
||||
|
|
@ -1143,6 +1143,9 @@ void Design::dump(ostream&o) const
|
|||
|
||||
/*
|
||||
* $Log: design_dump.cc,v $
|
||||
* Revision 1.159 2005/05/17 20:56:55 steve
|
||||
* Parameters cannot have their width changed.
|
||||
*
|
||||
* Revision 1.158 2005/05/07 03:13:30 steve
|
||||
* Include delay expressions for assignments in dump.
|
||||
*
|
||||
|
|
|
|||
17
elaborate.cc
17
elaborate.cc
|
|
@ -17,7 +17,7 @@
|
|||
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
|
||||
*/
|
||||
#ifdef HAVE_CVS_IDENT
|
||||
#ident "$Id: elaborate.cc,v 1.322 2005/05/13 05:12:39 steve Exp $"
|
||||
#ident "$Id: elaborate.cc,v 1.323 2005/05/17 20:56:55 steve Exp $"
|
||||
#endif
|
||||
|
||||
# include "config.h"
|
||||
|
|
@ -1861,9 +1861,10 @@ NetProc* PCallTask::elaborate_usr(Design*des, NetScope*scope) const
|
|||
continue;
|
||||
|
||||
NetESignal*sig = new NetESignal(port);
|
||||
NetExpr*rv = pad_to_width(sig, count_lval_width(lv));
|
||||
|
||||
/* Generate the assignment statement. */
|
||||
NetAssign*ass = new NetAssign(lv, sig);
|
||||
NetAssign*ass = new NetAssign(lv, rv);
|
||||
|
||||
block->append(ass);
|
||||
}
|
||||
|
|
@ -2478,8 +2479,15 @@ NetProc* PForStatement::elaborate(Design*des, NetScope*scope) const
|
|||
|
||||
/* Make the r-value of the initial assignment, and size it
|
||||
properly. Then use it to build the assignment statement. */
|
||||
etmp = expr1_->elaborate_expr(des, scope);
|
||||
etmp = elab_and_eval(des, scope, expr1_);
|
||||
etmp->set_width(lv->lwidth());
|
||||
etmp = pad_to_width(etmp, lv->lwidth());
|
||||
|
||||
if (debug_elaborate) {
|
||||
cerr << get_line() << ": debug: FOR initial assign: "
|
||||
<< sig->name() << " = " << *etmp << endl;
|
||||
assert(etmp->expr_width() >= lv->lwidth());
|
||||
}
|
||||
|
||||
NetAssign*init = new NetAssign(lv, etmp);
|
||||
init->set_line(*this);
|
||||
|
|
@ -2957,6 +2965,9 @@ Design* elaborate(list<perm_string>roots)
|
|||
|
||||
/*
|
||||
* $Log: elaborate.cc,v $
|
||||
* Revision 1.323 2005/05/17 20:56:55 steve
|
||||
* Parameters cannot have their width changed.
|
||||
*
|
||||
* Revision 1.322 2005/05/13 05:12:39 steve
|
||||
* Some debug messages.
|
||||
*
|
||||
|
|
|
|||
|
|
@ -19,7 +19,7 @@
|
|||
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
|
||||
*/
|
||||
#ifdef HAVE_CVS_IDENT
|
||||
#ident "$Id: netlist.h,v 1.342 2005/05/08 23:44:08 steve Exp $"
|
||||
#ident "$Id: netlist.h,v 1.343 2005/05/17 20:56:55 steve Exp $"
|
||||
#endif
|
||||
|
||||
/*
|
||||
|
|
@ -1123,6 +1123,7 @@ class NetEConstParam : public NetEConst {
|
|||
perm_string name() const;
|
||||
const NetScope*scope() const;
|
||||
|
||||
virtual bool set_width(unsigned w);
|
||||
virtual void expr_scan(struct expr_scan_t*) const;
|
||||
virtual void dump(ostream&) const;
|
||||
|
||||
|
|
@ -3443,6 +3444,9 @@ extern ostream& operator << (ostream&, NetNet::Type);
|
|||
|
||||
/*
|
||||
* $Log: netlist.h,v $
|
||||
* Revision 1.343 2005/05/17 20:56:55 steve
|
||||
* Parameters cannot have their width changed.
|
||||
*
|
||||
* Revision 1.342 2005/05/08 23:44:08 steve
|
||||
* Add support for variable part select.
|
||||
*
|
||||
|
|
|
|||
14
set_width.cc
14
set_width.cc
|
|
@ -17,7 +17,7 @@
|
|||
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
|
||||
*/
|
||||
#ifdef HAVE_CVS_IDENT
|
||||
#ident "$Id: set_width.cc,v 1.35 2005/01/24 05:28:31 steve Exp $"
|
||||
#ident "$Id: set_width.cc,v 1.36 2005/05/17 20:56:55 steve Exp $"
|
||||
#endif
|
||||
|
||||
# include "config.h"
|
||||
|
|
@ -312,6 +312,15 @@ bool NetEConst::set_width(unsigned w)
|
|||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* Parameter vectors cannot be resized because they refer to a common
|
||||
* value.
|
||||
*/
|
||||
bool NetEConstParam::set_width(unsigned w)
|
||||
{
|
||||
return w == expr_width();
|
||||
}
|
||||
|
||||
/*
|
||||
* Real constants can have whatever width the environment wants,
|
||||
* because it isn't really a vector. The environment will convert this
|
||||
|
|
@ -405,6 +414,9 @@ bool NetEUReduce::set_width(unsigned w)
|
|||
|
||||
/*
|
||||
* $Log: set_width.cc,v $
|
||||
* Revision 1.36 2005/05/17 20:56:55 steve
|
||||
* Parameters cannot have their width changed.
|
||||
*
|
||||
* Revision 1.35 2005/01/24 05:28:31 steve
|
||||
* Remove the NetEBitSel and combine all bit/part select
|
||||
* behavior into the NetESelect node and IVL_EX_SELECT
|
||||
|
|
|
|||
Loading…
Reference in New Issue