From 578e7414734c5cf0215fb88fd7e6e3511f61b7d1 Mon Sep 17 00:00:00 2001 From: Yilou Wang Date: Wed, 24 Jun 2026 14:02:29 +0200 Subject: [PATCH] refine error message --- src/V3AssertPre.cpp | 6 ++++-- test_regress/t/t_assert_seq_clocking_unsup.out | 9 ++++++--- test_regress/t/t_assert_unclocked_bad.out | 12 ++++++++---- 3 files changed, 18 insertions(+), 9 deletions(-) diff --git a/src/V3AssertPre.cpp b/src/V3AssertPre.cpp index 323731517..f45df83f3 100644 --- a/src/V3AssertPre.cpp +++ b/src/V3AssertPre.cpp @@ -93,8 +93,10 @@ private: fromAlways = true; } if (!senip) { - nodep->v3error("Concurrent assertion has no clock; provide a clocking event, a default" - " clocking, or a clocked procedural context (IEEE 1800-2023 16.16)"); + nodep->v3error("Concurrent assertion has no clock (IEEE 1800-2023 16.16)\n" + << nodep->warnMore() + << "... Suggest provide a clocking event, a default" + " clocking, or a clocked procedural context"); newp = new AstSenTree{nodep->fileline(), nullptr}; } else { if (cassertp && fromAlways) cassertp->senFromAlways(true); diff --git a/test_regress/t/t_assert_seq_clocking_unsup.out b/test_regress/t/t_assert_seq_clocking_unsup.out index a694062ac..ba12d4ad2 100644 --- a/test_regress/t/t_assert_seq_clocking_unsup.out +++ b/test_regress/t/t_assert_seq_clocking_unsup.out @@ -15,17 +15,20 @@ : ... note: In instance 't' 27 | @clk a | ^ -%Error: t/t_assert_seq_clocking_unsup.v:32:3: Concurrent assertion has no clock; provide a clocking event, a default clocking, or a clocked procedural context (IEEE 1800-2023 16.16) +%Error: t/t_assert_seq_clocking_unsup.v:32:3: Concurrent assertion has no clock (IEEE 1800-2023 16.16) : ... note: In instance 't' + : ... Suggest provide a clocking event, a default clocking, or a clocked procedural context 32 | assert property (s_nest ##1 a); | ^~~~~~ ... See the manual at https://verilator.org/verilator_doc.html?v=latest for more assistance. -%Error: t/t_assert_seq_clocking_unsup.v:33:3: Concurrent assertion has no clock; provide a clocking event, a default clocking, or a clocked procedural context (IEEE 1800-2023 16.16) +%Error: t/t_assert_seq_clocking_unsup.v:33:3: Concurrent assertion has no clock (IEEE 1800-2023 16.16) : ... note: In instance 't' + : ... Suggest provide a clocking event, a default clocking, or a clocked procedural context 33 | assert property (s_level); | ^~~~~~ -%Error: t/t_assert_seq_clocking_unsup.v:34:3: Concurrent assertion has no clock; provide a clocking event, a default clocking, or a clocked procedural context (IEEE 1800-2023 16.16) +%Error: t/t_assert_seq_clocking_unsup.v:34:3: Concurrent assertion has no clock (IEEE 1800-2023 16.16) : ... note: In instance 't' + : ... Suggest provide a clocking event, a default clocking, or a clocked procedural context 34 | assert property (s_level2); | ^~~~~~ %Error: Exiting due to diff --git a/test_regress/t/t_assert_unclocked_bad.out b/test_regress/t/t_assert_unclocked_bad.out index 94068f445..60590a943 100644 --- a/test_regress/t/t_assert_unclocked_bad.out +++ b/test_regress/t/t_assert_unclocked_bad.out @@ -1,18 +1,22 @@ -%Error: t/t_assert_unclocked_bad.v:9:3: Concurrent assertion has no clock; provide a clocking event, a default clocking, or a clocked procedural context (IEEE 1800-2023 16.16) +%Error: t/t_assert_unclocked_bad.v:9:3: Concurrent assertion has no clock (IEEE 1800-2023 16.16) : ... note: In instance 't' + : ... Suggest provide a clocking event, a default clocking, or a clocked procedural context 9 | assert property (a); | ^~~~~~ ... See the manual at https://verilator.org/verilator_doc.html?v=latest for more assistance. -%Error: t/t_assert_unclocked_bad.v:10:22: Concurrent assertion has no clock; provide a clocking event, a default clocking, or a clocked procedural context (IEEE 1800-2023 16.16) +%Error: t/t_assert_unclocked_bad.v:10:22: Concurrent assertion has no clock (IEEE 1800-2023 16.16) : ... note: In instance 't' + : ... Suggest provide a clocking event, a default clocking, or a clocked procedural context 10 | assert property (a |=> b); | ^~~ -%Error: t/t_assert_unclocked_bad.v:10:3: Concurrent assertion has no clock; provide a clocking event, a default clocking, or a clocked procedural context (IEEE 1800-2023 16.16) +%Error: t/t_assert_unclocked_bad.v:10:3: Concurrent assertion has no clock (IEEE 1800-2023 16.16) : ... note: In instance 't' + : ... Suggest provide a clocking event, a default clocking, or a clocked procedural context 10 | assert property (a |=> b); | ^~~~~~ -%Error: t/t_assert_unclocked_bad.v:11:3: Concurrent assertion has no clock; provide a clocking event, a default clocking, or a clocked procedural context (IEEE 1800-2023 16.16) +%Error: t/t_assert_unclocked_bad.v:11:3: Concurrent assertion has no clock (IEEE 1800-2023 16.16) : ... note: In instance 't' + : ... Suggest provide a clocking event, a default clocking, or a clocked procedural context 11 | cover property (a); | ^~~~~ %Error: Exiting due to