From f944d3135329b6a65df4f3c5ab7f0a4e65da9081 Mon Sep 17 00:00:00 2001 From: Stephen Williams Date: Wed, 9 Jan 2008 14:24:30 -0800 Subject: [PATCH] Improved assertion on signal arrays. Use ivl_expr_file() information to improve a signal assert message. --- t-dll-expr.cc | 2 ++ tgt-vvp/eval_expr.c | 6 ++++++ 2 files changed, 8 insertions(+) diff --git a/t-dll-expr.cc b/t-dll-expr.cc index 4c73e3c44..9b040ecd3 100644 --- a/t-dll-expr.cc +++ b/t-dll-expr.cc @@ -407,6 +407,8 @@ void dll_target::expr_signal(const NetESignal*net) expr_->type_ = IVL_EX_SIGNAL; expr_->value_= net->expr_type(); + expr_->file = net->get_file(); + expr_->lineno= net->get_lineno(); expr_->width_= net->expr_width(); expr_->signed_ = net->has_sign()? 1 : 0; expr_->u_.signal_.word = word_expr; diff --git a/tgt-vvp/eval_expr.c b/tgt-vvp/eval_expr.c index eae28e858..d57b9af54 100644 --- a/tgt-vvp/eval_expr.c +++ b/tgt-vvp/eval_expr.c @@ -1739,6 +1739,12 @@ static void draw_signal_dest(ivl_expr_t exp, struct vector_info res, if (ivl_signal_array_count(sig) > 1) { ivl_expr_t ix = ivl_expr_oper1(exp); if (!number_is_immediate(ix, 8*sizeof(unsigned long))) { + if (add_index >= 0) { + fprintf(stderr, "%s:%u: vvp-tgt error: " + "add_index=%d at %s:%d\n", + ivl_expr_file(exp), ivl_expr_lineno(exp), + add_index, __FILE__, __LINE__); + } assert(add_index < 0); draw_eval_expr_into_integer(ix, 3); fprintf(vvp_out, " %%load/av %u, v%p, %u;\n",