From dc6d3f4afbfef52cdf4a7c2190cfa7fe69625fbf Mon Sep 17 00:00:00 2001 From: Stephen Williams Date: Tue, 12 Aug 2008 21:31:39 -0700 Subject: [PATCH] Fix a spurious non-local net. During elaboration of continuous assignment that connected the rval to the lval with a part select forgot to mark the signal it created as temporary. --- elaborate.cc | 1 + netlist.cc | 2 ++ 2 files changed, 3 insertions(+) diff --git a/elaborate.cc b/elaborate.cc index fab58d9e9..82c052e74 100644 --- a/elaborate.cc +++ b/elaborate.cc @@ -164,6 +164,7 @@ void PGAssign::elaborate(Design*des, NetScope*scope) const NetNet*osig = new NetNet(scope, scope->local_symbol(), NetNet::TRI, lval->vector_width()); osig->set_line(*this); + osig->local_flag(true); osig->data_type(rval->data_type()); connect(osig->pin(0), tmp->pin(0)); rval = osig; diff --git a/netlist.cc b/netlist.cc index 51cf898f6..462947d52 100644 --- a/netlist.cc +++ b/netlist.cc @@ -2295,6 +2295,8 @@ const NetExpr* NetETernary::false_expr() const ivl_variable_type_t NetETernary::expr_type() const { + ivl_assert(*this, true_val_); + ivl_assert(*this, false_val_); ivl_variable_type_t tru = true_val_->expr_type(); ivl_variable_type_t fal = false_val_->expr_type(); if (tru == IVL_VT_LOGIC && fal == IVL_VT_BOOL)