Change to IEEE 1800-2023 warning mentions

This commit is contained in:
Wilson Snyder 2024-03-02 09:05:21 -05:00
parent fa7234ff68
commit 3786f59e03
139 changed files with 436 additions and 435 deletions

View File

@ -74,7 +74,8 @@ Verilog AMS Support
Verilator implements a very small subset of Verilog AMS (Verilog Analog and
Mixed-Signal Extensions) with the subset corresponding to those VMS
keywords with near-equivalents in Verilog 2005 or SystemVerilog 2017.
keywords with near-equivalents in Verilog IEEE 1364 or SystemVerilog
IEEE 1800.
AMS parsing is enabled with :vlopt:`--language VAMS <--language>` or
:vlopt:`--language 1800+VAMS <--language>`.

View File

@ -161,8 +161,8 @@ List Of Warnings
.. option:: BADSTDPRAGMA
An error that a pragma is badly formed, for pragmas defined by IEEE
1800-2017. For example, an empty pragma line, or an incorrectly used
'pragma protect'. Third-party pragmas not defined by IEEE 1800-2017 are
1800-2023. For example, an empty pragma line, or an incorrectly used
'pragma protect'. Third-party pragmas not defined by IEEE 1800-2023 are
ignored.
@ -283,7 +283,7 @@ List Of Warnings
Unique case statements that select on an enumerated variable, where all
of the enumerated values are covered by case items, are considered
complete even if the case statement does not cover illegal
non-enumerated values (IEEE 1800-2017 12.5.3). To check that illegal
non-enumerated values (IEEE 1800-2023 12.5.3). To check that illegal
values are not hit, use :vlopt:`--assert`.
Ignoring this warning will only suppress the lint check; it will
@ -479,7 +479,7 @@ List Of Warnings
.. code-block::
%Warning-DEFPARAM: example.v:5:15: defparam is deprecated (IEEE 1800-2017 C.4.1)
%Warning-DEFPARAM: example.v:5:15: defparam is deprecated (IEEE 1800-2023 C.4.1)
: ... Suggest use instantiation with #(.MY_PARAM(...etc...))
To repair use :code:`#(.PARAMETER(...))` syntax. Repaired Example:
@ -707,7 +707,7 @@ List Of Warnings
.. code-block::
%Warning-GENUNNAMED: example.v:2:9: Unnamed generate block (IEEE 1800-2017 27.6)
%Warning-GENUNNAMED: example.v:2:9: Unnamed generate block (IEEE 1800-2023 27.6)
To fix this assign a label (often with the naming convention prefix of
:code:`gen_` or :code:`g_`), for example:
@ -763,7 +763,7 @@ List Of Warnings
.. code-block::
%Warning-IGNOREDRETURN: example.v:5:9: Ignoring return value of non-void function (IEEE 1800-2017 13.4.1)
%Warning-IGNOREDRETURN: example.v:5:9: Ignoring return value of non-void function (IEEE 1800-2023 13.4.1)
The portable way to suppress this warning (in SystemVerilog) is to use a
void cast, for example:
@ -1328,7 +1328,7 @@ List Of Warnings
.. TODO better example
An error that a package/class appears to have been referenced that has not
yet been declared. According to IEEE 1800-2017 26.3, all packages must
yet been declared. According to IEEE 1800-2023 26.3, all packages must
be declared before being used.
@ -1707,7 +1707,7 @@ List Of Warnings
.. code-block::
%Warning-TIMESCALEMOD: example.v:1:8: Timescale missing on this module as other modules have it (IEEE 1800-2017 3.14.2.3)
%Warning-TIMESCALEMOD: example.v:1:8: Timescale missing on this module as other modules have it (IEEE 1800-2023 3.14.2.3)
Recommend using :vlopt:`--timescale` argument, or in front of all
modules use:
@ -1949,7 +1949,7 @@ List Of Warnings
.. option:: USERERROR
A SystemVerilog elaboration-time assertion error was executed.
IEEE 1800-2017 20.11 requires this error.
IEEE 1800-2023 20.11 requires this error.
Faulty example:
@ -1965,7 +1965,7 @@ List Of Warnings
.. option:: USERFATAL
A SystemVerilog elaboration-time assertion fatal was executed.
IEEE 1800-2017 20.11 requires this error.
IEEE 1800-2023 20.11 requires this error.
Faulty example:
@ -1981,7 +1981,7 @@ List Of Warnings
.. option:: USERINFO
A SystemVerilog elaboration-time assertion print was executed. This is
not an error or warning, and IEEE 1800-2017 20.11 requires this
not an error or warning, and IEEE 1800-2023 20.11 requires this
behavior.
Example:
@ -1996,7 +1996,7 @@ List Of Warnings
.. option:: USERWARN
A SystemVerilog elaboration-time assertion warning was executed.
IEEE 1800-2017 20.11 requires this warning.
IEEE 1800-2023 20.11 requires this warning.
Faulty example:
@ -2135,7 +2135,7 @@ List Of Warnings
.. option:: ZEROREPL
Warns that zero is used as the replication value in the replication
operator. This is specified as an error by IEEE 1800-2017 11.4.12.1.
operator. This is specified as an error by IEEE 1800-2023 11.4.12.1.
Faulty example:
@ -2155,7 +2155,7 @@ List Of Warnings
.. code-block::
%Error-ZEROREPL: test.v:5:22: Replication value of 0 is only legal under a concatenation (IEEE 1800-2017 11.4.12.1)
%Error-ZEROREPL: test.v:5:22: Replication value of 0 is only legal under a concatenation (IEEE 1800-2023 11.4.12.1)
Note that in some cases, this warning may be false, when a condition
upstream or downstream of the access means the zero replication will

View File

@ -224,7 +224,7 @@ Scheduling
----------
Verilator implements the Active and NBA regions of the SystemVerilog scheduling
model as described in IEEE 1800-2017 chapter 4, and in particular sections
model as described in IEEE 1800-2023 chapter 4, and in particular sections
4.5 and Figure 4.1. The static (Verilation time) scheduling of SystemVerilog
processes is performed by code in the ``V3Sched`` namespace. The single
entry point to the scheduling algorithm is ``V3Sched::schedule``. Some
@ -312,7 +312,7 @@ Scheduling of clocked and combinational logic
For performance, clocked and combinational logic needs to be ordered.
Conceptually this minimizes the iterations through the evaluation loop
presented in the reference algorithm in the SystemVerilog standard (IEEE
1800-2017 section 4.5), by evaluating logic constructs in data-flow order.
1800-2023 section 4.5), by evaluating logic constructs in data-flow order.
Without going into a lot of detail here, accept that well thought out ordering
is crucial to good simulation performance, and also enables further
optimizations later on.
@ -407,7 +407,7 @@ triggered due to a combinational signal change from the previous evaluation
pass, and a combinational loop settling due to hybrid logic, if the clocked
logic reads the not yet settled combinationally driven signal. Such a race
is indeed possible, but our evaluation is consistent with the SystemVerilog
scheduling semantics (IEEE 1800-2017 chapter 4), and therefore any program
scheduling semantics (IEEE 1800-2023 chapter 4), and therefore any program
that exhibits such a race has non-deterministic behavior according to the
SystemVerilog semantics, so we accept this.
@ -1754,11 +1754,11 @@ This offloading allows, for example, to use byte-to-byte comparisons of AST dump
{"files": {
/* Map id to filename, and other metadata */
"d": {"filename":"/home/ant/tmp/verilator/include/verilated_std.sv", "realpath":"/home/ant/tmp/verilator/include/verilated_std.sv", "language":"1800-2017"},
"a": {"filename":"<built-in>", "realpath":"<built-in>", "language":"1800-2017"},
"b": {"filename":"<command-line>", "realpath":"<command-line>", "language":"1800-2017"},
"c": {"filename":"input.vc", "realpath":"/home/ant/tmp/verilator/test_regress/input.vc", "language":"1800-2017"},
"e": {"filename":"t/t_EXAMPLE.v", "realpath":"/home/ant/tmp/verilator/test_regress/t/t_EXAMPLE.v", "language":"1800-2017"}
"d": {"filename":"/home/ant/tmp/verilator/include/verilated_std.sv", "realpath":"/home/ant/tmp/verilator/include/verilated_std.sv", "language":"1800-2023"},
"a": {"filename":"<built-in>", "realpath":"<built-in>", "language":"1800-2023"},
"b": {"filename":"<command-line>", "realpath":"<command-line>", "language":"1800-2023"},
"c": {"filename":"input.vc", "realpath":"/home/ant/tmp/verilator/test_regress/input.vc", "language":"1800-2023"},
"e": {"filename":"t/t_EXAMPLE.v", "realpath":"/home/ant/tmp/verilator/test_regress/t/t_EXAMPLE.v", "language":"1800-2023"}
},"pointers": {
/* Map id to real address */
"(AG)": "0x562997289180",
@ -1907,21 +1907,21 @@ Verilator ideally would support all of IEEE, and has the goal to get close
to full support. However the following IEEE sections and features are not
anticipated to be ever implemented for the reasons indicated.
IEEE 1800-2017 3.3 modules within modules
IEEE 1800-2023 3.3 modules within modules
Little/no tool support, and arguably not a good practice.
IEEE 1800-2017 6.12 "shortreal"
IEEE 1800-2023 6.12 "shortreal"
Little/no tool support, and easily promoted to real.
IEEE 1800-2017 11.11 Min, typ, max
IEEE 1800-2023 11.11 Min, typ, max
No SDF support, so will always use typical.
IEEE 1800-2017 20.16 Stochastic analysis
IEEE 1800-2023 20.16 Stochastic analysis
Little industry use.
IEEE 1800-2017 20.17 PLA modeling
IEEE 1800-2023 20.17 PLA modeling
Little industry use and outdated technology.
IEEE 1800-2017 31 Timing checks
IEEE 1800-2023 31 Timing checks
No longer relevant with static timing analysis tools.
IEEE 1800-2017 32 SDF annotation
IEEE 1800-2023 32 SDF annotation
No longer relevant with static timing analysis tools.
IEEE 1800-2017 33 Config
IEEE 1800-2023 33 Config
Little industry use.

View File

@ -1941,7 +1941,7 @@ std::string VL_SUBSTR_N(const std::string& lhs, IData rhs, IData ths) VL_PURE {
IData VL_ATOI_N(const std::string& str, int base) VL_PURE {
std::string str_mod = str;
// IEEE 1800-2017 6.16.9 says '_' may exist.
// IEEE 1800-2023 6.16.9 says '_' may exist.
str_mod.erase(std::remove(str_mod.begin(), str_mod.end(), '_'), str_mod.end());
errno = 0;
@ -2106,7 +2106,7 @@ bool VlReadMem::get(QData& addrr, std::string& valuer) {
if (VL_UNLIKELY(m_end != ~0ULL && m_addr <= m_end && !m_anyAddr)) {
VL_WARN_MT(m_filename.c_str(), m_linenum, "",
"$readmem file ended before specified final address (IEEE 1800-2017 21.4)");
"$readmem file ended before specified final address (IEEE 1800-2023 21.4)");
}
return false; // EOF
@ -3234,7 +3234,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-2017 35.5.3.");
+ "'context', or missing svSetScope. See IEEE 1800-2023 35.5.3.");
VL_FATAL_MT("unknown", 0, "", msg.c_str());
return nullptr;
}

View File

@ -1705,7 +1705,7 @@ public:
T_Class* operator->() const { return m_objp; }
// For 'if (ptr)...'
operator bool() const { return m_objp; }
// In SV A == B iff both are handles to the same object (IEEE 1800-2017 8.4)
// In SV A == B iff both are handles to the same object (IEEE 1800-2023 8.4)
template <typename T_OtherClass>
bool operator==(const VlClassRef<T_OtherClass>& rhs) const {
return m_objp == rhs.m_objp;

View File

@ -30,7 +30,7 @@
#include "verilated_syms.h"
//======================================================================
// From IEEE 1800-2017 annex M
// From IEEE 1800-2023 annex M
#include "vltstd/sv_vpi_user.h"

View File

@ -170,7 +170,7 @@ class AssertVisitor final : public VNVisitor {
if (m_procedurep) {
// To support this need queue of asserts to activate
nodep->v3error("Unsupported: Procedural concurrent assertion with"
" clocking event inside always (IEEE 1800-2017 16.14.6)");
" clocking event inside always (IEEE 1800-2023 16.14.6)");
}
}
//

View File

@ -116,7 +116,7 @@ private:
AstNode* const pinp = argp->exprp()->unlinkFrBack();
replaceVarRefsWithExprRecurse(propExprp, portp, pinp);
}
// Handle case with 2 disable iff statement (IEEE 1800-2017 16.12.1)
// Handle case with 2 disable iff statement (IEEE 1800-2023 16.12.1)
if (nodep->disablep() && propExprp->disablep()) {
nodep->v3error("disable iff expression before property call and in its "
"body is not legal");
@ -160,7 +160,7 @@ private:
FileLine* const flp = nodep->fileline();
V3Const::constifyEdit(nodep->skewp());
if (!VN_IS(nodep->skewp(), Const)) {
nodep->skewp()->v3error("Skew must be constant (IEEE 1800-2017 14.4)");
nodep->skewp()->v3error("Skew must be constant (IEEE 1800-2023 14.4)");
VL_DO_DANGLING(nodep->unlinkFrBack()->deleteTree(), nodep);
return;
}
@ -176,7 +176,7 @@ private:
skewedRefp->user1(true);
AstAssign* const assignp = new AstAssign{flp, exprp->cloneTreePure(false), skewedRefp};
if (skewp->isZero()) {
// Drive the var in Re-NBA (IEEE 1800-2017 14.16)
// Drive the var in Re-NBA (IEEE 1800-2023 14.16)
m_clockingp->addNextHere(new AstAlwaysReactive{
flp, new AstSenTree{flp, m_clockingp->sensesp()->cloneTree(false)}, assignp});
} else if (skewp->fileline()->timingOn()) {
@ -206,12 +206,12 @@ private:
AstVarRef* const refp = new AstVarRef{flp, varp, VAccess::WRITE};
refp->user1(true);
if (skewp->num().is1Step()) {
// Assign the sampled expression to the clockvar (IEEE 1800-2017 14.13)
// Assign the sampled expression to the clockvar (IEEE 1800-2023 14.13)
AstSampled* const sampledp = new AstSampled{flp, exprp->cloneTreePure(false)};
sampledp->dtypeFrom(exprp);
m_clockingp->addNextHere(new AstAssignW{flp, refp, sampledp});
} else if (skewp->isZero()) {
// #0 means the var has to be sampled in Observed (IEEE 1800-2017 14.13)
// #0 means the var has to be sampled in Observed (IEEE 1800-2023 14.13)
AstAssign* const assignp = new AstAssign{flp, refp, exprp->cloneTreePure(false)};
m_clockingp->addNextHere(new AstAlwaysObserved{
flp, new AstSenTree{flp, m_clockingp->sensesp()->cloneTree(false)}, assignp});
@ -256,13 +256,13 @@ private:
if (!nodep->isCycleDelay()) {
if (m_inSynchDrive) {
nodep->v3error("Only cycle delays can be used in synchronous drives"
" (IEEE 1800-2017 14.16)");
" (IEEE 1800-2023 14.16)");
}
return;
}
if (m_inAssign && !m_inSynchDrive) {
nodep->v3error("Cycle delays not allowed as intra-assignment delays"
" (IEEE 1800-2017 14.11)");
" (IEEE 1800-2023 14.11)");
VL_DO_DANGLING(nodep->unlinkFrBack()->deleteTree(), nodep);
return;
}
@ -277,7 +277,7 @@ private:
}
if (!m_defaultClockingp) {
nodep->v3error("Usage of cycle delays requires default clocking"
" (IEEE 1800-2017 14.11)");
" (IEEE 1800-2023 14.11)");
VL_DO_DANGLING(nodep->unlinkFrBack()->deleteTree(), nodep);
return;
}
@ -302,24 +302,24 @@ private:
void visit(AstSenTree* nodep) override {
if (m_inSynchDrive) {
nodep->v3error("Event controls cannot be used in "
"synchronous drives (IEEE 1800-2017 14.16)");
"synchronous drives (IEEE 1800-2023 14.16)");
}
}
void visit(AstNodeVarRef* nodep) override {
if (AstClockingItem* const itemp = VN_CAST(nodep->varp()->user1p(), ClockingItem)) {
if (nodep->access().isReadOrRW() && !nodep->user1()
&& itemp->direction() == VDirection::OUTPUT) {
nodep->v3error("Cannot read from output clockvar (IEEE 1800-2017 14.3)");
nodep->v3error("Cannot read from output clockvar (IEEE 1800-2023 14.3)");
}
if (nodep->access().isWriteOrRW()) {
if (itemp->direction() == VDirection::OUTPUT) {
if (!m_inAssignDlyLhs) {
nodep->v3error("Only non-blocking assignments can write "
"to clockvars (IEEE 1800-2017 14.16)");
"to clockvars (IEEE 1800-2023 14.16)");
}
if (m_inAssign) m_inSynchDrive = true;
} else if (!nodep->user1() && itemp->direction() == VDirection::INPUT) {
nodep->v3error("Cannot write to input clockvar (IEEE 1800-2017 14.3)");
nodep->v3error("Cannot write to input clockvar (IEEE 1800-2023 14.3)");
}
}
}
@ -463,7 +463,7 @@ private:
if (clockingp->isDefault()) {
if (m_defaultClockingp) {
clockingp->v3error("Only one default clocking block allowed per module"
" (IEEE 1800-2017 14.12)");
" (IEEE 1800-2023 14.12)");
}
m_defaultClockingp = clockingp;
}

View File

