From cd2d4e92873a8133097326829b6ab2bbf4d21608 Mon Sep 17 00:00:00 2001 From: Martin Whitaker Date: Sat, 3 Feb 2024 14:06:40 +0000 Subject: [PATCH] Improve error messages when multiple drivers are detected. Distinguish between nets declared as uwires and variables. --- elab_net.cc | 8 ++++++-- ivtest/gold/br_gh1087a2-iverilog-stderr.gold | 2 +- ivtest/gold/br_gh1087b-iverilog-stderr.gold | 2 +- ivtest/gold/uwire_fail.gold | 2 +- 4 files changed, 9 insertions(+), 5 deletions(-) diff --git a/elab_net.cc b/elab_net.cc index 991b38fc4..ab7a89642 100644 --- a/elab_net.cc +++ b/elab_net.cc @@ -876,8 +876,12 @@ NetNet* PEIdent::elaborate_lnet_common_(Design*des, NetScope*scope, long wcount = widx_flag ? 1 : sig->pin_count(); for (long idx = 0; idx < wcount; idx += 1) { if (sig->test_and_set_part_driver(midx, lidx, widx + idx)) { - cerr << get_fileline() << ": error: Unresolved net/uwire " - << sig->name() << " cannot have multiple drivers." << endl; + cerr << get_fileline() << ": error: "; + if (sig->coerced_to_uwire()) + cerr << "Variable '"; + else + cerr << "Unresolved wire '"; + cerr << sig->name() << "' cannot have multiple drivers." << endl; if (debug_elaborate) { cerr << get_fileline() << ": : Overlap in " << "[" << midx << ":" << lidx << "] (canonical)" diff --git a/ivtest/gold/br_gh1087a2-iverilog-stderr.gold b/ivtest/gold/br_gh1087a2-iverilog-stderr.gold index 816d398aa..10c4437c8 100644 --- a/ivtest/gold/br_gh1087a2-iverilog-stderr.gold +++ b/ivtest/gold/br_gh1087a2-iverilog-stderr.gold @@ -1,2 +1,2 @@ -ivltests/br_gh1087a.v:6: error: Unresolved net/uwire r cannot have multiple drivers. +ivltests/br_gh1087a.v:6: error: Unresolved wire 'r' cannot have multiple drivers. 1 error(s) during elaboration. diff --git a/ivtest/gold/br_gh1087b-iverilog-stderr.gold b/ivtest/gold/br_gh1087b-iverilog-stderr.gold index 1d1843f32..6eb1286ea 100644 --- a/ivtest/gold/br_gh1087b-iverilog-stderr.gold +++ b/ivtest/gold/br_gh1087b-iverilog-stderr.gold @@ -1,2 +1,2 @@ -ivltests/br_gh1087b.v:6: error: Unresolved net/uwire b cannot have multiple drivers. +ivltests/br_gh1087b.v:6: error: Unresolved wire 'b' cannot have multiple drivers. 1 error(s) during elaboration. diff --git a/ivtest/gold/uwire_fail.gold b/ivtest/gold/uwire_fail.gold index 3d0474a9f..2dc9c032a 100644 --- a/ivtest/gold/uwire_fail.gold +++ b/ivtest/gold/uwire_fail.gold @@ -1,2 +1,2 @@ -./ivltests/uwire_fail.v:5: error: Unresolved net/uwire two cannot have multiple drivers. +./ivltests/uwire_fail.v:5: error: Unresolved wire 'two' cannot have multiple drivers. 1 error(s) during elaboration.