From d321a5fa5de74beba8e7d0e0170da11aece0c527 Mon Sep 17 00:00:00 2001 From: Wilson Snyder Date: Mon, 21 Sep 2026 08:46:58 -0400 Subject: [PATCH] Update IEEE references --- include/verilated.cpp | 2 +- src/V3Covergroup.cpp | 12 +++++------ src/V3LinkParse.cpp | 4 ++-- test_regress/t/t_covergroup_args_bad.out | 12 +++++------ test_regress/t/t_covergroup_args_expr_bad.out | 12 +++++------ test_regress/t/t_covergroup_autobins_bad.out | 20 +++++++++---------- test_regress/t/t_dpi_export_context2_bad.out | 2 +- test_regress/t/t_dpi_export_context_bad.out | 2 +- 8 files changed, 33 insertions(+), 33 deletions(-) diff --git a/include/verilated.cpp b/include/verilated.cpp index d1aa95fba..ed7dac08e 100644 --- a/include/verilated.cpp +++ b/include/verilated.cpp @@ -4478,7 +4478,7 @@ void* VerilatedScope::exportFindNullError(int funcnum) VL_MT_SAFE { // Slowpath - Called only when find has failed const std::string msg = ("Testbench C called '"s + VerilatedImp::exportName(funcnum) + "' but scope wasn't set, perhaps due to dpi import call without " - + "'context', or missing svSetScope. See IEEE 1800-2023 35.5.3."); + + "'context', or missing svSetScope (IEEE 1800-2023 35.5.3)"); VL_FATAL_MT("unknown", 0, "", msg.c_str()); return nullptr; } diff --git a/src/V3Covergroup.cpp b/src/V3Covergroup.cpp index cc66b75ff..83823c185 100644 --- a/src/V3Covergroup.cpp +++ b/src/V3Covergroup.cpp @@ -157,13 +157,13 @@ class CovergroupExprValidVisitor final : public VNVisitor { nodep->v3error("Covergroup sample formal argument " << nodep->varp()->prettyNameQ() << " may only be used in a coverpoint or conditional guard " - "expression (IEEE 1800-2012 19.8.1)."); + "expression (IEEE 1800-2023 19.8.1)."); } if (m_inCoverageExpression && m_constructorRefMembers.count(nodep->varp())) { nodep->v3error("Ref covergroup constructor formal argument " << nodep->varp()->prettyNameQ() << " may not be used in a covergroup expression " - "(IEEE 1800-2012 19.5)."); + "(IEEE 1800-2023 19.5)."); } } void visit(AstNodeFTaskRef* nodep) override { @@ -180,7 +180,7 @@ class CovergroupExprValidVisitor final : public VNVisitor { nodep->v3error("Function " << nodep->taskp()->prettyNameQ() << " called in a covergroup expression has an " "output, inout, or non-const ref argument " - "(IEEE 1800-2012 19.5)."); + "(IEEE 1800-2023 19.5)."); } } iterateChildren(nodep); @@ -2018,7 +2018,7 @@ class FunctionalCoverageVisitor final : public VNVisitor { if (dimIt == ctx.dimensions.end()) { selectp->v3error("binsof coverpoint " << selectp->pointp()->prettyNameQ() << " is not an item of cross " - << ctx.crossp->prettyNameQ() << " (IEEE 1800-2012 19.6.1)."); + << ctx.crossp->prettyNameQ() << " (IEEE 1800-2023 19.6.1)."); ctx.valid = false; return {}; } @@ -2031,7 +2031,7 @@ class FunctionalCoverageVisitor final : public VNVisitor { if (binIt == bins.spans.end()) { selectp->v3error("Cannot find bin " << selectp->prettyNameQ() << " in coverpoint " << selectp->pointp()->prettyNameQ() - << " (IEEE 1800-2012 19.6.1)."); + << " (IEEE 1800-2023 19.6.1)."); ctx.valid = false; return {}; } @@ -2087,7 +2087,7 @@ class FunctionalCoverageVisitor final : public VNVisitor { AstCoverCrossBin* const binp = VN_AS(itemp, CoverCrossBin); if (!names.emplace(binp->name()).second) { binp->v3error("Duplicate cross bin " << binp->prettyNameQ() - << " (IEEE 1800-2012 19.6.1)."); + << " (IEEE 1800-2023 19.6.1)."); continue; } ctx.valid = true; diff --git a/src/V3LinkParse.cpp b/src/V3LinkParse.cpp index 4fd90805c..9c9391838 100644 --- a/src/V3LinkParse.cpp +++ b/src/V3LinkParse.cpp @@ -1332,7 +1332,7 @@ class LinkParseVisitor final : public VNVisitor { if (origVarp->direction() == VDirection::OUTPUT || origVarp->direction() == VDirection::INOUT) { origVarp->v3error("Covergroup formal arguments cannot be output or inout" - " (IEEE 1800-2012 19.3)"); + " (IEEE 1800-2023 19.3)"); origVarp->direction(VDirection::INPUT); } if ((origVarp->isRef() || origVarp->isConstRef()) && origVarp->valuep()) { @@ -1353,7 +1353,7 @@ class LinkParseVisitor final : public VNVisitor { AstVar* const origVarp = VN_AS(argp, Var); if (!origVarp->isInput()) { origVarp->v3error("Covergroup sample formal argument must have input direction " - "(IEEE 1800-2012 19.8.1)."); + "(IEEE 1800-2023 19.8.1)."); origVarp->direction(VDirection::INPUT); } AstVar* const memberp = origVarp->cloneTree(false); diff --git a/test_regress/t/t_covergroup_args_bad.out b/test_regress/t/t_covergroup_args_bad.out index 12541a4b6..cc97f0f53 100644 --- a/test_regress/t/t_covergroup_args_bad.out +++ b/test_regress/t/t_covergroup_args_bad.out @@ -1,20 +1,20 @@ -%Error: t/t_covergroup_args_bad.v:10:35: Covergroup formal arguments cannot be output or inout (IEEE 1800-2012 19.3) +%Error: t/t_covergroup_args_bad.v:10:35: Covergroup formal arguments cannot be output or inout (IEEE 1800-2023 19.3) 10 | covergroup cg_output(output bit arg); | ^~~ ... See the manual at https://verilator.org/verilator_doc.html?v=latest for more assistance. -%Error: t/t_covergroup_args_bad.v:14:33: Covergroup formal arguments cannot be output or inout (IEEE 1800-2012 19.3) +%Error: t/t_covergroup_args_bad.v:14:33: Covergroup formal arguments cannot be output or inout (IEEE 1800-2023 19.3) 14 | covergroup cg_inout(inout bit arg); | ^~~ -%Error: t/t_covergroup_args_bad.v:18:64: Covergroup sample formal argument must have input direction (IEEE 1800-2012 19.8.1). +%Error: t/t_covergroup_args_bad.v:18:64: Covergroup sample formal argument must have input direction (IEEE 1800-2023 19.8.1). 18 | covergroup cg_sample_output with function sample (output bit arg); | ^~~ -%Error: t/t_covergroup_args_bad.v:22:62: Covergroup sample formal argument must have input direction (IEEE 1800-2012 19.8.1). +%Error: t/t_covergroup_args_bad.v:22:62: Covergroup sample formal argument must have input direction (IEEE 1800-2023 19.8.1). 22 | covergroup cg_sample_inout with function sample (inout bit arg); | ^~~ -%Error: t/t_covergroup_args_bad.v:26:58: Covergroup sample formal argument must have input direction (IEEE 1800-2012 19.8.1). +%Error: t/t_covergroup_args_bad.v:26:58: Covergroup sample formal argument must have input direction (IEEE 1800-2023 19.8.1). 26 | covergroup cg_sample_ref with function sample (ref bit arg); | ^~~ -%Error: t/t_covergroup_args_bad.v:30:70: Covergroup sample formal argument must have input direction (IEEE 1800-2012 19.8.1). +%Error: t/t_covergroup_args_bad.v:30:70: Covergroup sample formal argument must have input direction (IEEE 1800-2023 19.8.1). 30 | covergroup cg_sample_const_ref with function sample (const ref bit arg); | ^~~ %Error: t/t_covergroup_args_bad.v:34:62: Duplicate declaration of signal: 'arg' diff --git a/test_regress/t/t_covergroup_args_expr_bad.out b/test_regress/t/t_covergroup_args_expr_bad.out index b438e990a..5db3b4e39 100644 --- a/test_regress/t/t_covergroup_args_expr_bad.out +++ b/test_regress/t/t_covergroup_args_expr_bad.out @@ -1,21 +1,21 @@ -%Error: t/t_covergroup_args_expr_bad.v:19:26: Function 'function_ref' called in a covergroup expression has an output, inout, or non-const ref argument (IEEE 1800-2012 19.5). +%Error: t/t_covergroup_args_expr_bad.v:19:26: Function 'function_ref' called in a covergroup expression has an output, inout, or non-const ref argument (IEEE 1800-2023 19.5). : ... note: In instance 't' 19 | bins ref_bin = {0, function_ref(value)}; | ^~~~~~~~~~~~ ... See the manual at https://verilator.org/verilator_doc.html?v=latest for more assistance. -%Error: t/t_covergroup_args_expr_bad.v:19:39: Covergroup sample formal argument 'value' may only be used in a coverpoint or conditional guard expression (IEEE 1800-2012 19.8.1). +%Error: t/t_covergroup_args_expr_bad.v:19:39: Covergroup sample formal argument 'value' may only be used in a coverpoint or conditional guard expression (IEEE 1800-2023 19.8.1). : ... note: In instance 't' 19 | bins ref_bin = {0, function_ref(value)}; | ^~~~~ -%Error: t/t_covergroup_args_expr_bad.v:20:26: Function 'function_output' called in a covergroup expression has an output, inout, or non-const ref argument (IEEE 1800-2012 19.5). +%Error: t/t_covergroup_args_expr_bad.v:20:26: Function 'function_output' called in a covergroup expression has an output, inout, or non-const ref argument (IEEE 1800-2023 19.5). : ... note: In instance 't' 20 | bins output_bin = {function_output(value)}; | ^~~~~~~~~~~~~~~ -%Error: t/t_covergroup_args_expr_bad.v:20:42: Covergroup sample formal argument 'value' may only be used in a coverpoint or conditional guard expression (IEEE 1800-2012 19.8.1). +%Error: t/t_covergroup_args_expr_bad.v:20:42: Covergroup sample formal argument 'value' may only be used in a coverpoint or conditional guard expression (IEEE 1800-2023 19.8.1). : ... note: In instance 't' 20 | bins output_bin = {function_output(value)}; | ^~~~~ -%Error: t/t_covergroup_args_expr_bad.v:21:25: Covergroup sample formal argument 'value' may only be used in a coverpoint or conditional guard expression (IEEE 1800-2012 19.8.1). +%Error: t/t_covergroup_args_expr_bad.v:21:25: Covergroup sample formal argument 'value' may only be used in a coverpoint or conditional guard expression (IEEE 1800-2023 19.8.1). : ... note: In instance 't' 21 | option.at_least = value; | ^~~~~ @@ -33,7 +33,7 @@ : ... note: In instance 't' 20 | bins output_bin = {function_output(value)}; | ^~~~~~~~~~~~~~~ -%Error: t/t_covergroup_args_expr_bad.v:26:55: Ref covergroup constructor formal argument 'value' may not be used in a covergroup expression (IEEE 1800-2012 19.5). +%Error: t/t_covergroup_args_expr_bad.v:26:55: Ref covergroup constructor formal argument 'value' may not be used in a covergroup expression (IEEE 1800-2023 19.5). : ... note: In instance 't' 26 | cp_constructor_ref: coverpoint value {bins bad = {value};} | ^~~~~ diff --git a/test_regress/t/t_covergroup_autobins_bad.out b/test_regress/t/t_covergroup_autobins_bad.out index dbb9a783a..0e8c40794 100644 --- a/test_regress/t/t_covergroup_autobins_bad.out +++ b/test_regress/t/t_covergroup_autobins_bad.out @@ -129,43 +129,43 @@ : ... note: In instance 't' 118 | cp_a: coverpoint cp_expr {bins x[] = {size_var};} | ^ -%Error: t/t_covergroup_autobins_bad.v:133:28: binsof coverpoint 'missing' is not an item of cross 'xc' (IEEE 1800-2012 19.6.1). +%Error: t/t_covergroup_autobins_bad.v:133:28: binsof coverpoint 'missing' is not an item of cross 'xc' (IEEE 1800-2023 19.6.1). : ... note: In instance 't' 133 | bins missing_point = binsof(missing); | ^~~~~~ -%Error: t/t_covergroup_autobins_bad.v:134:30: binsof coverpoint 'cp_other' is not an item of cross 'xc' (IEEE 1800-2012 19.6.1). +%Error: t/t_covergroup_autobins_bad.v:134:30: binsof coverpoint 'cp_other' is not an item of cross 'xc' (IEEE 1800-2023 19.6.1). : ... note: In instance 't' 134 | bins uncrossed_point = binsof(cp_other); | ^~~~~~ -%Error: t/t_covergroup_autobins_bad.v:135:26: Cannot find bin 'missing' in coverpoint 'cp_a' (IEEE 1800-2012 19.6.1). +%Error: t/t_covergroup_autobins_bad.v:135:26: Cannot find bin 'missing' in coverpoint 'cp_a' (IEEE 1800-2023 19.6.1). : ... note: In instance 't' 135 | bins missing_bin = binsof(cp_a.missing); | ^~~~~~ -%Error: t/t_covergroup_autobins_bad.v:137:7: Duplicate cross bin 'duplicate' (IEEE 1800-2012 19.6.1). +%Error: t/t_covergroup_autobins_bad.v:137:7: Duplicate cross bin 'duplicate' (IEEE 1800-2023 19.6.1). : ... note: In instance 't' 137 | bins duplicate = binsof(cp_b); | ^~~~ -%Error: t/t_covergroup_autobins_bad.v:138:7: Duplicate cross bin 'duplicate' (IEEE 1800-2012 19.6.1). +%Error: t/t_covergroup_autobins_bad.v:138:7: Duplicate cross bin 'duplicate' (IEEE 1800-2023 19.6.1). : ... note: In instance 't' 138 | ignore_bins duplicate = binsof(cp_a); | ^~~~~~~~~~~ -%Error: t/t_covergroup_autobins_bad.v:139:7: Duplicate cross bin 'duplicate' (IEEE 1800-2012 19.6.1). +%Error: t/t_covergroup_autobins_bad.v:139:7: Duplicate cross bin 'duplicate' (IEEE 1800-2023 19.6.1). : ... note: In instance 't' 139 | illegal_bins duplicate = binsof(cp_b); | ^~~~~~~~~~~~ -%Error: t/t_covergroup_autobins_bad.v:141:7: Duplicate cross bin 'ignored_duplicate' (IEEE 1800-2012 19.6.1). +%Error: t/t_covergroup_autobins_bad.v:141:7: Duplicate cross bin 'ignored_duplicate' (IEEE 1800-2023 19.6.1). : ... note: In instance 't' 141 | illegal_bins ignored_duplicate = binsof(cp_b); | ^~~~~~~~~~~~ -%Error: t/t_covergroup_autobins_bad.v:143:7: Duplicate cross bin 'illegal_duplicate' (IEEE 1800-2012 19.6.1). +%Error: t/t_covergroup_autobins_bad.v:143:7: Duplicate cross bin 'illegal_duplicate' (IEEE 1800-2023 19.6.1). : ... note: In instance 't' 143 | bins illegal_duplicate = binsof(cp_b); | ^~~~ -%Error: t/t_covergroup_autobins_bad.v:144:36: Cannot find bin 'missing' in coverpoint 'cp_a' (IEEE 1800-2012 19.6.1). +%Error: t/t_covergroup_autobins_bad.v:144:36: Cannot find bin 'missing' in coverpoint 'cp_a' (IEEE 1800-2023 19.6.1). : ... note: In instance 't' 144 | ignore_bins missing_ignore = binsof(cp_a.missing); | ^~~~~~ -%Error: t/t_covergroup_autobins_bad.v:145:40: binsof coverpoint 'cp_other' is not an item of cross 'xc' (IEEE 1800-2012 19.6.1). +%Error: t/t_covergroup_autobins_bad.v:145:40: binsof coverpoint 'cp_other' is not an item of cross 'xc' (IEEE 1800-2023 19.6.1). : ... note: In instance 't' 145 | illegal_bins uncrossed_illegal = binsof(cp_other); | ^~~~~~ diff --git a/test_regress/t/t_dpi_export_context2_bad.out b/test_regress/t/t_dpi_export_context2_bad.out index c6354d959..35f8bb657 100644 --- a/test_regress/t/t_dpi_export_context2_bad.out +++ b/test_regress/t/t_dpi_export_context2_bad.out @@ -1,4 +1,4 @@ %Warning: DPI C Function called by Verilog DPI import with missing 'context' keyword. %Warning: DPI C Function called by Verilog DPI import with missing 'context' keyword. -%Error: unknown:0: Testbench C called 'dpix_task' but scope wasn't set, perhaps due to dpi import call without 'context', or missing svSetScope. See IEEE 1800-2023 35.5.3. +%Error: unknown:0: Testbench C called 'dpix_task' but scope wasn't set, perhaps due to dpi import call without 'context', or missing svSetScope (IEEE 1800-2023 35.5.3) Aborting... diff --git a/test_regress/t/t_dpi_export_context_bad.out b/test_regress/t/t_dpi_export_context_bad.out index 45efafe23..836b49ca9 100644 --- a/test_regress/t/t_dpi_export_context_bad.out +++ b/test_regress/t/t_dpi_export_context_bad.out @@ -1,2 +1,2 @@ -%Error: unknown:0: Testbench C called 'dpix_task' but scope wasn't set, perhaps due to dpi import call without 'context', or missing svSetScope. See IEEE 1800-2023 35.5.3. +%Error: unknown:0: Testbench C called 'dpix_task' but scope wasn't set, perhaps due to dpi import call without 'context', or missing svSetScope (IEEE 1800-2023 35.5.3) Aborting...