Fix some missing E_UNSUPPORTED errors

This commit is contained in:
Wilson Snyder 2025-09-20 08:19:42 -04:00
parent e5e7e844c4
commit f970485e19
12 changed files with 35 additions and 30 deletions

View File

@ -315,8 +315,9 @@ class AssertVisitor final : public VNVisitor {
sentreep->unlinkFrBack();
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-2023 16.14.6)");
nodep->v3warn(E_UNSUPPORTED,
"Unsupported: Procedural concurrent assertion with"
" clocking event inside always (IEEE 1800-2023 16.14.6)");
}
}
//

View File

@ -651,7 +651,7 @@ void V3Control::addInline(FileLine* fl, const string& module, const string& ftas
V3ControlResolver::s().modules().at(module).setInline(on);
} else {
if (!on) {
fl->v3error("Unsupported: no_inline for tasks");
fl->v3warn(E_UNSUPPORTED, "Unsupported: no_inline for tasks");
} else {
V3ControlResolver::s().modules().at(module).ftasks().at(ftask).setNoInline(on);
}

View File

@ -408,7 +408,8 @@ class ForceReplaceVisitor final : public VNVisitor {
default:
if (!m_inLogic) return;
if (m_state.tryGetForceComponents(nodep) || m_state.getValVscps(nodep)) {
nodep->v3error(
nodep->v3warn(
E_UNSUPPORTED,
"Unsupported: Signals used via read-write reference cannot be forced");
}
break;

View File

@ -377,7 +377,7 @@ private:
}
const string index = AstNode::encodeNumber(constp->toSInt() + arrp->lo());
if (VN_IS(arrselp->fromp(), SliceSel))
arrselp->fromp()->v3error("Unsupported: interface slices");
arrselp->fromp()->v3warn(E_UNSUPPORTED, "Unsupported: interface slices");
const AstVarRef* const varrefp = VN_CAST(arrselp->fromp(), VarRef);
UASSERT_OBJ(varrefp, arrselp, "No interface varref under array");
AstVarXRef* const newp = new AstVarXRef{

View File

@ -269,9 +269,10 @@ public:
}
string unquoteString(FileLine* fileline, const std::string& text) VL_MT_DISABLED;
void checkDpiVer(FileLine* fileline, const string& str) {
if (str != "DPI-C" && !v3Global.opt.bboxSys()) {
fileline->v3error("Unsupported DPI type '" << str << "': Use 'DPI-C'");
}
if (str != "DPI-C" && !v3Global.opt.bboxSys())
fileline->v3warn(E_UNSUPPORTED, "Unsupported DPI type '"
<< str
<< "': Use 'DPI-C' (IEEE 1800-2023 35.5.4)");
}
// Given a list of clocking declarations, put them in clocking items
AstClockingItem* makeClockingItemList(FileLine* flp, const VDirection direction,

View File

@ -118,9 +118,10 @@ class PremitVisitor final : public VNVisitor {
UINFO(4, " ShiftFix " << nodep);
const AstConst* const shiftp = VN_CAST(nodep->rhsp(), Const);
if (shiftp && shiftp->num().mostSetBitP1() > 32) {
shiftp->v3error(
shiftp->v3warn(
E_UNSUPPORTED,
"Unsupported: Shifting of by over 32-bit number isn't supported."
<< " (This isn't a shift of 32 bits, but a shift of 2^32, or 4 billion!)\n");
<< " (This isn't a shift of 32 bits, but a shift of 2^32, or 4 billion!)\n");
}
if (nodep->widthMin() <= 64 // Else we'll use large operators which work right
// C operator's width must be < maximum shift which is

View File

@ -274,9 +274,9 @@ public:
const TristateVertex& vvertex = static_cast<TristateVertex&>(vtx);
if (vvertex.isTristate() && !vvertex.processed()) {
// Not v3errorSrc as no reason to stop the world
vvertex.nodep()->v3error("Unsupported tristate construct"
" (in graph; not converted): "
<< vvertex.nodep()->prettyTypeName());
vvertex.nodep()->v3warn(E_UNSUPPORTED, "Unsupported tristate construct"
" (in graph; not converted): "
<< vvertex.nodep()->prettyTypeName());
}
}
m_graph.clear();
@ -320,8 +320,9 @@ public:
TristateVertex* const vertexp = reinterpret_cast<TristateVertex*>(nodep->user4p());
if (!vertexp) {
// Not v3errorSrc as no reason to stop the world
nodep->v3error("Unsupported tristate construct (not in propagation graph): "
<< nodep->prettyTypeName());
nodep->v3warn(E_UNSUPPORTED,
"Unsupported tristate construct (not in propagation graph): "
<< nodep->prettyTypeName());
} else {
// We don't warn if no vertexp->isTristate() as the creation
// process makes midling nodes that don't have it set

View File

@ -1,10 +1,10 @@
%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'
%Error-UNSUPPORTED: 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);
| ^~~~~~
... See the manual at https://verilator.org/verilator_doc.html?v=latest for more assistance.
%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'
... For error description see https://verilator.org/warn/UNSUPPORTED?v=latest
%Error-UNSUPPORTED: 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);
| ^~~~~~
%Error: Exiting due to

View File

@ -1,5 +1,5 @@
%Error: t/t_dpi_type_bad.v:11:4: Unsupported DPI type 'DPI-BAD': Use 'DPI-C'
%Error-UNSUPPORTED: t/t_dpi_type_bad.v:11:4: Unsupported DPI type 'DPI-BAD': Use 'DPI-C' (IEEE 1800-2023 35.5.4)
11 | import "DPI-BAD" task dpix_twice;
| ^~~~~~
... See the manual at https://verilator.org/verilator_doc.html?v=latest for more assistance.
... For error description see https://verilator.org/warn/UNSUPPORTED?v=latest
%Error: Exiting due to

View File

@ -1,5 +1,5 @@
%Error: t/t_force_bad_rw.v:14:20: Unsupported: Signals used via read-write reference cannot be forced
%Error-UNSUPPORTED: t/t_force_bad_rw.v:14:20: Unsupported: Signals used via read-write reference cannot be forced
14 | foreach (ass[index]) begin
| ^~~~~
... See the manual at https://verilator.org/verilator_doc.html?v=latest for more assistance.
... For error description see https://verilator.org/warn/UNSUPPORTED?v=latest
%Error: Exiting due to

View File

@ -1,8 +1,8 @@
%Error: t/t_force_readwrite_unsup.v:25:18: Unsupported: Signals used via read-write reference cannot be forced
%Error-UNSUPPORTED: t/t_force_readwrite_unsup.v:25:18: Unsupported: Signals used via read-write reference cannot be forced
25 | cls.take_ref(a);
| ^
... See the manual at https://verilator.org/verilator_doc.html?v=latest for more assistance.
%Error: t/t_force_readwrite_unsup.v:26:18: Unsupported: Signals used via read-write reference cannot be forced
... For error description see https://verilator.org/warn/UNSUPPORTED?v=latest
%Error-UNSUPPORTED: t/t_force_readwrite_unsup.v:26:18: Unsupported: Signals used via read-write reference cannot be forced
26 | cls.take_ref(b);
| ^
%Error: Exiting due to

View File

@ -1,8 +1,8 @@
%Error: t/t_interface_ar3.v:16:36: Unsupported: interface slices
: ... note: In instance 't'
%Error-UNSUPPORTED: t/t_interface_ar3.v:16:36: Unsupported: interface slices
: ... note: In instance 't'
16 | sub sub01 [2] (.clk, .infc(iinst[0:1]));
| ^
... See the manual at https://verilator.org/verilator_doc.html?v=latest for more assistance.
... For error description see https://verilator.org/warn/UNSUPPORTED?v=latest
%Error: Internal Error: t/t_interface_ar3.v:16:36: ../V3Inst.cpp:#: No interface varref under array
: ... note: In instance 't'
16 | sub sub01 [2] (.clk, .infc(iinst[0:1]));