@ -224,7 +224,7 @@ class ForceConvertVisitor final : public VNVisitor {
transformWritenVarScopes(resetEnp->lhsp(), [this](AstVarScope* vscp) {
return getForceComponents(vscp).m_enVscp;
});
// IEEE 1800-2017 10.6.2: If this is a net, and not a variable, then reset the read
// IEEE 1800-2023 10.6.2: If this is a net, and not a variable, then reset the read
// signal directly as well, in case something in the same process reads it later. Also, if
// it is a variable, and not a net, set the original signal to the forced value, as it
// needs to retain the forced value until the next procedural update, which might happen on

View File

@ -358,7 +358,7 @@ class LinkCellsVisitor final : public VNVisitor {
nextp = VN_AS(pinp->nextp(), Pin);
if (pinp->svDotName()) pinDotName = true;
if (pinp->dotStar()) {
if (pinStar) pinp->v3error("Duplicate .* in an instance (IEEE 1800-2017 23.3.2)");
if (pinStar) pinp->v3error("Duplicate .* in an instance (IEEE 1800-2023 23.3.2)");
pinStar = true;
// Done with this fake pin
VL_DO_DANGLING(pinp->unlinkFrBack()->deleteTree(), pinp);
@ -379,7 +379,7 @@ class LinkCellsVisitor final : public VNVisitor {
for (AstPin* pinp = nodep->pinsp(); pinp; pinp = VN_AS(pinp->nextp(), Pin)) {
if ((pinStar || pinDotName) && pinp->name().substr(0, 11) == "__pinNumber") {
pinp->v3error("Mixing positional and .*/named instantiation connection"
" (IEEE 1800-2017 23.3.2)");
" (IEEE 1800-2023 23.3.2)");
}
if (!pinp->exprp()) {
if (pinp->name().substr(0, 11) == "__pinNumber") {

View File

@ -1069,7 +1069,7 @@ class LinkDotFindVisitor final : public VNVisitor {
&& VN_AS(m_curSymp->nodep(), Class)->isInterfaceClass() && !nodep->pureVirtual()
&& !nodep->isConstructor()) {
nodep->v3error("Interface class functions must be pure virtual"
<< " (IEEE 1800-2017 8.26): " << nodep->prettyNameQ());
<< " (IEEE 1800-2023 8.26): " << nodep->prettyNameQ());
}
// Change to appropriate package if extern declaration (vs definition)
if (nodep->classOrPackagep()) {
@ -1202,7 +1202,7 @@ class LinkDotFindVisitor final : public VNVisitor {
if (VN_IS(m_curSymp->nodep(), Class)
&& VN_AS(m_curSymp->nodep(), Class)->isInterfaceClass() && !nodep->isParam()) {
nodep->v3error("Interface class cannot contain non-parameter members"
<< " (IEEE 1800-2017 8.26): " << nodep->prettyNameQ());
<< " (IEEE 1800-2023 8.26): " << nodep->prettyNameQ());
}
if (!m_statep->forScopeCreation()) {
// Find under either a task or the module's vars
@ -1245,7 +1245,7 @@ class LinkDotFindVisitor final : public VNVisitor {
<< (ansiWarn ? nodep->warnMore()
+ "... note: ANSI ports must have"
" type declared with the I/O"
" (IEEE 1800-2017 23.2.2.2)\n"
" (IEEE 1800-2023 23.2.2.2)\n"
: "")
<< nodep->warnContextPrimary() << '\n'
<< findvarp->warnOther()
@ -1610,7 +1610,7 @@ class LinkDotParamVisitor final : public VNVisitor {
}
void visit(AstDefParam* nodep) override {
iterateChildren(nodep);
nodep->v3warn(DEFPARAM, "defparam is deprecated (IEEE 1800-2017 C.4.1)\n"
nodep->v3warn(DEFPARAM, "defparam is deprecated (IEEE 1800-2023 C.4.1)\n"
<< nodep->warnMore()
<< "... Suggest use instantiation with #(."
<< nodep->prettyName() << "(...etc...))");
@ -1726,7 +1726,7 @@ class LinkDotParamVisitor final : public VNVisitor {
// might have been in a header file referring to a module we never
// needed so there are false positives
nodep->v3error(
"Forward typedef unused or does not resolve to a data type (IEEE 1800-2017 6.18): "
"Forward typedef unused or does not resolve to a data type (IEEE 1800-2023 6.18): "
<< nodep->prettyNameQ());
}
// We only needed the forward declaration in order to parse correctly.
@ -2133,7 +2133,7 @@ class LinkDotResolveVisitor final : public VNVisitor {
new AstNew{fl, nullptr}};
AstNodeStmt* const superNewStmtp = superNewp->makeStmt();
for (AstNode* stmtp = nodep->stmtsp(); stmtp; stmtp = stmtp->nextp()) {
// super.new shall be the first statement (IEEE 1800-2017 8.15)
// super.new shall be the first statement (IEEE 1800-2023 8.15)
// but some nodes (such as variable declarations and typedefs) should stay before
if (VN_IS(stmtp, NodeStmt)) {
stmtp->addHereThisAsNext(superNewStmtp);
@ -2182,7 +2182,7 @@ class LinkDotResolveVisitor final : public VNVisitor {
clockingp->fileline(), VVarType::MODULETEMP, clockingp->name(), VFlagChildDType{},
new AstBasicDType{clockingp->fileline(), VBasicDTypeKwd::EVENT}};
clockingp->eventp(eventp);
// Trigger the clocking event in Observed (IEEE 1800-2017 14.13)
// Trigger the clocking event in Observed (IEEE 1800-2023 14.13)
clockingp->addNextHere(new AstAlwaysObserved{
clockingp->fileline(),
new AstSenTree{clockingp->fileline(), clockingp->sensesp()->cloneTree(false)},
@ -2229,7 +2229,7 @@ class LinkDotResolveVisitor final : public VNVisitor {
"Class " << implementsClassp->prettyNameQ() << " implements "
<< interfaceClassp->prettyNameQ()
<< " but is missing implementation for "
<< interfaceSubp->prettyNameQ() << " (IEEE 1800-2017 8.26)\n"
<< interfaceSubp->prettyNameQ() << " (IEEE 1800-2023 8.26)\n"
<< implementsClassp->warnContextPrimary() << '\n'
<< interfaceSubp->warnOther()
<< "... Location of interface class's function\n"
@ -2243,7 +2243,7 @@ class LinkDotResolveVisitor final : public VNVisitor {
<< interfaceClassp->prettyNameQ()
<< " but missing inheritance conflict resolution for "
<< interfaceSubp->prettyNameQ()
<< " (IEEE 1800-2017 8.26.6.2)\n"
<< " (IEEE 1800-2023 8.26.6.2)\n"
<< implementsClassp->warnContextPrimary() << '\n'
<< interfaceSubp->warnOther()
<< "... Location of interface class's function\n"
@ -2443,7 +2443,7 @@ class LinkDotResolveVisitor final : public VNVisitor {
if (VN_IS(nodep->lhsp(), ParseRef) && nodep->lhsp()->name() == "this") {
VSymEnt* classSymp = getThisClassSymp();
if (!classSymp) {
nodep->v3error("'this' used outside class (IEEE 1800-2017 8.11)");
nodep->v3error("'this' used outside class (IEEE 1800-2023 8.11)");
m_ds.m_dotErr = true;
} else {
m_ds.m_dotSymp = classSymp;
@ -2452,13 +2452,13 @@ class LinkDotResolveVisitor final : public VNVisitor {
} else if (VN_IS(nodep->lhsp(), ParseRef) && nodep->lhsp()->name() == "super") {
const VSymEnt* classSymp = getThisClassSymp();
if (!classSymp) {
nodep->v3error("'super' used outside class (IEEE 1800-2017 8.15)");
nodep->v3error("'super' used outside class (IEEE 1800-2023 8.15)");
m_ds.m_dotErr = true;
} else {
const auto classp = VN_AS(classSymp->nodep(), Class);
const auto cextp = classp->extendsp();
if (!cextp) {
nodep->v3error("'super' used on non-extended class (IEEE 1800-2017 8.15)");
nodep->v3error("'super' used on non-extended class (IEEE 1800-2023 8.15)");
m_ds.m_dotErr = true;
} else {
if (m_statep->forPrimary()
@ -2560,7 +2560,7 @@ class LinkDotResolveVisitor final : public VNVisitor {
if (m_statep->forPrimary()) return; // The class might be parameterized somewhere
const VSymEnt* classSymp = getThisClassSymp();
if (!classSymp) {
nodep->v3error("'this' used outside class (IEEE 1800-2017 8.11)");
nodep->v3error("'this' used outside class (IEEE 1800-2023 8.11)");
return;
}
AstClass* const classp = VN_AS(classSymp->nodep(), Class);
@ -2943,7 +2943,7 @@ class LinkDotResolveVisitor final : public VNVisitor {
&& VN_IS(nodep->classOrPackageNodep(), Class)
// References to class:: within class itself are OK per IEEE (UVM does this)
&& modClassp != refClassp) {
nodep->v3error("Reference to parameterized class without #() (IEEE 1800-2017 8.25.1)\n"
nodep->v3error("Reference to parameterized class without #() (IEEE 1800-2023 8.25.1)\n"
<< nodep->warnMore() << "... Suggest use '"
<< nodep->classOrPackageNodep()->prettyName() << "#()'");
}
@ -3544,7 +3544,7 @@ class LinkDotResolveVisitor final : public VNVisitor {
// Will need later resolution when deal with parameters
if (++next == 2 && !nodep->isInterfaceClass() && !cextp->isImplements()) {
cextp->v3error("Multiple inheritance illegal on non-interface classes"
" (IEEE 1800-2017 8.13)");
" (IEEE 1800-2023 8.13)");
}
iterate(cextp);
if (m_statep->forPrimary()) {

View File

@ -274,7 +274,7 @@ class LinkJumpVisitor final : public VNVisitor {
iterateChildren(nodep);
const AstFunc* const funcp = VN_CAST(m_ftaskp, Func);
if (m_inFork) {
nodep->v3error("Return isn't legal under fork (IEEE 1800-2017 9.2.3)");
nodep->v3error("Return isn't legal under fork (IEEE 1800-2023 9.2.3)");
VL_DO_DANGLING(pushDeletep(nodep->unlinkFrBack()), nodep);
return;
} else if (!m_ftaskp) {

View File

@ -117,7 +117,7 @@ void V3LinkLevel::timescaling(const ModVec& mods) {
&& nodep->timescaleMatters()) {
nodep->v3warn(TIMESCALEMOD,
"Timescale missing on this module as other modules have "
"it (IEEE 1800-2017 3.14.2.3)\n"
"it (IEEE 1800-2023 3.14.2.3)\n"
<< nodep->warnContextPrimary() << '\n'
<< modTimedp->warnOther()
<< "... Location of module with timescale\n"

View File

@ -575,7 +575,7 @@ class LinkParseVisitor final : public VNVisitor {
// Ok
} else {
nodep->v3error("Syntax error; foreach missing bracketed loop variable"
" (IEEE 1800-2017 12.7.3)");
" (IEEE 1800-2023 12.7.3)");
VL_DO_DANGLING(nodep->unlinkFrBack()->deleteTree(), nodep);
return;
}
@ -692,7 +692,7 @@ class LinkParseVisitor final : public VNVisitor {
if (nodep->stmtsp()) {
nodep->v3warn(GENUNNAMED,
"Unnamed generate block "
<< nodep->prettyNameQ() << " (IEEE 1800-2017 27.6)\n"
<< nodep->prettyNameQ() << " (IEEE 1800-2023 27.6)\n"
<< nodep->warnMore()
<< "... Suggest assign a label with 'begin : gen_<label_name>'");
}
@ -771,7 +771,7 @@ class LinkParseVisitor final : public VNVisitor {
}
if (!VN_IS(scanp, NodeFTask)) {
nodep->rhsp()->v3error(
"'super.new' not first statement in new function (IEEE 1800-2017 8.15)\n"
"'super.new' not first statement in new function (IEEE 1800-2023 8.15)\n"
<< nodep->rhsp()->warnContextPrimary() << scanp->warnOther()
<< "... Location of earlier statement\n"
<< scanp->warnContextSecondary());
@ -822,7 +822,7 @@ class LinkParseVisitor final : public VNVisitor {
AstAlways* const alwaysp = VN_CAST(nodep->backp(), Always);
if (alwaysp && alwaysp->keyword() == VAlwaysKwd::ALWAYS_COMB) {
alwaysp->v3error("Event control statements not legal under always_comb "
"(IEEE 1800-2017 9.2.2.2.2)\n"
"(IEEE 1800-2023 9.2.2.2.2)\n"
<< nodep->warnMore() << "... Suggest use a normal 'always'");
VL_DO_DANGLING(nodep->unlinkFrBack()->deleteTree(), nodep);
} else if (alwaysp && !alwaysp->sensesp()) {
@ -882,7 +882,7 @@ class LinkParseVisitor final : public VNVisitor {
if (m_defaultOutSkewp) {
nodep->skewp(m_defaultOutSkewp->cloneTree(false));
} else {
// Default is 0 (IEEE 1800-2017 14.3)
// Default is 0 (IEEE 1800-2023 14.3)
nodep->skewp(new AstConst{nodep->fileline(), 0});
}
} else if (AstConst* const constp = VN_CAST(nodep->skewp(), Const)) {
@ -895,7 +895,7 @@ class LinkParseVisitor final : public VNVisitor {
if (m_defaultInSkewp) {
nodep->skewp(m_defaultInSkewp->cloneTree(false));
} else {
// Default is 1step (IEEE 1800-2017 14.3)
// Default is 1step (IEEE 1800-2023 14.3)
nodep->skewp(new AstConst{nodep->fileline(), AstConst::OneStep{}});
}
}

View File

@ -116,7 +116,7 @@ class LinkResolveVisitor final : public VNVisitor {
if (nodep->name() == "randomize" || nodep->name() == "srandom") {
nodep->v3error(nodep->prettyNameQ()
<< " is a predefined class method; redefinition not allowed"
" (IEEE 1800-2017 18.6.3)");
" (IEEE 1800-2023 18.6.3)");
}
nodep->classMethod(true);
}

View File

@ -97,7 +97,7 @@ void V3Number::v3errorEndFatal(const std::ostringstream& str) const
V3Number::V3Number(VerilogStringLiteral, AstNode* nodep, const string& str) {
// Create a number using a verilog string as the value, thus 8 bits per character.
if (str.empty()) { // IEEE 1800-2017 11.10.3 "" = "\000"
if (str.empty()) { // IEEE 1800-2023 11.10.3 "" = "\000"
init(nodep, 8);
} else {
init(nodep, std::max<int>(str.length() * 8, 1));
@ -165,7 +165,7 @@ void V3Number::create(const char* sourcep) {
|| std::atoi(widthn.c_str()) > v3Global.opt.maxNumWidth()) {
// atoi might convert large number to negative, so can't tell which
v3error("Unsupported: Width of number exceeds implementation limit: "
<< sourcep << " (IEEE 1800-2017 6.9.1)");
<< sourcep << " (IEEE 1800-2023 6.9.1)");
width(v3Global.opt.maxNumWidth(), true);
} else {
width(std::atoi(widthn.c_str()), true);
@ -209,7 +209,7 @@ void V3Number::create(const char* sourcep) {
}
if (userSized && m_data.m_autoExtend) {
v3error("Syntax error: size cannot be provided with '0/'1/'x/'z: "
<< sourcep << " (IEEE 1800-2017 5.7.1)");
<< sourcep << " (IEEE 1800-2023 5.7.1)");
}
int obit = 0; // Start at LSB
@ -253,7 +253,7 @@ void V3Number::create(const char* sourcep) {
<< ((!sized() && !warned++) ? (
V3Error::warnMore() + "... As that number was unsized"
+ " ('d...) it is limited to 32 bits"
" (IEEE 1800-2017 5.7.1)\n"
" (IEEE 1800-2023 5.7.1)\n"
+ V3Error::warnMore() + "... Suggest adding a size to it.")
: ""));
while (*(cp + 1)) cp++; // Skip ahead so don't get multiple warnings
@ -1554,7 +1554,7 @@ V3Number& V3Number::opAtoN(const V3Number& lhs, int base) {
std::string str = lhs.toString(); // new instance to edit later
if (base == AstAtoN::ATOREAL) return setDouble(std::atof(str.c_str()));
// IEEE 1800-2017 6.16.9 says '_' may exist.
// IEEE 1800-2023 6.16.9 says '_' may exist.
str.erase(std::remove(str.begin(), str.end(), '_'), str.end());
errno = 0;

View File

@ -899,7 +899,7 @@ class ParamProcessor final {
if (AstVar* const varp = VN_CAST(stmtp, Var)) {
if (VN_IS(srcModpr, Class) && varp->isParam() && !varp->valuep()) {
nodep->v3error("Class parameter without initial value is never given value"
<< " (IEEE 1800-2017 6.20.1): " << varp->prettyNameQ());
<< " (IEEE 1800-2023 6.20.1): " << varp->prettyNameQ());
}
}
}
@ -1164,7 +1164,7 @@ class ParamVisitor final : public VNVisitor {
if (nodep->isParam()) {
if (!nodep->valuep() && !VN_IS(m_modp, Class)) {
nodep->v3error("Parameter without initial value is never given value"
<< " (IEEE 1800-2017 6.20.1): " << nodep->prettyNameQ());
<< " (IEEE 1800-2023 6.20.1): " << nodep->prettyNameQ());
} else {
V3Const::constifyParamsEdit(nodep); // The variable, not just the var->init()
}

View File

@ -636,7 +636,7 @@ void V3ParseImp::tokenPipelineSym() {
if (!warned++) {
yylval.fl->v3warn(PKGNODECL, "Package/class '" + *yylval.strp
+ "' not found, and needs to be "
"predeclared (IEEE 1800-2017 26.3)");
"predeclared (IEEE 1800-2023 26.3)");
}
}
} else if (token == yaID__LEX) {

View File

@ -331,7 +331,7 @@ void V3PreProcImp::define(FileLine* fl, const string& name, const string& value,
UINFO(4, "DEFINE '" << name << "' as '" << value << "' params '" << params << "'" << endl);
if (!V3LanguageWords::isKeyword("`"s + name).empty()) {
fl->v3error("Attempting to define built-in directive: '`" << name
<< "' (IEEE 1800-2017 22.5.1)");
<< "' (IEEE 1800-2023 22.5.1)");
} else {
if (defExists(name)) {
if (!(defValue(name) == value

View File

@ -401,7 +401,7 @@ class RandomizeVisitor final : public VNVisitor {
ifsp = newifp;
}
AstDisplay* dispp = new AstDisplay{
fl, VDisplayType::DT_ERROR, "All randcase items had 0 weights (IEEE 1800-2017 18.16)",
fl, VDisplayType::DT_ERROR, "All randcase items had 0 weights (IEEE 1800-2023 18.16)",
nullptr, nullptr};
UASSERT_OBJ(m_modp, nodep, "randcase not under module");
dispp->fmtp()->timeunit(m_modp->timeunit());

View File

@ -503,13 +503,13 @@ private:
}
if (nodep->dpiImport()) {
if (m_params) {
nodep->v3error("Constant function may not be DPI import (IEEE 1800-2017 13.4.3)");
nodep->v3error("Constant function may not be DPI import (IEEE 1800-2023 13.4.3)");
}
clearOptimizable(nodep, "DPI import functions aren't simulatable");
}
if (nodep->underGenerate()) {
nodep->v3error(
"Constant function may not be declared under generate (IEEE 1800-2017 13.4.3)");
"Constant function may not be declared under generate (IEEE 1800-2023 13.4.3)");
clearOptimizable(nodep, "Constant function called under generate");
}
checkNodeInfo(nodep);

View File

@ -1144,7 +1144,7 @@ class TaskVisitor final : public VNVisitor {
}
if (bdtypep->isDpiLogicVec()) {
portp->v3error("DPI function may not return a 4-state type "
"other than a single 'logic' (IEEE 1800-2017 35.5.5)");
"other than a single 'logic' (IEEE 1800-2023 35.5.5)");
}
}
} else if (nodep->taskPublic()) {
@ -1460,7 +1460,7 @@ class TaskVisitor final : public VNVisitor {
if (nodep->taskp()->isFunction()) {
nodep->v3warn(
IGNOREDRETURN,
"Ignoring return value of non-void function (IEEE 1800-2017 13.4.1)");
"Ignoring return value of non-void function (IEEE 1800-2023 13.4.1)");
}
nodep->unlinkFrBack();
VL_DO_DANGLING(nodep->deleteTree(), nodep);

View File

@ -380,7 +380,7 @@ class UndrivenVisitor final : public VNVisitorConst {
&& !nodep->varp()->isDeclTyped() //
&& !nodep->varp()->isClassMember() && !nodep->varp()->isFuncLocal()) {
nodep->v3warn(PROCASSWIRE, "Procedural assignment to wire, perhaps intended var"
<< " (IEEE 1800-2017 6.5): "
<< " (IEEE 1800-2023 6.5): "
<< nodep->prettyNameQ());
}
if (m_inContAssign && !nodep->varp()->varType().isContAssignable()
@ -412,7 +412,7 @@ class UndrivenVisitor final : public VNVisitorConst {
nodep->v3warn(
MULTIDRIVEN,
"Variable written to in always_comb also written by other process"
<< " (IEEE 1800-2017 9.2.2.2): " << nodep->prettyNameQ() << '\n'
<< " (IEEE 1800-2023 9.2.2.2): " << nodep->prettyNameQ() << '\n'
<< nodep->warnOther() << '\n'
<< nodep->warnContextPrimary() << '\n'
<< entryp->getNodep()->warnOther()
@ -422,7 +422,7 @@ class UndrivenVisitor final : public VNVisitorConst {
if (!m_alwaysCombp && entryp->isDrivenAlwaysCombWhole()) {
nodep->v3warn(MULTIDRIVEN,
"Variable also written to in always_comb"
<< " (IEEE 1800-2017 9.2.2.2): " << nodep->prettyNameQ()
<< " (IEEE 1800-2023 9.2.2.2): " << nodep->prettyNameQ()
<< '\n'
<< nodep->warnOther() << '\n'
<< nodep->warnContextPrimary() << '\n'

View File

@ -115,7 +115,7 @@ class UnrollVisitor final : public VNVisitor {
if (VN_IS(nodep, GenFor) && !m_forVarp->isGenVar()) {
nodep->v3error("Non-genvar used in generate for: " << m_forVarp->prettyNameQ());
} else if (!VN_IS(nodep, GenFor) && m_forVarp->isGenVar()) {
nodep->v3error("Genvar not legal in non-generate for (IEEE 1800-2017 27.4): "
nodep->v3error("Genvar not legal in non-generate for (IEEE 1800-2023 27.4): "
<< m_forVarp->prettyNameQ() << '\n'
<< nodep->warnMore()
<< "... Suggest move for loop upwards to generate-level scope.");

View File

@ -635,13 +635,13 @@ class WidthVisitor final : public VNVisitor {
}
void visit(AstDelay* nodep) override {
if (VN_IS(m_procedurep, Final)) {
nodep->v3error("Delays are not legal in final blocks (IEEE 1800-2017 9.2.3)");
nodep->v3error("Delays are not legal in final blocks (IEEE 1800-2023 9.2.3)");
VL_DO_DANGLING(pushDeletep(nodep->unlinkFrBack()), nodep);
return;
}
if (VN_IS(m_ftaskp, Func)) {
nodep->v3error("Delays are not legal in functions. Suggest use a task "
"(IEEE 1800-2017 13.4.4)");
"(IEEE 1800-2023 13.4.4)");
VL_DO_DANGLING(pushDeletep(nodep->unlinkFrBack()), nodep);
return;
}
@ -664,7 +664,7 @@ class WidthVisitor final : public VNVisitor {
void visit(AstFork* nodep) override {
if (VN_IS(m_ftaskp, Func) && !nodep->joinType().joinNone()) {
nodep->v3error("Only fork .. join_none is legal in functions. "
"(IEEE 1800-2017 13.4.4)");
"(IEEE 1800-2023 13.4.4)");
VL_DO_DANGLING(pushDeletep(nodep->unlinkFrBack()), nodep);
return;
}
@ -783,7 +783,7 @@ class WidthVisitor final : public VNVisitor {
&& !VN_IS(nodep->backp(), Concat)) { // Concat Visitor will clean it up.
nodep->v3warn(ZEROREPL,
"Replication value of 0 is only legal under a concatenation"
" (IEEE 1800-2017 11.4.12.1)");
" (IEEE 1800-2023 11.4.12.1)");
times = 1; // Set to 1, so we can continue looking for errors
}
nodep->dtypeSetLogicUnsized((nodep->srcp()->width() * times),
@ -1087,7 +1087,7 @@ class WidthVisitor final : public VNVisitor {
if (!basicp
|| (basicp->keyword() != VBasicDTypeKwd::STRING
&& !basicp->keyword().isIntNumeric())) {
nodep->v3error("Wildcard index must be integral (IEEE 1800-2017 7.8.1)");
nodep->v3error("Wildcard index must be integral (IEEE 1800-2023 7.8.1)");
}
iterateCheckTyped(nodep, "Wildcard associative select", nodep->bitp(),
adtypep->findStringDType(), BOTH);
@ -1243,10 +1243,10 @@ class WidthVisitor final : public VNVisitor {
V3Const::constifyParamsEdit(nodep->ticksp()); // ticksp may change
const AstConst* const constp = VN_CAST(nodep->ticksp(), Const);
if (!constp) {
nodep->v3error("$past tick value must be constant (IEEE 1800-2017 16.9.3)");
nodep->v3error("$past tick value must be constant (IEEE 1800-2023 16.9.3)");
nodep->ticksp()->unlinkFrBack()->deleteTree();
} else if (constp->toSInt() < 1) {
constp->v3error("$past tick value must be >= 1 (IEEE 1800-2017 16.9.3)");
constp->v3error("$past tick value must be >= 1 (IEEE 1800-2023 16.9.3)");
nodep->ticksp()->unlinkFrBack()->deleteTree();
} else {
if (constp->toSInt() > 10) {
@ -1455,7 +1455,7 @@ class WidthVisitor final : public VNVisitor {
void visit(AstEventControl* nodep) override {
if (VN_IS(m_ftaskp, Func)) {
nodep->v3error("Event controls are not legal in functions. Suggest use a task "
"(IEEE 1800-2017 13.4.4)");
"(IEEE 1800-2023 13.4.4)");
VL_DO_DANGLING(nodep->unlinkFrBack()->deleteTree(), nodep);
return;
}
@ -2293,11 +2293,11 @@ class WidthVisitor final : public VNVisitor {
}
if (!itemp->valuep()) {
if (num.isEqZero() && itemp != nodep->itemsp()) {
itemp->v3error("Enum value illegally wrapped around (IEEE 1800-2017 6.19)");
itemp->v3error("Enum value illegally wrapped around (IEEE 1800-2023 6.19)");
}
if (num.isFourState()) {
itemp->v3error("Enum value that is unassigned cannot follow value with X/Zs "
"(IEEE 1800-2017 6.19)");
"(IEEE 1800-2023 6.19)");
}
if (!nodep->dtypep()->basicp()
&& !nodep->dtypep()->basicp()->keyword().isIntNumeric()) {
@ -2311,7 +2311,7 @@ class WidthVisitor final : public VNVisitor {
if (constp->num().isFourState() && nodep->dtypep()->basicp()
&& !nodep->dtypep()->basicp()->isFourstate()) {
itemp->v3error("Enum value with X/Zs cannot be assigned to non-fourstate type "
"(IEEE 1800-2017 6.19)");
"(IEEE 1800-2023 6.19)");
}
num.opAssign(constp->num());
// Look for duplicates
@ -2340,7 +2340,7 @@ class WidthVisitor final : public VNVisitor {
bool warnOn = true;
if (const AstConst* const constp = VN_CAST(nodep->valuep(), Const)) {
if (static_cast<int>(constp->num().mostSetBitP1()) > nodep->width()) {
constp->v3error("Enum value exceeds width of enum type (IEEE 1800-2017 6.19)");
constp->v3error("Enum value exceeds width of enum type (IEEE 1800-2023 6.19)");
warnOn = false; // Prevent normal WIDTHTRUNC
}
}
@ -2564,8 +2564,8 @@ class WidthVisitor final : public VNVisitor {
inewp->dtypeSetBit();
inewp->didWidth(true);
} else if (VN_IS(itemDtp, AssocArrayDType)) {
nodep->v3error("Inside operator not specified on associative arrays (IEEE "
"1800-2017 11.4.13)");
nodep->v3error("Inside operator not specified on associative arrays "
"(IEEE 1800-2023 11.4.13)");
continue;
} else {
inewp = AstEqWild::newTyped(itemp->fileline(), nodep->exprp()->cloneTreePure(true),
@ -2615,10 +2615,10 @@ class WidthVisitor final : public VNVisitor {
&& !v3Global.opt.structsPacked())
itemp->v3error("Unpacked data type "
<< dtp->prettyDTypeNameQ()
<< " in packed struct/union (IEEE 1800-2017 7.2.1)");
<< " in packed struct/union (IEEE 1800-2023 7.2.1)");
if ((VN_IS(nodep, UnionDType) || nodep->packed()) && itemp->valuep()) {
itemp->v3error("Initial values not allowed in packed struct/union"
" (IEEE 1800-2017 7.2.1)");
" (IEEE 1800-2023 7.2.1)");
pushDeletep(itemp->valuep()->unlinkFrBack());
} else if (itemp->valuep()) {
itemp->valuep()->v3warn(E_UNSUPPORTED,
@ -3877,7 +3877,7 @@ class WidthVisitor final : public VNVisitor {
if (classp->isVirtual() || classp->isInterfaceClass()) {
nodep->v3error("Illegal to call 'new' using an abstract virtual class "
+ AstNode::prettyNameQ(classp->origName())
+ " (IEEE 1800-2017 8.21)");
+ " (IEEE 1800-2023 8.21)");
}
} else { // super.new case
// in this case class and taskp() should be properly linked in V3LinkDot.cpp during
@ -4840,7 +4840,7 @@ class WidthVisitor final : public VNVisitor {
if (auto* const controlp = nodep->timingControlp()) {
if (VN_IS(m_ftaskp, Func)) {
controlp->v3error("Timing controls are not legal in functions. Suggest use a task "
"(IEEE 1800-2017 13.4.4)");
"(IEEE 1800-2023 13.4.4)");
VL_DO_DANGLING(controlp->unlinkFrBackWithNext()->deleteTree(), controlp);
} else if (nodep->fileline()->timingOn() && v3Global.opt.timing().isSetTrue()) {
iterateNull(controlp);
@ -5070,7 +5070,7 @@ class WidthVisitor final : public VNVisitor {
if (!m_paramsOnly) {
V3Const::constifyParamsEdit(nodep->fmtp()); // fmtp may change
string text = nodep->fmtp()->text();
if (text.empty()) text = "Elaboration system task message (IEEE 1800-2017 20.11)";
if (text.empty()) text = "Elaboration system task message (IEEE 1800-2023 20.11)";
switch (nodep->displayType()) {
case VDisplayType::DT_INFO: nodep->v3warn(USERINFO, text); break;
case VDisplayType::DT_ERROR: nodep->v3warn(USERERROR, text); break;
@ -5208,7 +5208,7 @@ class WidthVisitor final : public VNVisitor {
if (!adtypep->keyDTypep()->skipRefp()->basicp()
|| !adtypep->keyDTypep()->skipRefp()->basicp()->keyword().isIntNumeric()) {
nodep->memp()->v3error(nodep->verilogKwd()
<< " address/key must be integral (IEEE 1800-2017 21.4.1)");
<< " address/key must be integral (IEEE 1800-2023 21.4.1)");
}
} else if (const AstUnpackArrayDType* const adtypep
= VN_CAST(nodep->memp()->dtypep()->skipRefp(), UnpackArrayDType)) {
@ -5333,7 +5333,7 @@ class WidthVisitor final : public VNVisitor {
<< " requires " << modwidth << " or " << modwidth * numInsts
<< " bits, but connection's "
<< nodep->exprp()->prettyTypeName() << " generates " << conwidth
<< " bits. (IEEE 1800-2017 23.3.3)");
<< " bits. (IEEE 1800-2023 23.3.3)");
subDTypep = conDTypep; // = same expr dtype
}
userIterateAndNext(nodep->exprp(), WidthVP{subDTypep, FINAL}.p());
@ -5398,7 +5398,7 @@ class WidthVisitor final : public VNVisitor {
<< (modArrayp ? "" : " not") << " an array,"
<< " and expression which is"
<< (exprArrayp ? "" : " not")
<< " an array. (IEEE 1800-2017 7.6)");
<< " an array. (IEEE 1800-2023 7.6)");
UINFO(1, " Related lo: " << modDTypep << endl);
UINFO(1, " Related hi: " << conDTypep << endl);
}
@ -5460,10 +5460,10 @@ class WidthVisitor final : public VNVisitor {
}
if (nodep->classMethod() && nodep->name() == "rand_mode") {
nodep->v3error("The 'rand_mode' method is built-in and cannot be overridden"
" (IEEE 1800-2017 18.8)");
" (IEEE 1800-2023 18.8)");
} else if (nodep->classMethod() && nodep->name() == "constraint_mode") {
nodep->v3error("The 'constraint_mode' method is built-in and cannot be overridden"
" (IEEE 1800-2017 18.9)");
" (IEEE 1800-2023 18.9)");
}
// Function hasn't been widthed, so make it so.
// Would use user1 etc, but V3Width called from too many places to spend a user
@ -5812,10 +5812,10 @@ class WidthVisitor final : public VNVisitor {
AstNodeDType* const sensDtp = nodep->sensp()->dtypep()->skipRefp();
if (sensDtp->isDouble()) {
nodep->sensp()->v3error(
"Edge event control not legal on real type (IEEE 1800-2017 6.12.1)");
"Edge event control not legal on real type (IEEE 1800-2023 6.12.1)");
} else if (sensDtp->basicp() && !sensDtp->basicp()->keyword().isIntNumeric()) {
nodep->sensp()->v3error("Edge event control not legal on non-integral type "
"(IEEE 1800-2017 9.4.2)");
"(IEEE 1800-2023 9.4.2)");
}
}
}
@ -5829,7 +5829,7 @@ class WidthVisitor final : public VNVisitor {
void visit(AstWait* nodep) override {
if (VN_IS(m_ftaskp, Func)) {
nodep->v3error("Wait statements are not legal in functions. Suggest use a task "
"(IEEE 1800-2017 13.4.4)");
"(IEEE 1800-2023 13.4.4)");
VL_DO_DANGLING(nodep->unlinkFrBack()->deleteTree(), nodep);
return;
}
@ -6631,7 +6631,7 @@ class WidthVisitor final : public VNVisitor {
// Check using assignment-like context rules
// if (debug()) nodep->dumpTree("- checkass: ");
UASSERT_OBJ(stage == FINAL, nodep, "Bad width call");
// Create unpacked byte from string perl IEEE 1800-2017 5.9
// Create unpacked byte from string perl IEEE 1800-2023 5.9
if (AstConst* constp = VN_CAST(rhsp, Const)) {
if (const AstUnpackArrayDType* const arrayp
= VN_CAST(lhsDTypep->skipRefp(), UnpackArrayDType)) {
@ -6776,7 +6776,7 @@ class WidthVisitor final : public VNVisitor {
"Implicit conversion to enum "
<< expDTypep->prettyDTypeNameQ() << " from "
<< underp->dtypep()->prettyDTypeNameQ()
<< " (IEEE 1800-2017 6.19.3)\n"
<< " (IEEE 1800-2023 6.19.3)\n"
<< nodep->warnMore()
<< "... Suggest use enum's mnemonic, or static cast");
if (debug()) nodep->backp()->dumpTree("- back: ");

View File

@ -98,7 +98,7 @@ private:
UINFO(9, "defclass " << defClassp << endl);
nodep->v3warn(ENCAPSULATED, nodep->prettyNameQ()
<< " is hidden as " << how
<< " within this context (IEEE 1800-2017 8.18)\n"
<< " within this context (IEEE 1800-2023 8.18)\n"
<< nodep->warnContextPrimary() << "\n"
<< nodep->warnOther()
<< "... Location of definition\n"
@ -175,7 +175,7 @@ private:
if (nodep->classMethod() && nodep->pureVirtual() && classp && !classp->isInterfaceClass()
&& !classp->isVirtual()) {
nodep->v3error(
"Illegal to have 'pure virtual' in non-virtual class (IEEE 1800-2017 8.21)");
"Illegal to have 'pure virtual' in non-virtual class (IEEE 1800-2023 8.21)");
}
}
void visit(AstNodeVarRef* nodep) override {

View File

@ -5876,7 +5876,7 @@ assertOrAssume<fl>:
final_zero: // IEEE: part of deferred_immediate_assertion_statement
'#' yaINTNUM
{ if ($2->isNeqZero()) { $<fl>2->v3error("Deferred assertions must use '#0' (IEEE 1800-2017 16.4)"); } }
{ if ($2->isNeqZero()) { $<fl>2->v3error("Deferred assertions must use '#0' (IEEE 1800-2023 16.4)"); } }
// // 1800-2012:
| yFINAL { }
;

View File

@ -1,4 +1,4 @@
-Info: t/t_assert_comp_bad.v:10:7: Elaboration system task message (IEEE 1800-2017 20.11)
-Info: t/t_assert_comp_bad.v:10:7: Elaboration system task message (IEEE 1800-2023 20.11)
: ... note: In instance 't'
10 | $info;
| ^~~~~
@ -6,7 +6,7 @@
: ... note: In instance 't'
11 | $info("User elaboration-time info");
| ^~~~~
%Warning-USERWARN: t/t_assert_comp_bad.v:12:7: Elaboration system task message (IEEE 1800-2017 20.11)
%Warning-USERWARN: t/t_assert_comp_bad.v:12:7: Elaboration system task message (IEEE 1800-2023 20.11)
: ... note: In instance 't'
12 | $warning;
| ^~~~~~~~
@ -20,7 +20,7 @@
: ... note: In instance 't'
14 | $warning(1);
| ^~~~~~~~
%Warning-USERERROR: t/t_assert_comp_bad.v:15:7: Elaboration system task message (IEEE 1800-2017 20.11)
%Warning-USERERROR: t/t_assert_comp_bad.v:15:7: Elaboration system task message (IEEE 1800-2023 20.11)
: ... note: In instance 't'
15 | $error;
| ^~~~~~

View File

@ -1,4 +1,4 @@
%Error: t/t_assert_imm_nz_bad.v:13:26: Deferred assertions must use '#0' (IEEE 1800-2017 16.4)
%Error: t/t_assert_imm_nz_bad.v:13:26: Deferred assertions must use '#0' (IEEE 1800-2023 16.4)
13 | labeled_imas: assert #1 (clk);
| ^
%Error: Exiting due to

View File

@ -1,8 +1,8 @@
%Error: t/t_assert_procedural_clk_bad.v:21:13: Unsupported: Procedural concurrent assertion with clocking event inside always (IEEE 1800-2017 16.14.6)
%Error: t/t_assert_procedural_clk_bad.v:21:13: Unsupported: Procedural concurrent assertion with clocking event inside always (IEEE 1800-2023 16.14.6)
: ... note: In instance 't'
21 | assume property (@(posedge clk) cyc == 9);
| ^~~~~~
%Error: t/t_assert_procedural_clk_bad.v:22:13: Unsupported: Procedural concurrent assertion with clocking event inside always (IEEE 1800-2017 16.14.6)
%Error: t/t_assert_procedural_clk_bad.v:22:13: Unsupported: Procedural concurrent assertion with clocking event inside always (IEEE 1800-2023 16.14.6)
: ... note: In instance 't'
22 | assume property (@(negedge clk) cyc == 9);
| ^~~~~~

View File

@ -66,7 +66,7 @@
: ... note: In instance 't'
41 | a.find_last_index;
| ^~~~~~~~~~~~~~~
%Error: t/t_assoc_wildcard_bad.v:43:8: Wildcard index must be integral (IEEE 1800-2017 7.8.1)
%Error: t/t_assoc_wildcard_bad.v:43:8: Wildcard index must be integral (IEEE 1800-2023 7.8.1)
: ... note: In instance 't'
43 | a[x] = "bad";
| ^

View File

@ -1,8 +1,8 @@
%Error: t/t_class_builtin_bad.v:8:17: The 'rand_mode' method is built-in and cannot be overridden (IEEE 1800-2017 18.8)
%Error: t/t_class_builtin_bad.v:8:17: The 'rand_mode' method is built-in and cannot be overridden (IEEE 1800-2023 18.8)
: ... note: In instance 't'
8 | function int rand_mode(bit onoff);
| ^~~~~~~~~
%Error: t/t_class_builtin_bad.v:11:17: The 'constraint_mode' method is built-in and cannot be overridden (IEEE 1800-2017 18.9)
%Error: t/t_class_builtin_bad.v:11:17: The 'constraint_mode' method is built-in and cannot be overridden (IEEE 1800-2023 18.9)
: ... note: In instance 't'
11 | function int constraint_mode(bit onoff);
| ^~~~~~~~~~~~~~~

View File

@ -1,4 +1,4 @@
%Error: t/t_class_extends_bad.v:13:26: Multiple inheritance illegal on non-interface classes (IEEE 1800-2017 8.13)
%Error: t/t_class_extends_bad.v:13:26: Multiple inheritance illegal on non-interface classes (IEEE 1800-2023 8.13)
13 | class Cls extends Base1, Base2;
| ^~~~~
%Error: Exiting due to

View File

@ -1,4 +1,4 @@
%Error-ENCAPSULATED: t/t_class_local_bad.v:71:20: 'm_loc' is hidden as 'local' within this context (IEEE 1800-2017 8.18)
%Error-ENCAPSULATED: t/t_class_local_bad.v:71:20: 'm_loc' is hidden as 'local' within this context (IEEE 1800-2023 8.18)
: ... note: In instance 't'
71 | bad(); if (c.m_loc != 2) $stop;
| ^~~~~
@ -6,98 +6,98 @@
15 | local int m_loc = 2;
| ^~~~~
... For error description see https://verilator.org/warn/ENCAPSULATED?v=latest
%Error-ENCAPSULATED: t/t_class_local_bad.v:72:20: 'm_prot' is hidden as 'protected' within this context (IEEE 1800-2017 8.18)
%Error-ENCAPSULATED: t/t_class_local_bad.v:72:20: 'm_prot' is hidden as 'protected' within this context (IEEE 1800-2023 8.18)
: ... note: In instance 't'
72 | bad(); if (c.m_prot != 20) $stop;
| ^~~~~~
t/t_class_local_bad.v:72:20: ... Location of definition
16 | protected int m_prot = 3;
| ^~~~~~
%Error-ENCAPSULATED: t/t_class_local_bad.v:74:20: 'm_loc' is hidden as 'local' within this context (IEEE 1800-2017 8.18)
%Error-ENCAPSULATED: t/t_class_local_bad.v:74:20: 'm_loc' is hidden as 'local' within this context (IEEE 1800-2023 8.18)
: ... note: In instance 't'
74 | bad(); if (e.m_loc != 2) $stop;
| ^~~~~
t/t_class_local_bad.v:74:20: ... Location of definition
15 | local int m_loc = 2;
| ^~~~~
%Error-ENCAPSULATED: t/t_class_local_bad.v:75:20: 'm_prot' is hidden as 'protected' within this context (IEEE 1800-2017 8.18)
%Error-ENCAPSULATED: t/t_class_local_bad.v:75:20: 'm_prot' is hidden as 'protected' within this context (IEEE 1800-2023 8.18)
: ... note: In instance 't'
75 | bad(); if (e.m_prot != 20) $stop;
| ^~~~~~
t/t_class_local_bad.v:75:20: ... Location of definition
16 | protected int m_prot = 3;
| ^~~~~~
%Error-ENCAPSULATED: t/t_class_local_bad.v:77:16: 'f_loc' is hidden as 'local' within this context (IEEE 1800-2017 8.18)
%Error-ENCAPSULATED: t/t_class_local_bad.v:77:16: 'f_loc' is hidden as 'local' within this context (IEEE 1800-2023 8.18)
: ... note: In instance 't'
77 | bad(); c.f_loc();
| ^~~~~
t/t_class_local_bad.v:77:16: ... Location of definition
18 | local task f_loc; endtask
| ^~~~~
%Error-ENCAPSULATED: t/t_class_local_bad.v:78:16: 'f_prot' is hidden as 'protected' within this context (IEEE 1800-2017 8.18)
%Error-ENCAPSULATED: t/t_class_local_bad.v:78:16: 'f_prot' is hidden as 'protected' within this context (IEEE 1800-2023 8.18)
: ... note: In instance 't'
78 | bad(); c.f_prot();
| ^~~~~~
t/t_class_local_bad.v:78:16: ... Location of definition
19 | protected task f_prot; endtask
| ^~~~~~
%Error-ENCAPSULATED: t/t_class_local_bad.v:80:16: 's_loc' is hidden as 'local' within this context (IEEE 1800-2017 8.18)
%Error-ENCAPSULATED: t/t_class_local_bad.v:80:16: 's_loc' is hidden as 'local' within this context (IEEE 1800-2023 8.18)
: ... note: In instance 't'
80 | bad(); c.s_loc();
| ^~~~~
t/t_class_local_bad.v:80:16: ... Location of definition
21 | static local task s_loc; endtask
| ^~~~~
%Error-ENCAPSULATED: t/t_class_local_bad.v:81:16: 's_prot' is hidden as 'protected' within this context (IEEE 1800-2017 8.18)
%Error-ENCAPSULATED: t/t_class_local_bad.v:81:16: 's_prot' is hidden as 'protected' within this context (IEEE 1800-2023 8.18)
: ... note: In instance 't'
81 | bad(); c.s_prot();
| ^~~~~~
t/t_class_local_bad.v:81:16: ... Location of definition
22 | static protected task s_prot; endtask
| ^~~~~~
%Error-ENCAPSULATED: t/t_class_local_bad.v:83:19: 's_loc' is hidden as 'local' within this context (IEEE 1800-2017 8.18)
%Error-ENCAPSULATED: t/t_class_local_bad.v:83:19: 's_loc' is hidden as 'local' within this context (IEEE 1800-2023 8.18)
: ... note: In instance 't'
83 | bad(); Cls::s_loc();
| ^~~~~
t/t_class_local_bad.v:83:19: ... Location of definition
21 | static local task s_loc; endtask
| ^~~~~
%Error-ENCAPSULATED: t/t_class_local_bad.v:84:19: 's_prot' is hidden as 'protected' within this context (IEEE 1800-2017 8.18)
%Error-ENCAPSULATED: t/t_class_local_bad.v:84:19: 's_prot' is hidden as 'protected' within this context (IEEE 1800-2023 8.18)
: ... note: In instance 't'
84 | bad(); Cls::s_prot();
| ^~~~~~
t/t_class_local_bad.v:84:19: ... Location of definition
22 | static protected task s_prot; endtask
| ^~~~~~
%Error-ENCAPSULATED: t/t_class_local_bad.v:47:18: 'm_loc' is hidden as 'local' within this context (IEEE 1800-2017 8.18)
%Error-ENCAPSULATED: t/t_class_local_bad.v:47:18: 'm_loc' is hidden as 'local' within this context (IEEE 1800-2023 8.18)
: ... note: In instance 't'
47 | bad(); if (m_loc != 10) $stop;
| ^~~~~
t/t_class_local_bad.v:47:18: ... Location of definition
15 | local int m_loc = 2;
| ^~~~~
%Error-ENCAPSULATED: t/t_class_local_bad.v:50:14: 'f_loc' is hidden as 'local' within this context (IEEE 1800-2017 8.18)
%Error-ENCAPSULATED: t/t_class_local_bad.v:50:14: 'f_loc' is hidden as 'local' within this context (IEEE 1800-2023 8.18)
: ... note: In instance 't'
50 | bad(); f_loc();
| ^~~~~
t/t_class_local_bad.v:50:14: ... Location of definition
18 | local task f_loc; endtask
| ^~~~~
%Error-ENCAPSULATED: t/t_class_local_bad.v:53:16: 'f_loc' is hidden as 'local' within this context (IEEE 1800-2017 8.18)
%Error-ENCAPSULATED: t/t_class_local_bad.v:53:16: 'f_loc' is hidden as 'local' within this context (IEEE 1800-2023 8.18)
: ... note: In instance 't'
53 | bad(); o.f_loc();
| ^~~~~
t/t_class_local_bad.v:53:16: ... Location of definition
18 | local task f_loc; endtask
| ^~~~~
%Error-ENCAPSULATED: t/t_class_local_bad.v:56:14: 's_loc' is hidden as 'local' within this context (IEEE 1800-2017 8.18)
%Error-ENCAPSULATED: t/t_class_local_bad.v:56:14: 's_loc' is hidden as 'local' within this context (IEEE 1800-2023 8.18)
: ... note: In instance 't'
56 | bad(); s_loc();
| ^~~~~
t/t_class_local_bad.v:56:14: ... Location of definition
21 | static local task s_loc; endtask
| ^~~~~
%Error-ENCAPSULATED: t/t_class_local_bad.v:59:19: 's_loc' is hidden as 'local' within this context (IEEE 1800-2017 8.18)
%Error-ENCAPSULATED: t/t_class_local_bad.v:59:19: 's_loc' is hidden as 'local' within this context (IEEE 1800-2023 8.18)
: ... note: In instance 't'
59 | bad(); Cls::s_loc();
| ^~~~~

View File

@ -18,7 +18,7 @@ class u_cache#(type KEY_T=int, type DATA_T=int) extends u_object;
extern function new(string name="u_cache", size_t max_size = 256);
endclass
// #() not required below, see IEEE 1800-2017 8.25.1
// #() not required below, see IEEE 1800-2023 8.25.1
function u_cache::new(string name="u_cache", u_cache::size_t max_size = 256);
super.new(name);
this.m_max_size = max_size;

View File

@ -1,4 +1,4 @@
%Error: t/t_class_param_bad_paren.v:28:11: Reference to parameterized class without #() (IEEE 1800-2017 8.25.1)
%Error: t/t_class_param_bad_paren.v:28:11: Reference to parameterized class without #() (IEEE 1800-2023 8.25.1)
: ... Suggest use 'Cls#()'
28 | if (Cls::OTHER != 12) $stop;
| ^~~

View File

@ -2,7 +2,7 @@
: ... note: In instance 't'
20 | Converter#(bit) conv2 = conv1;
| ^~~~~
%Error-ENUMVALUE: t/t_class_param_enum_bad.v:21:19: Implicit conversion to enum 'ENUMDTYPE '$unit::enum_t'' from 'logic[31:0]' (IEEE 1800-2017 6.19.3)
%Error-ENUMVALUE: t/t_class_param_enum_bad.v:21:19: Implicit conversion to enum 'ENUMDTYPE '$unit::enum_t'' from 'logic[31:0]' (IEEE 1800-2023 6.19.3)
: ... note: In instance 't'
: ... Suggest use enum's mnemonic, or static cast
21 | conv1.toInt(0);

View File

@ -15,7 +15,7 @@ endclass
module t;
initial begin
Converter#(enum_t) conv1 = new;
// enum types does not match with other types (IEEE 1800-2017 6.22.1 and 6.22.4)
// enum types does not match with other types (IEEE 1800-2023 6.22.1 and 6.22.4)
// The assignment and the function call should throw an error.
Converter#(bit) conv2 = conv1;
conv1.toInt(0);

View File

@ -1,4 +1,4 @@
%Error: t/t_class_param_noinit_bad.v:13:7: Class parameter without initial value is never given value (IEEE 1800-2017 6.20.1): 'B'
%Error: t/t_class_param_noinit_bad.v:13:7: Class parameter without initial value is never given value (IEEE 1800-2023 6.20.1): 'B'
: ... note: In instance 't'
13 | Cls #(1) c;
| ^~~

View File

@ -1,4 +1,4 @@
%Error: t/t_class_param_subtype.v:32:5: Reference to parameterized class without #() (IEEE 1800-2017 8.25.1)
%Error: t/t_class_param_subtype.v:32:5: Reference to parameterized class without #() (IEEE 1800-2023 8.25.1)
: ... Suggest use 'CParam#()'
32 | CParam::type_t val_0 = 100;
| ^~~~~~

View File

@ -1,8 +1,8 @@
%Error: t/t_class_param_virtual_bad.v:13:11: Illegal to call 'new' using an abstract virtual class 'VBase' (IEEE 1800-2017 8.21)
%Error: t/t_class_param_virtual_bad.v:13:11: Illegal to call 'new' using an abstract virtual class 'VBase' (IEEE 1800-2023 8.21)
: ... note: In instance 't'
13 | t = new;
| ^~~
%Error: t/t_class_param_virtual_bad.v:23:28: Illegal to call 'new' using an abstract virtual class 'ClsVirt' (IEEE 1800-2017 8.21)
%Error: t/t_class_param_virtual_bad.v:23:28: Illegal to call 'new' using an abstract virtual class 'ClsVirt' (IEEE 1800-2023 8.21)
: ... note: In instance 't'
23 | ClsVirt#(VBase) cv = new;
| ^~~

View File

@ -1,4 +1,4 @@
%Error: t/t_class_super_bad.v:15:12: 'super' used outside class (IEEE 1800-2017 8.15)
%Error: t/t_class_super_bad.v:15:12: 'super' used outside class (IEEE 1800-2023 8.15)
15 | super.addr = 2;
| ^
%Error: Exiting due to

View File

@ -1,4 +1,4 @@
%Error: t/t_class_super_bad2.v:10:12: 'super' used on non-extended class (IEEE 1800-2017 8.15)
%Error: t/t_class_super_bad2.v:10:12: 'super' used on non-extended class (IEEE 1800-2023 8.15)
10 | super.i = 1;
| ^
%Error: Exiting due to

View File

@ -1,4 +1,4 @@
%Error: t/t_class_super_new_bad_nfirst.v:18:13: 'super.new' not first statement in new function (IEEE 1800-2017 8.15)
%Error: t/t_class_super_new_bad_nfirst.v:18:13: 'super.new' not first statement in new function (IEEE 1800-2023 8.15)
18 | super.new(imemberc);
| ^~~
t/t_class_super_new_bad_nfirst.v:17:16: ... Location of earlier statement

View File

@ -1,4 +1,4 @@
%Error: t/t_class_uses_this_bad.v:15:12: 'this' used outside class (IEEE 1800-2017 8.11)
%Error: t/t_class_uses_this_bad.v:15:12: 'this' used outside class (IEEE 1800-2023 8.11)
15 | this.addr = 2;
| ^
%Error: Exiting due to

View File

@ -1,4 +1,4 @@
%Error: t/t_class_virtual_bad.v:12:17: Illegal to call 'new' using an abstract virtual class 'VBase' (IEEE 1800-2017 8.21)
%Error: t/t_class_virtual_bad.v:12:17: Illegal to call 'new' using an abstract virtual class 'VBase' (IEEE 1800-2023 8.21)
: ... note: In instance 't'
12 | VBase b = new;
| ^~~

View File

@ -1,4 +1,4 @@
%Error: t/t_class_virtual_pure_bad.v:8:22: Illegal to have 'pure virtual' in non-virtual class (IEEE 1800-2017 8.21)
%Error: t/t_class_virtual_pure_bad.v:8:22: Illegal to have 'pure virtual' in non-virtual class (IEEE 1800-2023 8.21)
8 | pure virtual task pure_task;
| ^~~~~~~~~
%Error: Exiting due to

View File

@ -1,4 +1,4 @@
%Error: t/t_clocking_bad1.v:16:12: Only one default clocking block allowed per module (IEEE 1800-2017 14.12)
%Error: t/t_clocking_bad1.v:16:12: Only one default clocking block allowed per module (IEEE 1800-2023 14.12)
: ... note: In instance 't'
16 | default clocking @(posedge clk);
| ^~~~~~~~

View File

@ -1,4 +1,4 @@
%Error: t/t_clocking_bad4.v:23:15: Skew must be constant (IEEE 1800-2017 14.4)
%Error: t/t_clocking_bad4.v:23:15: Skew must be constant (IEEE 1800-2023 14.4)
: ... note: In instance 't'
23 | input #cyc in;
| ^~~
@ -6,39 +6,39 @@
: ... note: In instance 't'
24 | input #(-1) out;
| ^
%Error: t/t_clocking_bad4.v:31:11: Usage of cycle delays requires default clocking (IEEE 1800-2017 14.11)
%Error: t/t_clocking_bad4.v:31:11: Usage of cycle delays requires default clocking (IEEE 1800-2023 14.11)
: ... note: In instance 't'
31 | always ##1;
| ^~
%Error: t/t_clocking_bad4.v:32:15: Only non-blocking assignments can write to clockvars (IEEE 1800-2017 14.16)
%Error: t/t_clocking_bad4.v:32:15: Only non-blocking assignments can write to clockvars (IEEE 1800-2023 14.16)
: ... note: In instance 't'
32 | always cb1.out = clk;
| ^~~
%Error: t/t_clocking_bad4.v:33:15: Only non-blocking assignments can write to clockvars (IEEE 1800-2017 14.16)
%Error: t/t_clocking_bad4.v:33:15: Only non-blocking assignments can write to clockvars (IEEE 1800-2023 14.16)
: ... note: In instance 't'
33 | assign cb1.out = clk;
| ^~~
%Error: t/t_clocking_bad4.v:34:21: Only non-blocking assignments can write to clockvars (IEEE 1800-2017 14.16)
%Error: t/t_clocking_bad4.v:34:21: Only non-blocking assignments can write to clockvars (IEEE 1800-2023 14.16)
: ... note: In instance 't'
34 | always write(cb1.out);
| ^~~
%Error: t/t_clocking_bad4.v:35:22: Event controls cannot be used in synchronous drives (IEEE 1800-2017 14.16)
%Error: t/t_clocking_bad4.v:35:22: Event controls cannot be used in synchronous drives (IEEE 1800-2023 14.16)
: ... note: In instance 't'
35 | always cb1.out <= @(posedge clk) 1;
| ^
%Error: t/t_clocking_bad4.v:36:22: Only cycle delays can be used in synchronous drives (IEEE 1800-2017 14.16)
%Error: t/t_clocking_bad4.v:36:22: Only cycle delays can be used in synchronous drives (IEEE 1800-2023 14.16)
: ... note: In instance 't'
36 | always cb1.out <= #1 1;
| ^
%Error: t/t_clocking_bad4.v:37:18: Cycle delays not allowed as intra-assignment delays (IEEE 1800-2017 14.11)
%Error: t/t_clocking_bad4.v:37:18: Cycle delays not allowed as intra-assignment delays (IEEE 1800-2023 14.11)
: ... note: In instance 't'
37 | always out <= ##1 1;
| ^~
%Error: t/t_clocking_bad4.v:40:12: Cannot write to input clockvar (IEEE 1800-2017 14.3)
%Error: t/t_clocking_bad4.v:40:12: Cannot write to input clockvar (IEEE 1800-2023 14.3)
: ... note: In instance 't'
40 | cb1.in = 1;
| ^~
%Error: t/t_clocking_bad4.v:41:21: Cannot read from output clockvar (IEEE 1800-2017 14.3)
%Error: t/t_clocking_bad4.v:41:21: Cannot read from output clockvar (IEEE 1800-2023 14.3)
: ... note: In instance 't'
41 | $display(cb1.out);
| ^~~

View File

@ -74,7 +74,7 @@ void set_bvals(svLogicVecVal* v, unsigned n) {
for (unsigned i = 0; i < n; i++) v[i].bval = 0;
}
// Basic types as per IEEE 1800-2017 35.5.6
// Basic types as per IEEE 1800-2023 35.5.6
void i_byte(char* x) {
static int n = 0;
if (*x != 10 - n++) stop();
@ -893,7 +893,7 @@ void check_exports() {
set_bvals(x_union_4_state_65, 3);
set_bvals(x_union_4_state_128, 4);
// Basic types as per IEEE 1800-2017 35.5.6
// Basic types as per IEEE 1800-2023 35.5.6
x_byte = 10 + n;
e_byte(&x_byte);
if (x_byte != 110 + n) stop();

View File

@ -42,7 +42,7 @@ module t (/*AUTOARG*/
// Type definitions
//======================================================================
// Basic types as per IEEE 1800-2017 35.5.6
// Basic types as per IEEE 1800-2023 35.5.6
typedef byte byte_t;
typedef byte unsigned byte_unsigned_t;
typedef shortint shortint_t;
@ -102,7 +102,7 @@ module t (/*AUTOARG*/
// Imports
//======================================================================
// Basic types as per IEEE 1800-2017 35.5.6
// Basic types as per IEEE 1800-2023 35.5.6
import "DPI-C" function void i_byte (inout byte x);
import "DPI-C" function void i_byte_unsigned (inout byte unsigned x);
import "DPI-C" function void i_shortint (inout shortint x);
@ -202,7 +202,7 @@ module t (/*AUTOARG*/
// Exports
//======================================================================
// Basic types as per IEEE 1800-2017 35.5.6
// Basic types as per IEEE 1800-2023 35.5.6
export "DPI-C" function e_byte;
export "DPI-C" function e_byte_unsigned;
export "DPI-C" function e_shortint;
@ -302,7 +302,7 @@ module t (/*AUTOARG*/
// Definitions of exported functions
//======================================================================
// Basic types as per IEEE 1800-2017 35.5.6
// Basic types as per IEEE 1800-2023 35.5.6
byte n_byte = 0;
function void e_byte(inout byte x);
if (x !== 8'd10 + n_byte) $stop;
@ -958,7 +958,7 @@ module t (/*AUTOARG*/
union_4_state_65 x_union_4_state_65;
union_4_state_128 x_union_4_state_128;
// Basic types as per IEEE 1800-2017 35.5.6
// Basic types as per IEEE 1800-2023 35.5.6
x_byte = 8'd10 - 8'(i); i_byte(x_byte); if (x_byte !== 8'd110 - 8'(i)) $stop;
x_byte_unsigned = 8'd20 - 8'(i); i_byte_unsigned(x_byte_unsigned); if (x_byte_unsigned !== 8'd220 - 8'(i)) $stop;
x_shortint = 16'd30 - 16'(i); i_shortint(x_shortint); if (x_shortint !== 16'd330 - 16'(i)) $stop;

View File

@ -74,7 +74,7 @@ void check_bvals(CONSTARG svLogicVecVal* v, unsigned n) {
}
}
// Basic types as per IEEE 1800-2017 35.5.6
// Basic types as per IEEE 1800-2023 35.5.6
void i_byte(char i) {
static int n = 0;
if (i != 10 - n++) stop();
@ -596,7 +596,7 @@ void check_exports() {
set_bvals(x_integer_t, 1);
#endif
// Basic types as per IEEE 1800-2017 35.5.6
// Basic types as per IEEE 1800-2023 35.5.6
e_byte(10 + n);
e_byte_unsigned(20 + n);
e_shortint(30 + n);

View File

@ -42,7 +42,7 @@ module t (/*AUTOARG*/
// Type definitions
//======================================================================
// Basic types as per IEEE 1800-2017 35.5.6
// Basic types as per IEEE 1800-2023 35.5.6
typedef byte byte_t;
typedef byte unsigned byte_unsigned_t;
typedef shortint shortint_t;
@ -102,7 +102,7 @@ module t (/*AUTOARG*/
// Imports
//======================================================================
// Basic types as per IEEE 1800-2017 35.5.6
// Basic types as per IEEE 1800-2023 35.5.6
import "DPI-C" function void i_byte (input byte i);
import "DPI-C" function void i_byte_unsigned (input byte unsigned i);
import "DPI-C" function void i_shortint (input shortint i);
@ -202,7 +202,7 @@ module t (/*AUTOARG*/
// Exports
//======================================================================
// Basic types as per IEEE 1800-2017 35.5.6
// Basic types as per IEEE 1800-2023 35.5.6
export "DPI-C" function e_byte;
export "DPI-C" function e_byte_unsigned;
export "DPI-C" function e_shortint;
@ -302,7 +302,7 @@ module t (/*AUTOARG*/
// Definitions of exported functions
//======================================================================
// Basic types as per IEEE 1800-2017 35.5.6
// Basic types as per IEEE 1800-2023 35.5.6
byte n_byte = 0;
function void e_byte(input byte i);
if (i !== 8'd10 + n_byte) $stop;
@ -800,7 +800,7 @@ module t (/*AUTOARG*/
for (int i = 0 ; i < 3; i++) begin
// Check the imports
// Basic types as per IEEE 1800-2017 35.5.6
// Basic types as per IEEE 1800-2023 35.5.6
i_byte( 8'd10 - 8'(i));
i_byte_unsigned( 8'd20 - 8'(i));
i_shortint( 16'd30 - 16'(i));

View File

@ -58,7 +58,7 @@ void set_bvals(svLogicVecVal* v, unsigned n) {
for (unsigned i = 0; i < n; i++) v[i].bval = 0;
}
// Basic types as per IEEE 1800-2017 35.5.6
// Basic types as per IEEE 1800-2023 35.5.6
void i_byte(char* o) {
static int n = 0;
*o = 10 - n++;
@ -661,7 +661,7 @@ void check_exports() {
svLogicVecVal x_union_4_state_65[3];
svLogicVecVal x_union_4_state_128[4];
// Basic types as per IEEE 1800-2017 35.5.6
// Basic types as per IEEE 1800-2023 35.5.6
e_byte(&x_byte);
if (x_byte != 10 + n) stop();

View File

@ -42,7 +42,7 @@ module t (/*AUTOARG*/
// Type definitions
//======================================================================
// Basic types as per IEEE 1800-2017 35.5.6
// Basic types as per IEEE 1800-2023 35.5.6
typedef byte byte_t;
typedef byte unsigned byte_unsigned_t;
typedef shortint shortint_t;
@ -102,7 +102,7 @@ module t (/*AUTOARG*/
// Imports
//======================================================================
// Basic types as per IEEE 1800-2017 35.5.6
// Basic types as per IEEE 1800-2023 35.5.6
import "DPI-C" function void i_byte (output byte o);
import "DPI-C" function void i_byte_unsigned (output byte unsigned o);
import "DPI-C" function void i_shortint (output shortint o);
@ -202,7 +202,7 @@ module t (/*AUTOARG*/
// Exports
//======================================================================
// Basic types as per IEEE 1800-2017 35.5.6
// Basic types as per IEEE 1800-2023 35.5.6
export "DPI-C" function e_byte;
export "DPI-C" function e_byte_unsigned;
export "DPI-C" function e_shortint;
@ -302,7 +302,7 @@ module t (/*AUTOARG*/
// Definitions of exported functions
//======================================================================
// Basic types as per IEEE 1800-2017 35.5.6
// Basic types as per IEEE 1800-2023 35.5.6
byte n_byte = 0;
function void e_byte(output byte o);
o = 8'd10 + n_byte;
@ -872,7 +872,7 @@ module t (/*AUTOARG*/
union_4_state_65 x_union_4_state_65;
union_4_state_128 x_union_4_state_128;
// Basic types as per IEEE 1800-2017 35.5.6
// Basic types as per IEEE 1800-2023 35.5.6
i_byte(x_byte); if (x_byte !== 8'd10 - 8'(i)) $stop;
i_byte_unsigned(x_byte_unsigned); if (x_byte_unsigned !== 8'd20 - 8'(i)) $stop;
i_shortint(x_shortint); if (x_shortint !== 16'd30 - 16'(i)) $stop;

View File

@ -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-2017 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. See IEEE 1800-2023 35.5.3.
Aborting...

View File

@ -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-2017 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. See IEEE 1800-2023 35.5.3.
Aborting...

View File

@ -1,4 +1,4 @@
%Error: t/t_dpi_logic_bad.v:12:54: DPI function may not return type BASICDTYPE 'logic' (IEEE 1800-2017 35.5.5)
%Error: t/t_dpi_logic_bad.v:12:54: DPI function may not return type BASICDTYPE 'logic' (IEEE 1800-2023 35.5.5)
12 | import "DPI-C" dpii_fa_bit = function logic [2:0] oth_f_int1(input time i);
| ^~~~~~~~~~
%Error: Exiting due to

View File

@ -30,7 +30,7 @@
//======================================================================
// These are simple wrappers for the array querying functions themselves,
// see IEEE 1800-2017 H.12.2. Sadly on the SV side these have different
// see IEEE 1800-2023 H.12.2. Sadly on the SV side these have different
// signatures, and hence need to have different names here as well.
// 1 open dimension

View File

@ -48,7 +48,7 @@ typedef uint64_t sv_longint_unsigned_t;
// Implementations of imported functions
//======================================================================
// Basic types as per IEEE 1800-2017 35.5.5
// Basic types as per IEEE 1800-2023 35.5.5
void i_void() {
static int n = 0;
printf("i_void %d\n", n);
@ -286,7 +286,7 @@ void check_exports() {
e_void();
// Basic types as per IEEE 1800-2017 35.5.5
// Basic types as per IEEE 1800-2023 35.5.5
if (e_byte() != 10 + n) stop();
if (e_byte_unsigned() != 20 + n) stop();
if (e_shortint() != 30 + n) stop();

View File

@ -43,7 +43,7 @@ module t (/*AUTOARG*/
// Type definitions
//======================================================================
// Basic types as per IEEE 1800-2017 35.5.5
// Basic types as per IEEE 1800-2023 35.5.5
typedef byte byte_t;
typedef byte unsigned byte_unsigned_t;
typedef shortint shortint_t;
@ -73,7 +73,7 @@ module t (/*AUTOARG*/
// Imports
//======================================================================
// Basic types as per IEEE 1800-2017 35.5.5
// Basic types as per IEEE 1800-2023 35.5.5
import "DPI-C" function void i_void ();
import "DPI-C" function byte i_byte ();
import "DPI-C" function byte unsigned i_byte_unsigned ();
@ -130,7 +130,7 @@ module t (/*AUTOARG*/
// Exports
//======================================================================
// Basic types as per IEEE 1800-2017 35.5.5
// Basic types as per IEEE 1800-2023 35.5.5
export "DPI-C" function e_void;
export "DPI-C" function e_byte;
export "DPI-C" function e_byte_unsigned;
@ -193,9 +193,9 @@ module t (/*AUTOARG*/
// Static variables (Note: Verilator strangely assumes everything inside
// a function is automatic, which is exactly the opposite of the standard
// see IEEE 1800-2017 13.3.1 and 13.4.2
// see IEEE 1800-2023 13.3.1 and 13.4.2
// Basic types as per IEEE 1800-2017 35.5.5
// Basic types as per IEEE 1800-2023 35.5.5
int n_void = 0;
function void e_void();
$display("e_void %1d", n_void);
@ -446,7 +446,7 @@ module t (/*AUTOARG*/
for (int i = 0 ; i < 3; i++) begin
// Check the imports
// Basic types as per IEEE 1800-2017 35.5.5
// Basic types as per IEEE 1800-2023 35.5.5
i_void();
if (i_byte() !== 8'd10 - 8'(i)) $stop;
if (i_byte_unsigned() !== 8'd20 - 8'(i)) $stop;

View File

@ -62,139 +62,139 @@
: ... Suggest make it an output argument instead?
100 | import "DPI-C" function union_2_state_128 i_union_2_state_128();
| ^~~~~~~~~~~~~~~~~~~
%Error: t/t_dpi_result_type_bad.v:103:36: DPI function may not return a 4-state type other than a single 'logic' (IEEE 1800-2017 35.5.5)
%Error: t/t_dpi_result_type_bad.v:103:36: DPI function may not return a 4-state type other than a single 'logic' (IEEE 1800-2023 35.5.5)
103 | import "DPI-C" function integer i_integer();
| ^~~~~~~~~
%Error: t/t_dpi_result_type_bad.v:106:42: DPI function may not return a 4-state type other than a single 'logic' (IEEE 1800-2017 35.5.5)
%Error: t/t_dpi_result_type_bad.v:106:42: DPI function may not return a 4-state type other than a single 'logic' (IEEE 1800-2023 35.5.5)
106 | import "DPI-C" function logic [ 0:0] i_array_4_state_1();
| ^~~~~~~~~~~~~~~~~
%Error: t/t_dpi_result_type_bad.v:107:42: DPI function may not return a 4-state type other than a single 'logic' (IEEE 1800-2017 35.5.5)
%Error: t/t_dpi_result_type_bad.v:107:42: DPI function may not return a 4-state type other than a single 'logic' (IEEE 1800-2023 35.5.5)
107 | import "DPI-C" function logic [ 1:0] i_array_4_state_2();
| ^~~~~~~~~~~~~~~~~
%Error: t/t_dpi_result_type_bad.v:108:42: DPI function may not return a 4-state type other than a single 'logic' (IEEE 1800-2017 35.5.5)
%Error: t/t_dpi_result_type_bad.v:108:42: DPI function may not return a 4-state type other than a single 'logic' (IEEE 1800-2023 35.5.5)
108 | import "DPI-C" function logic [ 7:0] i_array_4_state_8();
| ^~~~~~~~~~~~~~~~~
%Error: t/t_dpi_result_type_bad.v:109:42: DPI function may not return a 4-state type other than a single 'logic' (IEEE 1800-2017 35.5.5)
%Error: t/t_dpi_result_type_bad.v:109:42: DPI function may not return a 4-state type other than a single 'logic' (IEEE 1800-2023 35.5.5)
109 | import "DPI-C" function logic [ 8:0] i_array_4_state_9();
| ^~~~~~~~~~~~~~~~~
%Error: t/t_dpi_result_type_bad.v:110:42: DPI function may not return a 4-state type other than a single 'logic' (IEEE 1800-2017 35.5.5)
%Error: t/t_dpi_result_type_bad.v:110:42: DPI function may not return a 4-state type other than a single 'logic' (IEEE 1800-2023 35.5.5)
110 | import "DPI-C" function logic [ 15:0] i_array_4_state_16();
| ^~~~~~~~~~~~~~~~~~
%Error: t/t_dpi_result_type_bad.v:111:42: DPI function may not return a 4-state type other than a single 'logic' (IEEE 1800-2017 35.5.5)
%Error: t/t_dpi_result_type_bad.v:111:42: DPI function may not return a 4-state type other than a single 'logic' (IEEE 1800-2023 35.5.5)
111 | import "DPI-C" function logic [ 16:0] i_array_4_state_17();
| ^~~~~~~~~~~~~~~~~~
%Error: t/t_dpi_result_type_bad.v:112:42: DPI function may not return a 4-state type other than a single 'logic' (IEEE 1800-2017 35.5.5)
%Error: t/t_dpi_result_type_bad.v:112:42: DPI function may not return a 4-state type other than a single 'logic' (IEEE 1800-2023 35.5.5)
112 | import "DPI-C" function logic [ 31:0] i_array_4_state_32();
| ^~~~~~~~~~~~~~~~~~
%Error: t/t_dpi_result_type_bad.v:113:42: DPI function may not return a 4-state type other than a single 'logic' (IEEE 1800-2017 35.5.5)
%Error: t/t_dpi_result_type_bad.v:113:42: DPI function may not return a 4-state type other than a single 'logic' (IEEE 1800-2023 35.5.5)
113 | import "DPI-C" function logic [ 32:0] i_array_4_state_33();
| ^~~~~~~~~~~~~~~~~~
%Error: t/t_dpi_result_type_bad.v:114:42: DPI function may not return a 4-state type other than a single 'logic' (IEEE 1800-2017 35.5.5)
%Error: t/t_dpi_result_type_bad.v:114:42: DPI function may not return a 4-state type other than a single 'logic' (IEEE 1800-2023 35.5.5)
114 | import "DPI-C" function logic [ 63:0] i_array_4_state_64();
| ^~~~~~~~~~~~~~~~~~
%Error: t/t_dpi_result_type_bad.v:115:42: DPI function may not return a 4-state type other than a single 'logic' (IEEE 1800-2017 35.5.5)
%Error: t/t_dpi_result_type_bad.v:115:42: DPI function may not return a 4-state type other than a single 'logic' (IEEE 1800-2023 35.5.5)
115 | import "DPI-C" function logic [ 64:0] i_array_4_state_65();
| ^~~~~~~~~~~~~~~~~~
%Error: t/t_dpi_result_type_bad.v:116:42: DPI function may not return a 4-state type other than a single 'logic' (IEEE 1800-2017 35.5.5)
%Error: t/t_dpi_result_type_bad.v:116:42: DPI function may not return a 4-state type other than a single 'logic' (IEEE 1800-2023 35.5.5)
116 | import "DPI-C" function logic [127:0] i_array_4_state_128();
| ^~~~~~~~~~~~~~~~~~~
%Error: t/t_dpi_result_type_bad.v:119:48: DPI function may not return a 4-state type other than a single 'logic' (IEEE 1800-2017 35.5.5)
%Error: t/t_dpi_result_type_bad.v:119:48: DPI function may not return a 4-state type other than a single 'logic' (IEEE 1800-2023 35.5.5)
119 | import "DPI-C" function array_4_state_1_t i_array_4_state_1_t();
| ^~~~~~~~~~~~~~~~~~~
%Error: t/t_dpi_result_type_bad.v:120:48: DPI function may not return a 4-state type other than a single 'logic' (IEEE 1800-2017 35.5.5)
%Error: t/t_dpi_result_type_bad.v:120:48: DPI function may not return a 4-state type other than a single 'logic' (IEEE 1800-2023 35.5.5)
120 | import "DPI-C" function array_4_state_2_t i_array_4_state_2_t();
| ^~~~~~~~~~~~~~~~~~~
%Error: t/t_dpi_result_type_bad.v:121:48: DPI function may not return a 4-state type other than a single 'logic' (IEEE 1800-2017 35.5.5)
%Error: t/t_dpi_result_type_bad.v:121:48: DPI function may not return a 4-state type other than a single 'logic' (IEEE 1800-2023 35.5.5)
121 | import "DPI-C" function array_4_state_8_t i_array_4_state_8_t();
| ^~~~~~~~~~~~~~~~~~~
%Error: t/t_dpi_result_type_bad.v:122:48: DPI function may not return a 4-state type other than a single 'logic' (IEEE 1800-2017 35.5.5)
%Error: t/t_dpi_result_type_bad.v:122:48: DPI function may not return a 4-state type other than a single 'logic' (IEEE 1800-2023 35.5.5)
122 | import "DPI-C" function array_4_state_9_t i_array_4_state_9_t();
| ^~~~~~~~~~~~~~~~~~~
%Error: t/t_dpi_result_type_bad.v:123:48: DPI function may not return a 4-state type other than a single 'logic' (IEEE 1800-2017 35.5.5)
%Error: t/t_dpi_result_type_bad.v:123:48: DPI function may not return a 4-state type other than a single 'logic' (IEEE 1800-2023 35.5.5)
123 | import "DPI-C" function array_4_state_16_t i_array_4_state_16_t();
| ^~~~~~~~~~~~~~~~~~~~
%Error: t/t_dpi_result_type_bad.v:124:48: DPI function may not return a 4-state type other than a single 'logic' (IEEE 1800-2017 35.5.5)
%Error: t/t_dpi_result_type_bad.v:124:48: DPI function may not return a 4-state type other than a single 'logic' (IEEE 1800-2023 35.5.5)
124 | import "DPI-C" function array_4_state_17_t i_array_4_state_17_t();
| ^~~~~~~~~~~~~~~~~~~~
%Error: t/t_dpi_result_type_bad.v:125:48: DPI function may not return a 4-state type other than a single 'logic' (IEEE 1800-2017 35.5.5)
%Error: t/t_dpi_result_type_bad.v:125:48: DPI function may not return a 4-state type other than a single 'logic' (IEEE 1800-2023 35.5.5)
125 | import "DPI-C" function array_4_state_32_t i_array_4_state_32_t();
| ^~~~~~~~~~~~~~~~~~~~
%Error: t/t_dpi_result_type_bad.v:126:48: DPI function may not return a 4-state type other than a single 'logic' (IEEE 1800-2017 35.5.5)
%Error: t/t_dpi_result_type_bad.v:126:48: DPI function may not return a 4-state type other than a single 'logic' (IEEE 1800-2023 35.5.5)
126 | import "DPI-C" function array_4_state_33_t i_array_4_state_33_t();
| ^~~~~~~~~~~~~~~~~~~~
%Error: t/t_dpi_result_type_bad.v:127:48: DPI function may not return a 4-state type other than a single 'logic' (IEEE 1800-2017 35.5.5)
%Error: t/t_dpi_result_type_bad.v:127:48: DPI function may not return a 4-state type other than a single 'logic' (IEEE 1800-2023 35.5.5)
127 | import "DPI-C" function array_4_state_64_t i_array_4_state_64_t();
| ^~~~~~~~~~~~~~~~~~~~
%Error: t/t_dpi_result_type_bad.v:128:48: DPI function may not return a 4-state type other than a single 'logic' (IEEE 1800-2017 35.5.5)
%Error: t/t_dpi_result_type_bad.v:128:48: DPI function may not return a 4-state type other than a single 'logic' (IEEE 1800-2023 35.5.5)
128 | import "DPI-C" function array_4_state_65_t i_array_4_state_65_t();
| ^~~~~~~~~~~~~~~~~~~~
%Error: t/t_dpi_result_type_bad.v:129:48: DPI function may not return a 4-state type other than a single 'logic' (IEEE 1800-2017 35.5.5)
%Error: t/t_dpi_result_type_bad.v:129:48: DPI function may not return a 4-state type other than a single 'logic' (IEEE 1800-2023 35.5.5)
129 | import "DPI-C" function array_4_state_128_t i_array_4_state_128_t();
| ^~~~~~~~~~~~~~~~~~~~~
%Error: t/t_dpi_result_type_bad.v:132:47: DPI function may not return a 4-state type other than a single 'logic' (IEEE 1800-2017 35.5.5)
%Error: t/t_dpi_result_type_bad.v:132:47: DPI function may not return a 4-state type other than a single 'logic' (IEEE 1800-2023 35.5.5)
132 | import "DPI-C" function struct_4_state_1 i_struct_4_state_1();
| ^~~~~~~~~~~~~~~~~~
%Error: t/t_dpi_result_type_bad.v:133:47: DPI function may not return a 4-state type other than a single 'logic' (IEEE 1800-2017 35.5.5)
%Error: t/t_dpi_result_type_bad.v:133:47: DPI function may not return a 4-state type other than a single 'logic' (IEEE 1800-2023 35.5.5)
133 | import "DPI-C" function struct_4_state_2 i_struct_4_state_2();
| ^~~~~~~~~~~~~~~~~~
%Error: t/t_dpi_result_type_bad.v:134:47: DPI function may not return a 4-state type other than a single 'logic' (IEEE 1800-2017 35.5.5)
%Error: t/t_dpi_result_type_bad.v:134:47: DPI function may not return a 4-state type other than a single 'logic' (IEEE 1800-2023 35.5.5)
134 | import "DPI-C" function struct_4_state_8 i_struct_4_state_8();
| ^~~~~~~~~~~~~~~~~~
%Error: t/t_dpi_result_type_bad.v:135:47: DPI function may not return a 4-state type other than a single 'logic' (IEEE 1800-2017 35.5.5)
%Error: t/t_dpi_result_type_bad.v:135:47: DPI function may not return a 4-state type other than a single 'logic' (IEEE 1800-2023 35.5.5)
135 | import "DPI-C" function struct_4_state_9 i_struct_4_state_9();
| ^~~~~~~~~~~~~~~~~~
%Error: t/t_dpi_result_type_bad.v:136:47: DPI function may not return a 4-state type other than a single 'logic' (IEEE 1800-2017 35.5.5)
%Error: t/t_dpi_result_type_bad.v:136:47: DPI function may not return a 4-state type other than a single 'logic' (IEEE 1800-2023 35.5.5)
136 | import "DPI-C" function struct_4_state_16 i_struct_4_state_16();
| ^~~~~~~~~~~~~~~~~~~
%Error: t/t_dpi_result_type_bad.v:137:47: DPI function may not return a 4-state type other than a single 'logic' (IEEE 1800-2017 35.5.5)
%Error: t/t_dpi_result_type_bad.v:137:47: DPI function may not return a 4-state type other than a single 'logic' (IEEE 1800-2023 35.5.5)
137 | import "DPI-C" function struct_4_state_17 i_struct_4_state_17();
| ^~~~~~~~~~~~~~~~~~~
%Error: t/t_dpi_result_type_bad.v:138:47: DPI function may not return a 4-state type other than a single 'logic' (IEEE 1800-2017 35.5.5)
%Error: t/t_dpi_result_type_bad.v:138:47: DPI function may not return a 4-state type other than a single 'logic' (IEEE 1800-2023 35.5.5)
138 | import "DPI-C" function struct_4_state_32 i_struct_4_state_32();
| ^~~~~~~~~~~~~~~~~~~
%Error: t/t_dpi_result_type_bad.v:139:47: DPI function may not return a 4-state type other than a single 'logic' (IEEE 1800-2017 35.5.5)
%Error: t/t_dpi_result_type_bad.v:139:47: DPI function may not return a 4-state type other than a single 'logic' (IEEE 1800-2023 35.5.5)
139 | import "DPI-C" function struct_4_state_33 i_struct_4_state_33();
| ^~~~~~~~~~~~~~~~~~~
%Error: t/t_dpi_result_type_bad.v:140:47: DPI function may not return a 4-state type other than a single 'logic' (IEEE 1800-2017 35.5.5)
%Error: t/t_dpi_result_type_bad.v:140:47: DPI function may not return a 4-state type other than a single 'logic' (IEEE 1800-2023 35.5.5)
140 | import "DPI-C" function struct_4_state_64 i_struct_4_state_64();
| ^~~~~~~~~~~~~~~~~~~
%Error: t/t_dpi_result_type_bad.v:141:47: DPI function may not return a 4-state type other than a single 'logic' (IEEE 1800-2017 35.5.5)
%Error: t/t_dpi_result_type_bad.v:141:47: DPI function may not return a 4-state type other than a single 'logic' (IEEE 1800-2023 35.5.5)
141 | import "DPI-C" function struct_4_state_65 i_struct_4_state_65();
| ^~~~~~~~~~~~~~~~~~~
%Error: t/t_dpi_result_type_bad.v:142:47: DPI function may not return a 4-state type other than a single 'logic' (IEEE 1800-2017 35.5.5)
%Error: t/t_dpi_result_type_bad.v:142:47: DPI function may not return a 4-state type other than a single 'logic' (IEEE 1800-2023 35.5.5)
142 | import "DPI-C" function struct_4_state_128 i_struct_4_state_128();
| ^~~~~~~~~~~~~~~~~~~~
%Error: t/t_dpi_result_type_bad.v:145:46: DPI function may not return a 4-state type other than a single 'logic' (IEEE 1800-2017 35.5.5)
%Error: t/t_dpi_result_type_bad.v:145:46: DPI function may not return a 4-state type other than a single 'logic' (IEEE 1800-2023 35.5.5)
145 | import "DPI-C" function union_4_state_1 i_union_4_state_1();
| ^~~~~~~~~~~~~~~~~
%Error: t/t_dpi_result_type_bad.v:146:46: DPI function may not return a 4-state type other than a single 'logic' (IEEE 1800-2017 35.5.5)
%Error: t/t_dpi_result_type_bad.v:146:46: DPI function may not return a 4-state type other than a single 'logic' (IEEE 1800-2023 35.5.5)
146 | import "DPI-C" function union_4_state_2 i_union_4_state_2();
| ^~~~~~~~~~~~~~~~~
%Error: t/t_dpi_result_type_bad.v:147:46: DPI function may not return a 4-state type other than a single 'logic' (IEEE 1800-2017 35.5.5)
%Error: t/t_dpi_result_type_bad.v:147:46: DPI function may not return a 4-state type other than a single 'logic' (IEEE 1800-2023 35.5.5)
147 | import "DPI-C" function union_4_state_8 i_union_4_state_8();
| ^~~~~~~~~~~~~~~~~
%Error: t/t_dpi_result_type_bad.v:148:46: DPI function may not return a 4-state type other than a single 'logic' (IEEE 1800-2017 35.5.5)
%Error: t/t_dpi_result_type_bad.v:148:46: DPI function may not return a 4-state type other than a single 'logic' (IEEE 1800-2023 35.5.5)
148 | import "DPI-C" function union_4_state_9 i_union_4_state_9();
| ^~~~~~~~~~~~~~~~~
%Error: t/t_dpi_result_type_bad.v:149:46: DPI function may not return a 4-state type other than a single 'logic' (IEEE 1800-2017 35.5.5)
%Error: t/t_dpi_result_type_bad.v:149:46: DPI function may not return a 4-state type other than a single 'logic' (IEEE 1800-2023 35.5.5)
149 | import "DPI-C" function union_4_state_16 i_union_4_state_16();
| ^~~~~~~~~~~~~~~~~~
%Error: t/t_dpi_result_type_bad.v:150:46: DPI function may not return a 4-state type other than a single 'logic' (IEEE 1800-2017 35.5.5)
%Error: t/t_dpi_result_type_bad.v:150:46: DPI function may not return a 4-state type other than a single 'logic' (IEEE 1800-2023 35.5.5)
150 | import "DPI-C" function union_4_state_17 i_union_4_state_17();
| ^~~~~~~~~~~~~~~~~~
%Error: t/t_dpi_result_type_bad.v:151:46: DPI function may not return a 4-state type other than a single 'logic' (IEEE 1800-2017 35.5.5)
%Error: t/t_dpi_result_type_bad.v:151:46: DPI function may not return a 4-state type other than a single 'logic' (IEEE 1800-2023 35.5.5)
151 | import "DPI-C" function union_4_state_32 i_union_4_state_32();
| ^~~~~~~~~~~~~~~~~~
%Error: t/t_dpi_result_type_bad.v:152:46: DPI function may not return a 4-state type other than a single 'logic' (IEEE 1800-2017 35.5.5)
%Error: t/t_dpi_result_type_bad.v:152:46: DPI function may not return a 4-state type other than a single 'logic' (IEEE 1800-2023 35.5.5)
152 | import "DPI-C" function union_4_state_33 i_union_4_state_33();
| ^~~~~~~~~~~~~~~~~~
%Error: t/t_dpi_result_type_bad.v:153:46: DPI function may not return a 4-state type other than a single 'logic' (IEEE 1800-2017 35.5.5)
%Error: t/t_dpi_result_type_bad.v:153:46: DPI function may not return a 4-state type other than a single 'logic' (IEEE 1800-2023 35.5.5)
153 | import "DPI-C" function union_4_state_64 i_union_4_state_64();
| ^~~~~~~~~~~~~~~~~~
%Error: t/t_dpi_result_type_bad.v:154:46: DPI function may not return a 4-state type other than a single 'logic' (IEEE 1800-2017 35.5.5)
%Error: t/t_dpi_result_type_bad.v:154:46: DPI function may not return a 4-state type other than a single 'logic' (IEEE 1800-2023 35.5.5)
154 | import "DPI-C" function union_4_state_65 i_union_4_state_65();
| ^~~~~~~~~~~~~~~~~~
%Error: t/t_dpi_result_type_bad.v:155:46: DPI function may not return a 4-state type other than a single 'logic' (IEEE 1800-2017 35.5.5)
%Error: t/t_dpi_result_type_bad.v:155:46: DPI function may not return a 4-state type other than a single 'logic' (IEEE 1800-2023 35.5.5)
155 | import "DPI-C" function union_4_state_128 i_union_4_state_128();
| ^~~~~~~~~~~~~~~~~~~
%Error: t/t_dpi_result_type_bad.v:245:25: DPI function may not return a > 32 bits wide type other than basic types.
@ -261,139 +261,139 @@
: ... Suggest make it an output argument instead?
266 | function union_2_state_128 e_union_2_state_128(); return 0; endfunction
| ^~~~~~~~~~~~~~~~~~~
%Error: t/t_dpi_result_type_bad.v:269:21: DPI function may not return a 4-state type other than a single 'logic' (IEEE 1800-2017 35.5.5)
%Error: t/t_dpi_result_type_bad.v:269:21: DPI function may not return a 4-state type other than a single 'logic' (IEEE 1800-2023 35.5.5)
269 | function integer e_integer(); return 0; endfunction
| ^~~~~~~~~
%Error: t/t_dpi_result_type_bad.v:272:27: DPI function may not return a 4-state type other than a single 'logic' (IEEE 1800-2017 35.5.5)
%Error: t/t_dpi_result_type_bad.v:272:27: DPI function may not return a 4-state type other than a single 'logic' (IEEE 1800-2023 35.5.5)
272 | function logic [ 0:0] e_array_4_state_1(); return 0; endfunction
| ^~~~~~~~~~~~~~~~~
%Error: t/t_dpi_result_type_bad.v:273:27: DPI function may not return a 4-state type other than a single 'logic' (IEEE 1800-2017 35.5.5)
%Error: t/t_dpi_result_type_bad.v:273:27: DPI function may not return a 4-state type other than a single 'logic' (IEEE 1800-2023 35.5.5)
273 | function logic [ 1:0] e_array_4_state_2(); return 0; endfunction
| ^~~~~~~~~~~~~~~~~
%Error: t/t_dpi_result_type_bad.v:274:27: DPI function may not return a 4-state type other than a single 'logic' (IEEE 1800-2017 35.5.5)
%Error: t/t_dpi_result_type_bad.v:274:27: DPI function may not return a 4-state type other than a single 'logic' (IEEE 1800-2023 35.5.5)
274 | function logic [ 7:0] e_array_4_state_8(); return 0; endfunction
| ^~~~~~~~~~~~~~~~~
%Error: t/t_dpi_result_type_bad.v:275:27: DPI function may not return a 4-state type other than a single 'logic' (IEEE 1800-2017 35.5.5)
%Error: t/t_dpi_result_type_bad.v:275:27: DPI function may not return a 4-state type other than a single 'logic' (IEEE 1800-2023 35.5.5)
275 | function logic [ 8:0] e_array_4_state_9(); return 0; endfunction
| ^~~~~~~~~~~~~~~~~
%Error: t/t_dpi_result_type_bad.v:276:27: DPI function may not return a 4-state type other than a single 'logic' (IEEE 1800-2017 35.5.5)
%Error: t/t_dpi_result_type_bad.v:276:27: DPI function may not return a 4-state type other than a single 'logic' (IEEE 1800-2023 35.5.5)
276 | function logic [ 15:0] e_array_4_state_16(); return 0; endfunction
| ^~~~~~~~~~~~~~~~~~
%Error: t/t_dpi_result_type_bad.v:277:27: DPI function may not return a 4-state type other than a single 'logic' (IEEE 1800-2017 35.5.5)
%Error: t/t_dpi_result_type_bad.v:277:27: DPI function may not return a 4-state type other than a single 'logic' (IEEE 1800-2023 35.5.5)
277 | function logic [ 16:0] e_array_4_state_17(); return 0; endfunction
| ^~~~~~~~~~~~~~~~~~
%Error: t/t_dpi_result_type_bad.v:278:27: DPI function may not return a 4-state type other than a single 'logic' (IEEE 1800-2017 35.5.5)
%Error: t/t_dpi_result_type_bad.v:278:27: DPI function may not return a 4-state type other than a single 'logic' (IEEE 1800-2023 35.5.5)
278 | function logic [ 31:0] e_array_4_state_32(); return 0; endfunction
| ^~~~~~~~~~~~~~~~~~
%Error: t/t_dpi_result_type_bad.v:279:27: DPI function may not return a 4-state type other than a single 'logic' (IEEE 1800-2017 35.5.5)
%Error: t/t_dpi_result_type_bad.v:279:27: DPI function may not return a 4-state type other than a single 'logic' (IEEE 1800-2023 35.5.5)
279 | function logic [ 32:0] e_array_4_state_33(); return 0; endfunction
| ^~~~~~~~~~~~~~~~~~
%Error: t/t_dpi_result_type_bad.v:280:27: DPI function may not return a 4-state type other than a single 'logic' (IEEE 1800-2017 35.5.5)
%Error: t/t_dpi_result_type_bad.v:280:27: DPI function may not return a 4-state type other than a single 'logic' (IEEE 1800-2023 35.5.5)
280 | function logic [ 63:0] e_array_4_state_64(); return 0; endfunction
| ^~~~~~~~~~~~~~~~~~
%Error: t/t_dpi_result_type_bad.v:281:27: DPI function may not return a 4-state type other than a single 'logic' (IEEE 1800-2017 35.5.5)
%Error: t/t_dpi_result_type_bad.v:281:27: DPI function may not return a 4-state type other than a single 'logic' (IEEE 1800-2023 35.5.5)
281 | function logic [ 64:0] e_array_4_state_65(); return 0; endfunction
| ^~~~~~~~~~~~~~~~~~
%Error: t/t_dpi_result_type_bad.v:282:27: DPI function may not return a 4-state type other than a single 'logic' (IEEE 1800-2017 35.5.5)
%Error: t/t_dpi_result_type_bad.v:282:27: DPI function may not return a 4-state type other than a single 'logic' (IEEE 1800-2023 35.5.5)
282 | function logic [127:0] e_array_4_state_128(); return 0; endfunction
| ^~~~~~~~~~~~~~~~~~~
%Error: t/t_dpi_result_type_bad.v:285:33: DPI function may not return a 4-state type other than a single 'logic' (IEEE 1800-2017 35.5.5)
%Error: t/t_dpi_result_type_bad.v:285:33: DPI function may not return a 4-state type other than a single 'logic' (IEEE 1800-2023 35.5.5)
285 | function array_4_state_1_t e_array_4_state_1_t(); return 0; endfunction
| ^~~~~~~~~~~~~~~~~~~
%Error: t/t_dpi_result_type_bad.v:286:33: DPI function may not return a 4-state type other than a single 'logic' (IEEE 1800-2017 35.5.5)
%Error: t/t_dpi_result_type_bad.v:286:33: DPI function may not return a 4-state type other than a single 'logic' (IEEE 1800-2023 35.5.5)
286 | function array_4_state_2_t e_array_4_state_2_t(); return 0; endfunction
| ^~~~~~~~~~~~~~~~~~~
%Error: t/t_dpi_result_type_bad.v:287:33: DPI function may not return a 4-state type other than a single 'logic' (IEEE 1800-2017 35.5.5)
%Error: t/t_dpi_result_type_bad.v:287:33: DPI function may not return a 4-state type other than a single 'logic' (IEEE 1800-2023 35.5.5)
287 | function array_4_state_8_t e_array_4_state_8_t(); return 0; endfunction
| ^~~~~~~~~~~~~~~~~~~
%Error: t/t_dpi_result_type_bad.v:288:33: DPI function may not return a 4-state type other than a single 'logic' (IEEE 1800-2017 35.5.5)
%Error: t/t_dpi_result_type_bad.v:288:33: DPI function may not return a 4-state type other than a single 'logic' (IEEE 1800-2023 35.5.5)
288 | function array_4_state_9_t e_array_4_state_9_t(); return 0; endfunction
| ^~~~~~~~~~~~~~~~~~~
%Error: t/t_dpi_result_type_bad.v:289:33: DPI function may not return a 4-state type other than a single 'logic' (IEEE 1800-2017 35.5.5)
%Error: t/t_dpi_result_type_bad.v:289:33: DPI function may not return a 4-state type other than a single 'logic' (IEEE 1800-2023 35.5.5)
289 | function array_4_state_16_t e_array_4_state_16_t(); return 0; endfunction
| ^~~~~~~~~~~~~~~~~~~~
%Error: t/t_dpi_result_type_bad.v:290:33: DPI function may not return a 4-state type other than a single 'logic' (IEEE 1800-2017 35.5.5)
%Error: t/t_dpi_result_type_bad.v:290:33: DPI function may not return a 4-state type other than a single 'logic' (IEEE 1800-2023 35.5.5)
290 | function array_4_state_17_t e_array_4_state_17_t(); return 0; endfunction
| ^~~~~~~~~~~~~~~~~~~~
%Error: t/t_dpi_result_type_bad.v:291:33: DPI function may not return a 4-state type other than a single 'logic' (IEEE 1800-2017 35.5.5)
%Error: t/t_dpi_result_type_bad.v:291:33: DPI function may not return a 4-state type other than a single 'logic' (IEEE 1800-2023 35.5.5)
291 | function array_4_state_32_t e_array_4_state_32_t(); return 0; endfunction
| ^~~~~~~~~~~~~~~~~~~~
%Error: t/t_dpi_result_type_bad.v:292:33: DPI function may not return a 4-state type other than a single 'logic' (IEEE 1800-2017 35.5.5)
%Error: t/t_dpi_result_type_bad.v:292:33: DPI function may not return a 4-state type other than a single 'logic' (IEEE 1800-2023 35.5.5)
292 | function array_4_state_33_t e_array_4_state_33_t(); return 0; endfunction
| ^~~~~~~~~~~~~~~~~~~~
%Error: t/t_dpi_result_type_bad.v:293:33: DPI function may not return a 4-state type other than a single 'logic' (IEEE 1800-2017 35.5.5)
%Error: t/t_dpi_result_type_bad.v:293:33: DPI function may not return a 4-state type other than a single 'logic' (IEEE 1800-2023 35.5.5)
293 | function array_4_state_64_t e_array_4_state_64_t(); return 0; endfunction
| ^~~~~~~~~~~~~~~~~~~~
%Error: t/t_dpi_result_type_bad.v:294:33: DPI function may not return a 4-state type other than a single 'logic' (IEEE 1800-2017 35.5.5)
%Error: t/t_dpi_result_type_bad.v:294:33: DPI function may not return a 4-state type other than a single 'logic' (IEEE 1800-2023 35.5.5)
294 | function array_4_state_65_t e_array_4_state_65_t(); return 0; endfunction
| ^~~~~~~~~~~~~~~~~~~~
%Error: t/t_dpi_result_type_bad.v:295:33: DPI function may not return a 4-state type other than a single 'logic' (IEEE 1800-2017 35.5.5)
%Error: t/t_dpi_result_type_bad.v:295:33: DPI function may not return a 4-state type other than a single 'logic' (IEEE 1800-2023 35.5.5)
295 | function array_4_state_128_t e_array_4_state_128_t(); return 0; endfunction
| ^~~~~~~~~~~~~~~~~~~~~
%Error: t/t_dpi_result_type_bad.v:298:32: DPI function may not return a 4-state type other than a single 'logic' (IEEE 1800-2017 35.5.5)
%Error: t/t_dpi_result_type_bad.v:298:32: DPI function may not return a 4-state type other than a single 'logic' (IEEE 1800-2023 35.5.5)
298 | function struct_4_state_1 e_struct_4_state_1(); return 0; endfunction
| ^~~~~~~~~~~~~~~~~~
%Error: t/t_dpi_result_type_bad.v:299:32: DPI function may not return a 4-state type other than a single 'logic' (IEEE 1800-2017 35.5.5)
%Error: t/t_dpi_result_type_bad.v:299:32: DPI function may not return a 4-state type other than a single 'logic' (IEEE 1800-2023 35.5.5)
299 | function struct_4_state_2 e_struct_4_state_2(); return 0; endfunction
| ^~~~~~~~~~~~~~~~~~
%Error: t/t_dpi_result_type_bad.v:300:32: DPI function may not return a 4-state type other than a single 'logic' (IEEE 1800-2017 35.5.5)
%Error: t/t_dpi_result_type_bad.v:300:32: DPI function may not return a 4-state type other than a single 'logic' (IEEE 1800-2023 35.5.5)
300 | function struct_4_state_8 e_struct_4_state_8(); return 0; endfunction
| ^~~~~~~~~~~~~~~~~~
%Error: t/t_dpi_result_type_bad.v:301:32: DPI function may not return a 4-state type other than a single 'logic' (IEEE 1800-2017 35.5.5)
%Error: t/t_dpi_result_type_bad.v:301:32: DPI function may not return a 4-state type other than a single 'logic' (IEEE 1800-2023 35.5.5)
301 | function struct_4_state_9 e_struct_4_state_9(); return 0; endfunction
| ^~~~~~~~~~~~~~~~~~
%Error: t/t_dpi_result_type_bad.v:302:32: DPI function may not return a 4-state type other than a single 'logic' (IEEE 1800-2017 35.5.5)
%Error: t/t_dpi_result_type_bad.v:302:32: DPI function may not return a 4-state type other than a single 'logic' (IEEE 1800-2023 35.5.5)
302 | function struct_4_state_16 e_struct_4_state_16(); return 0; endfunction
| ^~~~~~~~~~~~~~~~~~~
%Error: t/t_dpi_result_type_bad.v:303:32: DPI function may not return a 4-state type other than a single 'logic' (IEEE 1800-2017 35.5.5)
%Error: t/t_dpi_result_type_bad.v:303:32: DPI function may not return a 4-state type other than a single 'logic' (IEEE 1800-2023 35.5.5)
303 | function struct_4_state_17 e_struct_4_state_17(); return 0; endfunction
| ^~~~~~~~~~~~~~~~~~~
%Error: t/t_dpi_result_type_bad.v:304:32: DPI function may not return a 4-state type other than a single 'logic' (IEEE 1800-2017 35.5.5)
%Error: t/t_dpi_result_type_bad.v:304:32: DPI function may not return a 4-state type other than a single 'logic' (IEEE 1800-2023 35.5.5)
304 | function struct_4_state_32 e_struct_4_state_32(); return 0; endfunction
| ^~~~~~~~~~~~~~~~~~~
%Error: t/t_dpi_result_type_bad.v:305:32: DPI function may not return a 4-state type other than a single 'logic' (IEEE 1800-2017 35.5.5)
%Error: t/t_dpi_result_type_bad.v:305:32: DPI function may not return a 4-state type other than a single 'logic' (IEEE 1800-2023 35.5.5)
305 | function struct_4_state_33 e_struct_4_state_33(); return 0; endfunction
| ^~~~~~~~~~~~~~~~~~~
%Error: t/t_dpi_result_type_bad.v:306:32: DPI function may not return a 4-state type other than a single 'logic' (IEEE 1800-2017 35.5.5)
%Error: t/t_dpi_result_type_bad.v:306:32: DPI function may not return a 4-state type other than a single 'logic' (IEEE 1800-2023 35.5.5)
306 | function struct_4_state_64 e_struct_4_state_64(); return 0; endfunction
| ^~~~~~~~~~~~~~~~~~~
%Error: t/t_dpi_result_type_bad.v:307:32: DPI function may not return a 4-state type other than a single 'logic' (IEEE 1800-2017 35.5.5)
%Error: t/t_dpi_result_type_bad.v:307:32: DPI function may not return a 4-state type other than a single 'logic' (IEEE 1800-2023 35.5.5)
307 | function struct_4_state_65 e_struct_4_state_65(); return 0; endfunction
| ^~~~~~~~~~~~~~~~~~~
%Error: t/t_dpi_result_type_bad.v:308:32: DPI function may not return a 4-state type other than a single 'logic' (IEEE 1800-2017 35.5.5)
%Error: t/t_dpi_result_type_bad.v:308:32: DPI function may not return a 4-state type other than a single 'logic' (IEEE 1800-2023 35.5.5)
308 | function struct_4_state_128 e_struct_4_state_128(); return 0; endfunction
| ^~~~~~~~~~~~~~~~~~~~
%Error: t/t_dpi_result_type_bad.v:311:31: DPI function may not return a 4-state type other than a single 'logic' (IEEE 1800-2017 35.5.5)
%Error: t/t_dpi_result_type_bad.v:311:31: DPI function may not return a 4-state type other than a single 'logic' (IEEE 1800-2023 35.5.5)
311 | function union_4_state_1 e_union_4_state_1(); return 0; endfunction
| ^~~~~~~~~~~~~~~~~
%Error: t/t_dpi_result_type_bad.v:312:31: DPI function may not return a 4-state type other than a single 'logic' (IEEE 1800-2017 35.5.5)
%Error: t/t_dpi_result_type_bad.v:312:31: DPI function may not return a 4-state type other than a single 'logic' (IEEE 1800-2023 35.5.5)
312 | function union_4_state_2 e_union_4_state_2(); return 0; endfunction
| ^~~~~~~~~~~~~~~~~
%Error: t/t_dpi_result_type_bad.v:313:31: DPI function may not return a 4-state type other than a single 'logic' (IEEE 1800-2017 35.5.5)
%Error: t/t_dpi_result_type_bad.v:313:31: DPI function may not return a 4-state type other than a single 'logic' (IEEE 1800-2023 35.5.5)
313 | function union_4_state_8 e_union_4_state_8(); return 0; endfunction
| ^~~~~~~~~~~~~~~~~
%Error: t/t_dpi_result_type_bad.v:314:31: DPI function may not return a 4-state type other than a single 'logic' (IEEE 1800-2017 35.5.5)
%Error: t/t_dpi_result_type_bad.v:314:31: DPI function may not return a 4-state type other than a single 'logic' (IEEE 1800-2023 35.5.5)
314 | function union_4_state_9 e_union_4_state_9(); return 0; endfunction
| ^~~~~~~~~~~~~~~~~
%Error: t/t_dpi_result_type_bad.v:315:31: DPI function may not return a 4-state type other than a single 'logic' (IEEE 1800-2017 35.5.5)
%Error: t/t_dpi_result_type_bad.v:315:31: DPI function may not return a 4-state type other than a single 'logic' (IEEE 1800-2023 35.5.5)
315 | function union_4_state_16 e_union_4_state_16(); return 0; endfunction
| ^~~~~~~~~~~~~~~~~~
%Error: t/t_dpi_result_type_bad.v:316:31: DPI function may not return a 4-state type other than a single 'logic' (IEEE 1800-2017 35.5.5)
%Error: t/t_dpi_result_type_bad.v:316:31: DPI function may not return a 4-state type other than a single 'logic' (IEEE 1800-2023 35.5.5)
316 | function union_4_state_17 e_union_4_state_17(); return 0; endfunction
| ^~~~~~~~~~~~~~~~~~
%Error: t/t_dpi_result_type_bad.v:317:31: DPI function may not return a 4-state type other than a single 'logic' (IEEE 1800-2017 35.5.5)
%Error: t/t_dpi_result_type_bad.v:317:31: DPI function may not return a 4-state type other than a single 'logic' (IEEE 1800-2023 35.5.5)
317 | function union_4_state_32 e_union_4_state_32(); return 0; endfunction
| ^~~~~~~~~~~~~~~~~~
%Error: t/t_dpi_result_type_bad.v:318:31: DPI function may not return a 4-state type other than a single 'logic' (IEEE 1800-2017 35.5.5)
%Error: t/t_dpi_result_type_bad.v:318:31: DPI function may not return a 4-state type other than a single 'logic' (IEEE 1800-2023 35.5.5)
318 | function union_4_state_33 e_union_4_state_33(); return 0; endfunction
| ^~~~~~~~~~~~~~~~~~
%Error: t/t_dpi_result_type_bad.v:319:31: DPI function may not return a 4-state type other than a single 'logic' (IEEE 1800-2017 35.5.5)
%Error: t/t_dpi_result_type_bad.v:319:31: DPI function may not return a 4-state type other than a single 'logic' (IEEE 1800-2023 35.5.5)
319 | function union_4_state_64 e_union_4_state_64(); return 0; endfunction
| ^~~~~~~~~~~~~~~~~~
%Error: t/t_dpi_result_type_bad.v:320:31: DPI function may not return a 4-state type other than a single 'logic' (IEEE 1800-2017 35.5.5)
%Error: t/t_dpi_result_type_bad.v:320:31: DPI function may not return a 4-state type other than a single 'logic' (IEEE 1800-2023 35.5.5)
320 | function union_4_state_65 e_union_4_state_65(); return 0; endfunction
| ^~~~~~~~~~~~~~~~~~
%Error: t/t_dpi_result_type_bad.v:321:31: DPI function may not return a 4-state type other than a single 'logic' (IEEE 1800-2017 35.5.5)
%Error: t/t_dpi_result_type_bad.v:321:31: DPI function may not return a 4-state type other than a single 'logic' (IEEE 1800-2023 35.5.5)
321 | function union_4_state_128 e_union_4_state_128(); return 0; endfunction
| ^~~~~~~~~~~~~~~~~~~
%Error: Exiting due to

View File

@ -1,4 +1,4 @@
%Error: t/t_enum_bad_value.v:10:19: Enum value exceeds width of enum type (IEEE 1800-2017 6.19)
%Error: t/t_enum_bad_value.v:10:19: Enum value exceeds width of enum type (IEEE 1800-2023 6.19)
: ... note: In instance 't'
10 | VALUE_BAD = 8
| ^

View File

@ -1,4 +1,4 @@
%Error: t/t_enum_bad_wrap.v:11:19: Enum value illegally wrapped around (IEEE 1800-2017 6.19)
%Error: t/t_enum_bad_wrap.v:11:19: Enum value illegally wrapped around (IEEE 1800-2023 6.19)
: ... note: In instance 't'
11 | WRAPPED
| ^~~~~~~

View File

@ -1,4 +1,4 @@
%Error-ENUMVALUE: t/t_enum_enumvalue_struct_bad.v:21:33: Implicit conversion to enum 'MEMBERDTYPE 'a'' from 'logic[31:0]' (IEEE 1800-2017 6.19.3)
%Error-ENUMVALUE: t/t_enum_enumvalue_struct_bad.v:21:33: Implicit conversion to enum 'MEMBERDTYPE 'a'' from 'logic[31:0]' (IEEE 1800-2023 6.19.3)
: ... note: In instance 't'
: ... Suggest use enum's mnemonic, or static cast
21 | localparam foo_t FOO0 = '{a: 0, b: 1'b1, u: 1'b1};

View File

@ -1,15 +1,15 @@
%Error-ENUMVALUE: t/t_enum_type_bad.v:28:11: Implicit conversion to enum 't.e_t' from 'logic[31:0]' (IEEE 1800-2017 6.19.3)
%Error-ENUMVALUE: t/t_enum_type_bad.v:28:11: Implicit conversion to enum 't.e_t' from 'logic[31:0]' (IEEE 1800-2023 6.19.3)
: ... note: In instance 't'
: ... Suggest use enum's mnemonic, or static cast
28 | e = 1;
| ^
... For error description see https://verilator.org/warn/ENUMVALUE?v=latest
%Error-ENUMVALUE: t/t_enum_type_bad.v:29:11: Implicit conversion to enum 't.o_t' from 't.e_t' (IEEE 1800-2017 6.19.3)
%Error-ENUMVALUE: t/t_enum_type_bad.v:29:11: Implicit conversion to enum 't.o_t' from 't.e_t' (IEEE 1800-2023 6.19.3)
: ... note: In instance 't'
: ... Suggest use enum's mnemonic, or static cast
29 | o = e;
| ^
%Error-ENUMVALUE: t/t_enum_type_bad.v:35:15: Implicit conversion to enum 't.o_t' from 'ENUMDTYPE 't.e_t'' (IEEE 1800-2017 6.19.3)
%Error-ENUMVALUE: t/t_enum_type_bad.v:35:15: Implicit conversion to enum 't.o_t' from 'ENUMDTYPE 't.e_t'' (IEEE 1800-2023 6.19.3)
: ... note: In instance 't'
: ... Suggest use enum's mnemonic, or static cast
35 | o = str.m_e;

View File

@ -1,8 +1,8 @@
%Error: t/t_enum_x_bad.v:9:21: Enum value with X/Zs cannot be assigned to non-fourstate type (IEEE 1800-2017 6.19)
%Error: t/t_enum_x_bad.v:9:21: Enum value with X/Zs cannot be assigned to non-fourstate type (IEEE 1800-2023 6.19)
: ... note: In instance 't'
9 | enum bit [1:0] { BADX = 2'b1x } BAD1;
| ^~~~
%Error: t/t_enum_x_bad.v:12:23: Enum value that is unassigned cannot follow value with X/Zs (IEEE 1800-2017 6.19)
%Error: t/t_enum_x_bad.v:12:23: Enum value that is unassigned cannot follow value with X/Zs (IEEE 1800-2023 6.19)
: ... note: In instance 't'
12 | e1
| ^~

View File

@ -99,7 +99,7 @@ module t(/*AUTOARG*/
// are ever pointed to by an EVENTREF.
e4 = e3; // Old handle to e4
e3 = e2; // Same event, also triggers e2
// IEEE 1800-2017 15.5.5.1 says that this causes a merge, and the below
// IEEE 1800-2023 15.5.5.1 says that this causes a merge, and the below
// should also activate the "old e3". However we could not find any
// simulator that actually does this. Instead the "old e3" becomes
// unreachable (via old handle), but is reachable by "e4" as assigned

View File

@ -1,4 +1,4 @@
%Error: t/t_flag_structs_packed.v:14:19: Unpacked data type 'STRUCTDTYPE 'x.notpacked_t'' in packed struct/union (IEEE 1800-2017 7.2.1)
%Error: t/t_flag_structs_packed.v:14:19: Unpacked data type 'STRUCTDTYPE 'x.notpacked_t'' in packed struct/union (IEEE 1800-2023 7.2.1)
: ... note: In instance 'x'
14 | notpacked_t b;
| ^

View File

@ -1,4 +1,4 @@
%Error: t/t_foreach_bad.v:14:7: Syntax error; foreach missing bracketed loop variable (IEEE 1800-2017 12.7.3)
%Error: t/t_foreach_bad.v:14:7: Syntax error; foreach missing bracketed loop variable (IEEE 1800-2023 12.7.3)
14 | foreach (array);
| ^~~~~~~
%Error: t/t_foreach_bad.v:18:23: 'foreach' loop variable expects simple variable name

View File

@ -1,4 +1,4 @@
%Error: t/t_fork_func2_bad.v:10:7: Only fork .. join_none is legal in functions. (IEEE 1800-2017 13.4.4)
%Error: t/t_fork_func2_bad.v:10:7: Only fork .. join_none is legal in functions. (IEEE 1800-2023 13.4.4)
: ... note: In instance 't'
10 | fork
| ^~~~

View File

@ -1,4 +1,4 @@
%Error: t/t_fork_func_bad.v:11:10: Return isn't legal under fork (IEEE 1800-2017 9.2.3)
%Error: t/t_fork_func_bad.v:11:10: Return isn't legal under fork (IEEE 1800-2023 9.2.3)
11 | return 0;
| ^~~~~~
%Error: Exiting due to

View File

@ -1,4 +1,4 @@
%Warning-IGNOREDRETURN: t/t_func_void_bad.v:26:7: Ignoring return value of non-void function (IEEE 1800-2017 13.4.1)
%Warning-IGNOREDRETURN: t/t_func_void_bad.v:26:7: Ignoring return value of non-void function (IEEE 1800-2023 13.4.1)
26 | f1(20);
| ^~
... For warning description see https://verilator.org/warn/IGNOREDRETURN?v=latest

View File

@ -1,4 +1,4 @@
%Error: t/t_fuzz_genintf_bad.v:24:11: Mixing positional and .*/named instantiation connection (IEEE 1800-2017 23.3.2)
%Error: t/t_fuzz_genintf_bad.v:24:11: Mixing positional and .*/named instantiation connection (IEEE 1800-2023 23.3.2)
24 | j.e(0),
| ^
%Error: Exiting due to

View File

@ -1,16 +1,16 @@
%Error: t/t_fuzz_negwidth_bad.v:9:9: Unsupported: Width of number exceeds implementation limit: 1231232312312312'd1 (IEEE 1800-2017 6.9.1)
%Error: t/t_fuzz_negwidth_bad.v:9:9: Unsupported: Width of number exceeds implementation limit: 1231232312312312'd1 (IEEE 1800-2023 6.9.1)
9 | int c = 1231232312312312'd1;
| ^~~~~~~~~~~~~~~~~~~
%Error: t/t_fuzz_negwidth_bad.v:10:9: Syntax error: size cannot be provided with '0/'1/'x/'z: 12'1 (IEEE 1800-2017 5.7.1)
%Error: t/t_fuzz_negwidth_bad.v:10:9: Syntax error: size cannot be provided with '0/'1/'x/'z: 12'1 (IEEE 1800-2023 5.7.1)
10 | int e = 12'1;
| ^~~~
%Error: t/t_fuzz_negwidth_bad.v:11:9: Syntax error: size cannot be provided with '0/'1/'x/'z: 12'0 (IEEE 1800-2017 5.7.1)
%Error: t/t_fuzz_negwidth_bad.v:11:9: Syntax error: size cannot be provided with '0/'1/'x/'z: 12'0 (IEEE 1800-2023 5.7.1)
11 | int f = 12'0;
| ^~~~
%Error: t/t_fuzz_negwidth_bad.v:12:9: Syntax error: size cannot be provided with '0/'1/'x/'z: 12'z (IEEE 1800-2017 5.7.1)
%Error: t/t_fuzz_negwidth_bad.v:12:9: Syntax error: size cannot be provided with '0/'1/'x/'z: 12'z (IEEE 1800-2023 5.7.1)
12 | int g = 12'z;
| ^~~~
%Error: t/t_fuzz_negwidth_bad.v:13:9: Syntax error: size cannot be provided with '0/'1/'x/'z: 12'x (IEEE 1800-2017 5.7.1)
%Error: t/t_fuzz_negwidth_bad.v:13:9: Syntax error: size cannot be provided with '0/'1/'x/'z: 12'x (IEEE 1800-2023 5.7.1)
13 | int h = 12'x;
| ^~~~
%Error: Exiting due to

View File

@ -1,4 +1,4 @@
%Error: t/t_genvar_for_bad.v:23:10: Genvar not legal in non-generate for (IEEE 1800-2017 27.4): 't.i'
%Error: t/t_genvar_for_bad.v:23:10: Genvar not legal in non-generate for (IEEE 1800-2023 27.4): 't.i'
: ... Suggest move for loop upwards to generate-level scope.
23 | for (i=0; i<N; i=i+1) begin
| ^~~

View File

@ -1,10 +1,10 @@
%Error: t/t_implements_collision_bad.v:15:11: Class 'IclsBoth' implements 'Icls2' but missing inheritance conflict resolution for 'icfboth' (IEEE 1800-2017 8.26.6.2)
%Error: t/t_implements_collision_bad.v:15:11: Class 'IclsBoth' implements 'Icls2' but missing inheritance conflict resolution for 'icfboth' (IEEE 1800-2023 8.26.6.2)
15 | interface class IclsBoth extends Icls1, Icls2;
| ^~~~~
t/t_implements_collision_bad.v:12:30: ... Location of interface class's function
12 | pure virtual function int icfboth;
| ^~~~~~~
%Error: t/t_implements_collision_bad.v:19:1: Class 'Cls' implements 'IclsBoth' but is missing implementation for 'icfboth' (IEEE 1800-2017 8.26)
%Error: t/t_implements_collision_bad.v:19:1: Class 'Cls' implements 'IclsBoth' but is missing implementation for 'icfboth' (IEEE 1800-2023 8.26)
19 | class Cls implements IclsBoth;
| ^~~~~
t/t_implements_collision_bad.v:8:30: ... Location of interface class's function

View File

@ -1,7 +1,7 @@
%Error: t/t_implements_contents_bad.v:8:8: Interface class cannot contain non-parameter members (IEEE 1800-2017 8.26): 'badi'
%Error: t/t_implements_contents_bad.v:8:8: Interface class cannot contain non-parameter members (IEEE 1800-2023 8.26): 'badi'
8 | int badi;
| ^~~~
%Error: t/t_implements_contents_bad.v:9:9: Interface class functions must be pure virtual (IEEE 1800-2017 8.26): 'badtask'
%Error: t/t_implements_contents_bad.v:9:9: Interface class functions must be pure virtual (IEEE 1800-2023 8.26): 'badtask'
9 | task badtask;
| ^~~~~~~
%Error: Exiting due to

View File

@ -1,4 +1,4 @@
%Error: t/t_implements_missing_bad.v:12:1: Class 'Cls' implements 'Icls1' but is missing implementation for 'icf2' (IEEE 1800-2017 8.26)
%Error: t/t_implements_missing_bad.v:12:1: Class 'Cls' implements 'Icls1' but is missing implementation for 'icf2' (IEEE 1800-2023 8.26)
12 | class Cls implements Icls1;
| ^~~~~
t/t_implements_missing_bad.v:9:30: ... Location of interface class's function

View File

@ -1,4 +1,4 @@
%Error: t/t_implements_new_bad.v:13:11: Illegal to call 'new' using an abstract virtual class 'Icls' (IEEE 1800-2017 8.21)
%Error: t/t_implements_new_bad.v:13:11: Illegal to call 'new' using an abstract virtual class 'Icls' (IEEE 1800-2023 8.21)
: ... note: In instance 't'
13 | c = new;
| ^~~

View File

@ -1,4 +1,4 @@
%Error: t/t_inside_assoc_unsup.v:12:15: Inside operator not specified on associative arrays (IEEE 1800-2017 11.4.13)
%Error: t/t_inside_assoc_unsup.v:12:15: Inside operator not specified on associative arrays (IEEE 1800-2023 11.4.13)
: ... note: In instance 't'
12 | m = (10 inside {assoc});
| ^~~~~~

View File

@ -1,10 +1,10 @@
%Error: t/t_inst_2star_bad.v:12:17: Duplicate .* in an instance (IEEE 1800-2017 23.3.2)
%Error: t/t_inst_2star_bad.v:12:17: Duplicate .* in an instance (IEEE 1800-2023 23.3.2)
12 | sub sub (.*, .*);
| ^~
%Error: t/t_inst_2star_bad.v:14:13: Mixing positional and .*/named instantiation connection (IEEE 1800-2017 23.3.2)
%Error: t/t_inst_2star_bad.v:14:13: Mixing positional and .*/named instantiation connection (IEEE 1800-2023 23.3.2)
14 | sub sub (foo, .*);
| ^~~
%Error: t/t_inst_2star_bad.v:16:13: Mixing positional and .*/named instantiation connection (IEEE 1800-2017 23.3.2)
%Error: t/t_inst_2star_bad.v:16:13: Mixing positional and .*/named instantiation connection (IEEE 1800-2023 23.3.2)
16 | sub sub (foo, .bar);
| ^~~
%Error: Exiting due to

View File

@ -1,4 +1,4 @@
%Error: t/t_inst_array_bad.v:19:28: Input port connection 'onebit' as part of a module instance array requires 1 or 8 bits, but connection's VARREF 'onebitbad' generates 9 bits. (IEEE 1800-2017 23.3.3)
%Error: t/t_inst_array_bad.v:19:28: Input port connection 'onebit' as part of a module instance array requires 1 or 8 bits, but connection's VARREF 'onebitbad' generates 9 bits. (IEEE 1800-2023 23.3.3)
: ... note: In instance 't'
19 | sub sub [7:0] (allbits, onebitbad, bitout);
| ^~~~~~~~~

View File

@ -1,4 +1,4 @@
%Error: t/t_inst_misarray2_bad.v:10:17: Illegal input port connection 'i_data', mismatch between port which is not an array, and expression which is an array. (IEEE 1800-2017 7.6)
%Error: t/t_inst_misarray2_bad.v:10:17: Illegal input port connection 'i_data', mismatch between port which is not an array, and expression which is an array. (IEEE 1800-2023 7.6)
: ... note: In instance 't'
10 | .i_data(fft_oQ[6:0])
| ^~~~~~

View File

@ -1,4 +1,4 @@
%Error: t/t_inst_misarray_bad.v:17:23: Illegal input port connection 'foo', mismatch between port which is an array, and expression which is not an array. (IEEE 1800-2017 7.6)
%Error: t/t_inst_misarray_bad.v:17:23: Illegal input port connection 'foo', mismatch between port which is an array, and expression which is not an array. (IEEE 1800-2023 7.6)
: ... note: In instance 't'
17 | .foo(foo));
| ^~~

View File

@ -1,7 +1,7 @@
// DESCRIPTION: Verilator: Verilog Test module
//
// A test that a package import declaration can preceed a parameter port list
// in an interface declaration. See IEEE 1800-2017 25.3.
// in an interface declaration. See IEEE 1800-2023 25.3.
//
// This file ONLY is placed into the Public Domain, for any use,
// without warranty, 2013 by Jeremy Bennett.

View File

@ -6,7 +6,7 @@
module t(/*AUTOARG*/);
let RECURSE(a) = (a == 1) ? 1 : RECURSE(a - 1); // BAD no recursion per IEEE 1800-2017 11.12
let RECURSE(a) = (a == 1) ? 1 : RECURSE(a - 1); // BAD no recursion per IEEE 1800-2023 11.12
initial begin
if (RECURSE(1) != 1) $stop;

View File

@ -1,9 +1,9 @@
%Error-PROCASSWIRE: t/t_lint_always_comb_bad.v:29:9: Procedural assignment to wire, perhaps intended var (IEEE 1800-2017 6.5): 'temp1'
%Error-PROCASSWIRE: t/t_lint_always_comb_bad.v:29:9: Procedural assignment to wire, perhaps intended var (IEEE 1800-2023 6.5): 'temp1'
: ... note: In instance 't'
29 | temp1 = 'h0;
| ^~~~~
... For error description see https://verilator.org/warn/PROCASSWIRE?v=latest
%Error-PROCASSWIRE: t/t_lint_always_comb_bad.v:31:9: Procedural assignment to wire, perhaps intended var (IEEE 1800-2017 6.5): 'temp1'
%Error-PROCASSWIRE: t/t_lint_always_comb_bad.v:31:9: Procedural assignment to wire, perhaps intended var (IEEE 1800-2023 6.5): 'temp1'
: ... note: In instance 't'
31 | temp1 = (temp1_d1r - 'h1);
| ^~~~~
@ -12,7 +12,7 @@
32 | mid = (temp1_d1r == 'h0);
| ^~~
... Use "/* verilator lint_off ALWCOMBORDER */" and lint_on around source to disable this message.
%Error-PROCASSWIRE: t/t_lint_always_comb_bad.v:46:7: Procedural assignment to wire, perhaps intended var (IEEE 1800-2017 6.5): 'temp1_d1r'
%Error-PROCASSWIRE: t/t_lint_always_comb_bad.v:46:7: Procedural assignment to wire, perhaps intended var (IEEE 1800-2023 6.5): 'temp1_d1r'
: ... note: In instance 't'
46 | temp1_d1r <= temp1;
| ^~~~~~~~~

View File

@ -1,4 +1,4 @@
%Warning-MULTIDRIVEN: t/t_lint_always_comb_multidriven_bad.v:26:16: Variable written to in always_comb also written by other process (IEEE 1800-2017 9.2.2.2): 'out1'
%Warning-MULTIDRIVEN: t/t_lint_always_comb_multidriven_bad.v:26:16: Variable written to in always_comb also written by other process (IEEE 1800-2023 9.2.2.2): 'out1'
: ... note: In instance 't'
t/t_lint_always_comb_multidriven_bad.v:26:16:
26 | always_comb out1 = d;
@ -8,7 +8,7 @@
| ^~~~
... For warning description see https://verilator.org/warn/MULTIDRIVEN?v=latest
... Use "/* verilator lint_off MULTIDRIVEN */" and lint_on around source to disable this message.
%Warning-MULTIDRIVEN: t/t_lint_always_comb_multidriven_bad.v:29:16: Variable written to in always_comb also written by other process (IEEE 1800-2017 9.2.2.2): 'out2'
%Warning-MULTIDRIVEN: t/t_lint_always_comb_multidriven_bad.v:29:16: Variable written to in always_comb also written by other process (IEEE 1800-2023 9.2.2.2): 'out2'
: ... note: In instance 't'
t/t_lint_always_comb_multidriven_bad.v:29:16:
29 | always_comb out2 = 1'b0;
@ -16,7 +16,7 @@
t/t_lint_always_comb_multidriven_bad.v:28:11: ... Location of other write
28 | assign out2 = d;
| ^~~~
%Warning-MULTIDRIVEN: t/t_lint_always_comb_multidriven_bad.v:32:11: Variable also written to in always_comb (IEEE 1800-2017 9.2.2.2): 'out3'
%Warning-MULTIDRIVEN: t/t_lint_always_comb_multidriven_bad.v:32:11: Variable also written to in always_comb (IEEE 1800-2023 9.2.2.2): 'out3'
: ... note: In instance 't'
t/t_lint_always_comb_multidriven_bad.v:32:11:
32 | assign out3 = 1'b0;
@ -24,7 +24,7 @@
t/t_lint_always_comb_multidriven_bad.v:31:16: ... Location of always_comb write
31 | always_comb out3 = d;
| ^~~~
%Warning-MULTIDRIVEN: t/t_lint_always_comb_multidriven_bad.v:35:11: Variable also written to in always_comb (IEEE 1800-2017 9.2.2.2): 'out4'
%Warning-MULTIDRIVEN: t/t_lint_always_comb_multidriven_bad.v:35:11: Variable also written to in always_comb (IEEE 1800-2023 9.2.2.2): 'out4'
: ... note: In instance 't'
t/t_lint_always_comb_multidriven_bad.v:35:11:
35 | assign out4 = d;
@ -32,7 +32,7 @@
t/t_lint_always_comb_multidriven_bad.v:34:16: ... Location of always_comb write
34 | always_comb out4 = 1'b0;
| ^~~~
%Warning-MULTIDRIVEN: t/t_lint_always_comb_multidriven_bad.v:38:16: Variable written to in always_comb also written by other process (IEEE 1800-2017 9.2.2.2): 'out5'
%Warning-MULTIDRIVEN: t/t_lint_always_comb_multidriven_bad.v:38:16: Variable written to in always_comb also written by other process (IEEE 1800-2023 9.2.2.2): 'out5'
: ... note: In instance 't'
t/t_lint_always_comb_multidriven_bad.v:38:16:
38 | always_comb out5 = d;
@ -40,7 +40,7 @@
t/t_lint_always_comb_multidriven_bad.v:37:16: ... Location of other write
37 | always_comb out5 = 1'b0;
| ^~~~
%Warning-MULTIDRIVEN: t/t_lint_always_comb_multidriven_bad.v:41:16: Variable written to in always_comb also written by other process (IEEE 1800-2017 9.2.2.2): 'out6'
%Warning-MULTIDRIVEN: t/t_lint_always_comb_multidriven_bad.v:41:16: Variable written to in always_comb also written by other process (IEEE 1800-2023 9.2.2.2): 'out6'
: ... note: In instance 't'
t/t_lint_always_comb_multidriven_bad.v:41:16:
41 | always_comb out6 = 1'b0;

View File

@ -1,4 +1,4 @@
%Error: t/t_lint_comb_bad.v:14:4: Event control statements not legal under always_comb (IEEE 1800-2017 9.2.2.2.2)
%Error: t/t_lint_comb_bad.v:14:4: Event control statements not legal under always_comb (IEEE 1800-2023 9.2.2.2.2)
: ... Suggest use a normal 'always'
14 | always_comb @(*) begin
| ^~~~~~~~~~~

View File

@ -1,4 +1,4 @@
%Error: t/t_lint_const_func_dpi_bad.v:8:32: Constant function may not be DPI import (IEEE 1800-2017 13.4.3)
%Error: t/t_lint_const_func_dpi_bad.v:8:32: Constant function may not be DPI import (IEEE 1800-2023 13.4.3)
: ... note: In instance 't'
8 | import "DPI-C" function int dpiFunc();
| ^~~~~~~

View File

@ -1,4 +1,4 @@
%Error: t/t_lint_const_func_gen_bad.v:11:30: Constant function may not be declared under generate (IEEE 1800-2017 13.4.3)
%Error: t/t_lint_const_func_gen_bad.v:11:30: Constant function may not be declared under generate (IEEE 1800-2023 13.4.3)
: ... note: In instance 't'
11 | function automatic bit constFunc();
| ^~~~~~~~~

View File

@ -6,7 +6,7 @@
module t ();
if (1) begin: GenConstFunc
// IEEE 1800-2017 13.4.3, constant functions shall not be declared inside a
// IEEE 1800-2023 13.4.3, constant functions shall not be declared inside a
//generate block
function automatic bit constFunc();
constFunc = 1'b1;

View File

@ -1,4 +1,4 @@
%Warning-DEFPARAM: t/t_lint_defparam.v:10:19: defparam is deprecated (IEEE 1800-2017 C.4.1)
%Warning-DEFPARAM: t/t_lint_defparam.v:10:19: defparam is deprecated (IEEE 1800-2023 C.4.1)
: ... Suggest use instantiation with #(.P(...etc...))
10 | defparam sub.P = 2;
| ^

View File

@ -1,8 +1,8 @@
%Error: t/t_lint_edge_real_bad.v:19:22: Edge event control not legal on real type (IEEE 1800-2017 6.12.1)
%Error: t/t_lint_edge_real_bad.v:19:22: Edge event control not legal on real type (IEEE 1800-2023 6.12.1)
: ... note: In instance 't'
19 | always @ (posedge rbad) $stop;
| ^~~~
%Error: t/t_lint_edge_real_bad.v:20:22: Edge event control not legal on non-integral type (IEEE 1800-2017 9.4.2)
%Error: t/t_lint_edge_real_bad.v:20:22: Edge event control not legal on non-integral type (IEEE 1800-2023 9.4.2)
: ... note: In instance 't'
20 | always @ (posedge ebad) $stop;
| ^~~~

View File

@ -1,26 +1,26 @@
%Warning-GENUNNAMED: t/t_lint_genunnamed_bad.v:14:6: Unnamed generate block 'genblk2' (IEEE 1800-2017 27.6)
%Warning-GENUNNAMED: t/t_lint_genunnamed_bad.v:14:6: Unnamed generate block 'genblk2' (IEEE 1800-2023 27.6)
: ... Suggest assign a label with 'begin : gen_<label_name>'
14 | begin
| ^~~~~
... For warning description see https://verilator.org/warn/GENUNNAMED?v=latest
... Use "/* verilator lint_off GENUNNAMED */" and lint_on around source to disable this message.
%Warning-GENUNNAMED: t/t_lint_genunnamed_bad.v:18:6: Unnamed generate block 'genblk2' (IEEE 1800-2017 27.6)
%Warning-GENUNNAMED: t/t_lint_genunnamed_bad.v:18:6: Unnamed generate block 'genblk2' (IEEE 1800-2023 27.6)
: ... Suggest assign a label with 'begin : gen_<label_name>'
18 | begin
| ^~~~~
%Warning-GENUNNAMED: t/t_lint_genunnamed_bad.v:22:4: Unnamed generate block 'genblk3' (IEEE 1800-2017 27.6)
%Warning-GENUNNAMED: t/t_lint_genunnamed_bad.v:22:4: Unnamed generate block 'genblk3' (IEEE 1800-2023 27.6)
: ... Suggest assign a label with 'begin : gen_<label_name>'
22 | for (genvar v = 0; v < P; ++v) ;
| ^~~
%Warning-GENUNNAMED: t/t_lint_genunnamed_bad.v:24:4: Unnamed generate block 'genblk4' (IEEE 1800-2017 27.6)
%Warning-GENUNNAMED: t/t_lint_genunnamed_bad.v:24:4: Unnamed generate block 'genblk4' (IEEE 1800-2023 27.6)
: ... Suggest assign a label with 'begin : gen_<label_name>'
24 | for (genvar v = 0; v < P; ++v)
| ^~~
%Warning-GENUNNAMED: t/t_lint_genunnamed_bad.v:30:9: Unnamed generate block 'genblk5' (IEEE 1800-2017 27.6)
%Warning-GENUNNAMED: t/t_lint_genunnamed_bad.v:30:9: Unnamed generate block 'genblk5' (IEEE 1800-2023 27.6)
: ... Suggest assign a label with 'begin : gen_<label_name>'
30 | 1: initial begin end
| ^~~~~~~
%Warning-GENUNNAMED: t/t_lint_genunnamed_bad.v:31:9: Unnamed generate block 'genblk5' (IEEE 1800-2017 27.6)
%Warning-GENUNNAMED: t/t_lint_genunnamed_bad.v:31:9: Unnamed generate block 'genblk5' (IEEE 1800-2023 27.6)
: ... Suggest assign a label with 'begin : gen_<label_name>'
31 | 2: begin
| ^~~~~

View File

@ -1,4 +1,4 @@
%Error: t/t_lint_iface_array_topmodule_bad.v:8:24: Parameter without initial value is never given value (IEEE 1800-2017 6.20.1): 'DW'
%Error: t/t_lint_iface_array_topmodule_bad.v:8:24: Parameter without initial value is never given value (IEEE 1800-2023 6.20.1): 'DW'
: ... note: In instance 't'
8 | parameter integer DW
| ^~

View File

@ -1,4 +1,4 @@
%Error: t/t_lint_iface_topmodule_bad.v:8:23: Parameter without initial value is never given value (IEEE 1800-2017 6.20.1): 'DW'
%Error: t/t_lint_iface_topmodule_bad.v:8:23: Parameter without initial value is never given value (IEEE 1800-2023 6.20.1): 'DW'
: ... note: In instance 't'
8 | parameter integer DW
| ^~

View File

@ -1,4 +1,4 @@
%Error-PKGNODECL: t/t_lint_import_name2_bad.v:7:8: Package/class 'missing' not found, and needs to be predeclared (IEEE 1800-2017 26.3)
%Error-PKGNODECL: t/t_lint_import_name2_bad.v:7:8: Package/class 'missing' not found, and needs to be predeclared (IEEE 1800-2023 26.3)
7 | import missing::sigs;
| ^~~~~~~
... For error description see https://verilator.org/warn/PKGNODECL?v=latest

View File

@ -1,4 +1,4 @@
%Error-PKGNODECL: t/t_lint_pkg_colon_bad.v:7:17: Package/class 'mispkg' not found, and needs to be predeclared (IEEE 1800-2017 26.3)
%Error-PKGNODECL: t/t_lint_pkg_colon_bad.v:7:17: Package/class 'mispkg' not found, and needs to be predeclared (IEEE 1800-2023 26.3)
7 | module t (input mispkg::foo_t a);
| ^~~~~~
... For error description see https://verilator.org/warn/PKGNODECL?v=latest

Some files were not shown because too many files have changed in this diff Show More