From eda3c63f721c4d2fafab6446cb1413c503956a0f Mon Sep 17 00:00:00 2001 From: steve Date: Mon, 1 Jan 2001 01:41:09 +0000 Subject: [PATCH] reg_assign into function ports. (PR#95) --- t-vvm.cc | 30 +++++++++++++++++++++++------- 1 file changed, 23 insertions(+), 7 deletions(-) diff --git a/t-vvm.cc b/t-vvm.cc index 9c7bf0317..e92843202 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) && !defined(macintosh) -#ident "$Id: t-vvm.cc,v 1.197 2000/12/17 05:33:11 steve Exp $" +#ident "$Id: t-vvm.cc,v 1.198 2001/01/01 01:41:09 steve Exp $" #endif # include @@ -259,6 +259,7 @@ class target_vvm : public target_t { unsigned signal_bit_counter; unsigned signal_counter; + public: mapnexus_wire_map; unsigned nexus_wire_counter; @@ -593,15 +594,27 @@ void vvm_proc_rval::expr_ufunc(const NetEUFunc*expr) the parameter port register. */ for (unsigned idx = 0 ; idx < pcnt ; idx += 1) { assert(expr->parm(idx)); - assert(def->port(idx+1)); + + const NetNet*pnet = def->port(idx+1); + assert(pnet); expr->parm(idx)->expr_scan(this); - string bname = mangle(def->port(idx+1)->name()); - for (unsigned bit = 0 ; - bit < expr->parm(idx)->expr_width() ; bit += 1) { + tgt_->defn << " // " << pnet->name() << " == " + << result << endl; - tgt_->defn << " " << bname << ".bits["<parm(idx)->expr_width(); + if (pnet->pin_count() < wid) + wid = pnet->pin_count(); + + string bname = mangle(def->port(idx+1)->name()); + for (unsigned bit = 0 ; bit < wid ; bit += 1) { + + string nexus = pnet->pin(bit).nexus()->name(); + unsigned ncode = tgt_->nexus_wire_map[nexus]; + + tgt_->defn << " nexus_wire_table["<