Generate SubSignal refrences in vvm.
This commit is contained in:
parent
471d389c8c
commit
4b73655537
|
|
@ -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.25 1999/04/25 00:44:10 steve Exp $"
|
||||
#ident "$Id: netlist.h,v 1.26 1999/04/25 22:52:32 steve Exp $"
|
||||
#endif
|
||||
|
||||
/*
|
||||
|
|
@ -986,6 +986,9 @@ class NetESubSignal : public NetExpr {
|
|||
NetESubSignal(NetESignal*sig, NetExpr*ex);
|
||||
~NetESubSignal();
|
||||
|
||||
const string&name() const { return sig_->name(); }
|
||||
const NetExpr*index() const { return idx_.ref(); }
|
||||
|
||||
virtual void expr_scan(struct expr_scan_t*) const;
|
||||
virtual void dump(ostream&) const;
|
||||
|
||||
|
|
@ -1126,6 +1129,9 @@ extern ostream& operator << (ostream&, NetNet::Type);
|
|||
|
||||
/*
|
||||
* $Log: netlist.h,v $
|
||||
* Revision 1.26 1999/04/25 22:52:32 steve
|
||||
* Generate SubSignal refrences in vvm.
|
||||
*
|
||||
* Revision 1.25 1999/04/25 00:44:10 steve
|
||||
* Core handles subsignal expressions.
|
||||
*
|
||||
|
|
|
|||
27
t-vvm.cc
27
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.16 1999/04/22 04:56:58 steve Exp $"
|
||||
#ident "$Id: t-vvm.cc,v 1.17 1999/04/25 22:52:32 steve Exp $"
|
||||
#endif
|
||||
|
||||
# include <iostream>
|
||||
|
|
@ -101,6 +101,7 @@ class vvm_proc_rval : public expr_scan_t {
|
|||
result = mangle(mem->name()) + "[" + idx + "]";
|
||||
}
|
||||
virtual void expr_signal(const NetESignal*);
|
||||
virtual void expr_subsignal(const NetESubSignal*sig);
|
||||
virtual void expr_unary(const NetEUnary*);
|
||||
virtual void expr_binary(const NetEBinary*);
|
||||
};
|
||||
|
|
@ -142,6 +143,27 @@ void vvm_proc_rval::expr_signal(const NetESignal*expr)
|
|||
result = mangle(expr->name()) + "_bits";
|
||||
}
|
||||
|
||||
void vvm_proc_rval::expr_subsignal(const NetESubSignal*sig)
|
||||
{
|
||||
string idx = make_temp();
|
||||
string val = make_temp();
|
||||
if (const NetEConst*cp = dynamic_cast<const NetEConst*>(sig->index())) {
|
||||
os_ << setw(indent_) << "" << "const unsigned " << idx <<
|
||||
" = " << cp->value().as_ulong() << ";" << endl;
|
||||
|
||||
} else {
|
||||
sig->index()->expr_scan(this);
|
||||
os_ << setw(indent_) << "" << "const unsigned " <<
|
||||
idx << " = " << result << ".as_unsigned();" <<
|
||||
endl;
|
||||
}
|
||||
|
||||
os_ << setw(indent_) << "" << "vvm_bitset_t<1>" << val << ";" << endl;
|
||||
os_ << setw(indent_) << "" << val << "[0] = " <<
|
||||
mangle(sig->name()) << "_bits[" << idx << "];" << endl;
|
||||
result = val;
|
||||
}
|
||||
|
||||
void vvm_proc_rval::expr_unary(const NetEUnary*expr)
|
||||
{
|
||||
expr->expr()->expr_scan(this);
|
||||
|
|
@ -901,6 +923,9 @@ extern const struct target tgt_vvm = {
|
|||
};
|
||||
/*
|
||||
* $Log: t-vvm.cc,v $
|
||||
* Revision 1.17 1999/04/25 22:52:32 steve
|
||||
* Generate SubSignal refrences in vvm.
|
||||
*
|
||||
* Revision 1.16 1999/04/22 04:56:58 steve
|
||||
* Add to vvm proceedural memory references.
|
||||
*
|
||||
|
|
|
|||
Loading…
Reference in New Issue