diff --git a/design_dump.cc b/design_dump.cc index 84d16c39c..f0bdf1b32 100644 --- a/design_dump.cc +++ b/design_dump.cc @@ -17,7 +17,7 @@ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA */ #if !defined(WINNT) -#ident "$Id: design_dump.cc,v 1.62 1999/12/05 02:24:08 steve Exp $" +#ident "$Id: design_dump.cc,v 1.63 1999/12/12 06:03:14 steve Exp $" #endif /* @@ -741,7 +741,7 @@ void NetESubSignal::dump(ostream&o) const void NetEMemory::dump(ostream&o) const { o << mem_->name() << "["; - idx_->dump(o); + if (idx_) idx_->dump(o); o << "]"; } @@ -862,6 +862,9 @@ void Design::dump(ostream&o) const /* * $Log: design_dump.cc,v $ + * Revision 1.63 1999/12/12 06:03:14 steve + * Allow memories without indices in expressions. + * * Revision 1.62 1999/12/05 02:24:08 steve * Synthesize LPM_RAM_DQ for writes into memories. * diff --git a/elab_expr.cc b/elab_expr.cc index 58e4bd20f..8e88efb01 100644 --- a/elab_expr.cc +++ b/elab_expr.cc @@ -17,7 +17,7 @@ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA */ #if !defined(WINNT) -#ident "$Id: elab_expr.cc,v 1.12 1999/11/30 04:54:01 steve Exp $" +#ident "$Id: elab_expr.cc,v 1.13 1999/12/12 06:03:14 steve Exp $" #endif @@ -263,10 +263,15 @@ NetExpr* PEIdent::elaborate_expr(Design*des, const string&path) const // object to handle it. if (NetMemory*mem = des->find_memory(path, text_)) { if (msb_ == 0) { + NetEMemory*node = new NetEMemory(mem); + node->set_line(*this); + return node; +#if 0 cerr << get_line() << ": error: Memory ``" << name << "'' referenced without an index expression." << endl; des->errors += 1; return 0; +#endif } assert(msb_ != 0); assert(lsb_ == 0); @@ -332,6 +337,9 @@ NetExpr*PETernary::elaborate_expr(Design*des, const string&path) const /* * $Log: elab_expr.cc,v $ + * Revision 1.13 1999/12/12 06:03:14 steve + * Allow memories without indices in expressions. + * * Revision 1.12 1999/11/30 04:54:01 steve * Match scope names as last resort. * diff --git a/netlist.h b/netlist.h index e6002ce39..ffb417bee 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) -#ident "$Id: netlist.h,v 1.100 1999/12/09 06:00:00 steve Exp $" +#ident "$Id: netlist.h,v 1.101 1999/12/12 06:03:14 steve Exp $" #endif /* @@ -1803,12 +1803,14 @@ class NetEIdent : public NetExpr { }; /* - * A reference to a memory is represented by this expression. + * A reference to a memory is represented by this expression. If the + * index is not supplied, then the node is only valid in certain + * specific contexts. */ class NetEMemory : public NetExpr { public: - NetEMemory(NetMemory*mem, NetExpr*idx); + NetEMemory(NetMemory*mem, NetExpr*idx =0); virtual ~NetEMemory(); const string& name () const { return mem_->name(); } @@ -2067,6 +2069,9 @@ extern ostream& operator << (ostream&, NetNet::Type); /* * $Log: netlist.h,v $ + * Revision 1.101 1999/12/12 06:03:14 steve + * Allow memories without indices in expressions. + * * Revision 1.100 1999/12/09 06:00:00 steve * Fix const/non-const errors. * diff --git a/t-vvm.cc b/t-vvm.cc index 6836c8f3b..e01ac0e48 100644 --- a/t-vvm.cc +++ b/t-vvm.cc @@ -17,7 +17,7 @@ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA */ #if !defined(WINNT) -#ident "$Id: t-vvm.cc,v 1.88 1999/12/05 02:24:09 steve Exp $" +#ident "$Id: t-vvm.cc,v 1.89 1999/12/12 06:03:14 steve Exp $" #endif # include @@ -242,6 +242,7 @@ void vvm_proc_rval::expr_ident(const NetEIdent*expr) void vvm_proc_rval::expr_memory(const NetEMemory*mem) { const string mname = mangle(mem->name()); + assert(mem->index()); mem->index()->expr_scan(this); result = mname + ".get_word(" + result + ".as_unsigned())"; } @@ -1958,6 +1959,9 @@ extern const struct target tgt_vvm = { }; /* * $Log: t-vvm.cc,v $ + * Revision 1.89 1999/12/12 06:03:14 steve + * Allow memories without indices in expressions. + * * Revision 1.88 1999/12/05 02:24:09 steve * Synthesize LPM_RAM_DQ for writes into memories. *