From 6de78d58faa8a5d800f0f38c6b53ec2f5e2b3352 Mon Sep 17 00:00:00 2001 From: Wilson Snyder Date: Tue, 9 Jun 2020 19:20:16 -0400 Subject: [PATCH] Add new UNSUPPORTED error code to replace most previous Unsupported: messages. --- Changes | 2 + bin/verilator | 8 ++ src/V3Active.cpp | 11 +- src/V3AssertPre.cpp | 5 +- src/V3AstNodes.cpp | 4 +- src/V3Clock.cpp | 10 +- src/V3Delayed.cpp | 7 +- src/V3EmitC.cpp | 42 ++++--- src/V3EmitCInlines.cpp | 3 +- src/V3EmitCMake.cpp | 5 +- src/V3EmitMk.cpp | 5 +- src/V3Error.h | 3 +- src/V3Expand.cpp | 4 +- src/V3Inst.cpp | 11 +- src/V3LinkCells.cpp | 13 +- src/V3LinkDot.cpp | 14 ++- src/V3LinkInc.cpp | 2 +- src/V3LinkJump.cpp | 2 +- src/V3LinkLevel.cpp | 5 +- src/V3LinkParse.cpp | 16 ++- src/V3LinkResolve.cpp | 19 +-- src/V3Options.cpp | 9 +- src/V3ParseGrammar.cpp | 4 +- src/V3ProtectLib.cpp | 8 +- src/V3Task.cpp | 26 ++-- src/V3Tristate.cpp | 66 +++++----- src/V3Unknown.cpp | 4 +- src/V3Unroll.cpp | 3 +- src/V3Width.cpp | 112 +++++++++-------- src/V3WidthSel.cpp | 6 +- src/verilog.l | 14 ++- src/verilog.y | 8 +- test_regress/t/t_alias2_unsup.out | 2 +- test_regress/t/t_alias_unsup.out | 2 +- test_regress/t/t_assoc_pattern_unsup.out | 4 +- test_regress/t/t_assoc_wildcard_unsup.out | 2 +- test_regress/t/t_castdyn.out | 8 +- test_regress/t/t_class_class.out | 2 +- test_regress/t/t_class_extends.out | 6 +- test_regress/t/t_class_extends_bad.out | 2 +- test_regress/t/t_class_member_bad.out | 2 +- test_regress/t/t_class_method_bad.out | 2 +- test_regress/t/t_class_name.out | 2 +- test_regress/t/t_class_param.out | 2 +- test_regress/t/t_class_static_order.out | 6 +- test_regress/t/t_class_typedef.out | 2 +- test_regress/t/t_class_unsup_bad.out | 20 +-- test_regress/t/t_class_vparam_unsup.out | 6 +- test_regress/t/t_event_control_unsup.out | 8 +- test_regress/t/t_event_copy.out | 8 +- test_regress/t/t_flag_main_sc_bad.out | 2 +- test_regress/t/t_for_comma_bad.out | 18 +-- test_regress/t/t_fork.out | 4 +- test_regress/t/t_func_bad.out | 4 +- test_regress/t/t_func_bad2.out | 4 +- test_regress/t/t_func_wide_out_bad.out | 4 +- test_regress/t/t_fuzz_always_bad.out | 2 +- test_regress/t/t_fuzz_genintf_bad.out | 4 +- test_regress/t/t_fuzz_triand_bad.out | 4 +- test_regress/t/t_gen_defparam_unsup_bad.out | 2 +- test_regress/t/t_increment_bad.out | 14 +-- test_regress/t/t_inst_recurse2_bad.out | 4 +- test_regress/t/t_inst_recurse_bad.out | 4 +- test_regress/t/t_interface_top_bad.out | 2 +- test_regress/t/t_lint_input_eq_bad.out | 2 +- test_regress/t/t_lint_rsvd_bad.out | 4 +- test_regress/t/t_math_countbits_bad.out | 2 +- test_regress/t/t_mod_interface_array3.out | 4 +- test_regress/t/t_param_in_func_bad.out | 2 +- test_regress/t/t_param_noval_bad.out | 4 +- test_regress/t/t_past_unsup_bad.out | 2 +- test_regress/t/t_prot_lib_inout_bad.out | 2 +- test_regress/t/t_prot_lib_unpacked_bad.out | 4 +- test_regress/t/t_protect_ids_bad.out | 4 +- test_regress/t/t_queue_unsup_bad.out | 48 ++++---- test_regress/t/t_randomize.out | 26 ++-- test_regress/t/t_savable_class_bad.out | 2 +- test_regress/t/t_sys_rand_seed.out | 4 +- test_regress/t/t_sys_readmem_assoc_bad.out | 4 +- test_regress/t/t_tri_compass_bad.out | 4 +- test_regress/t/t_tri_pull2_bad.out | 6 +- test_regress/t/t_tri_pull_bad.out | 6 +- test_regress/t/t_tri_pullvec_bad.out | 12 +- test_regress/t/t_udp.out | 2 +- test_regress/t/t_unpacked_concat_bad.out | 8 +- test_regress/t/t_vams_kwd_bad.out | 130 ++++++++++---------- test_regress/t/t_var_ref_bad3.out | 2 +- test_regress/t/t_var_static.out | 14 +-- test_regress/t/t_with_unsup.out | 20 +-- 89 files changed, 495 insertions(+), 432 deletions(-) diff --git a/Changes b/Changes index dbc280b00..a7e0728e5 100644 --- a/Changes +++ b/Changes @@ -5,6 +5,8 @@ The contributors that suggested a given feature are shown in []. Thanks! * Verilator 4.037 devel +**** Add new UNSUPPORTED error code to replace most previous Unsupported: messages. + **** With --bbox-unsup continue parsing on many (not all) UVM constructs. diff --git a/bin/verilator b/bin/verilator index b8d345107..54fbccabe 100755 --- a/bin/verilator +++ b/bin/verilator @@ -4829,6 +4829,14 @@ signed, for example "X < 0" will always be true when X is unsigned. Ignoring this warning will only suppress the lint check, it will simulate correctly. +=item UNSUPPORTED + +UNSUPPORTED is an error that the construct might be legal according to IEEE +but is not currently supported. + +This error may be ignored with --bbox-unsup, however this will make the +design simulate incorrectly; see the details under --bbox-unsup. + =item UNUSED Warns that the specified signal is never used/consumed. Verilator is diff --git a/src/V3Active.cpp b/src/V3Active.cpp index eb24b00d7..030136ace 100644 --- a/src/V3Active.cpp +++ b/src/V3Active.cpp @@ -316,10 +316,8 @@ private: if (!combo && !sequent) combo = true; // If no list, Verilog 2000: always @ (*) if (combo && sequent) { - if (!v3Global.opt.bboxUnsup()) { - nodep->v3error("Unsupported: Mixed edge (pos/negedge) and activity " - "(no edge) sensitive activity list"); - } + nodep->v3warn(E_UNSUPPORTED, "Unsupported: Mixed edge (pos/negedge) and activity " + "(no edge) sensitive activity list"); sequent = false; } @@ -405,8 +403,9 @@ private: } else if (nodep->varrefp()) { // V3LinkResolve should have cleaned most of these up if (!nodep->varrefp()->width1()) { - nodep->v3error("Unsupported: Non-single bit wide signal pos/negedge sensitivity: " - << nodep->varrefp()->prettyNameQ()); + nodep->v3warn(E_UNSUPPORTED, + "Unsupported: Non-single bit wide signal pos/negedge sensitivity: " + << nodep->varrefp()->prettyNameQ()); } m_itemSequent = true; nodep->varrefp()->varp()->usedClock(true); diff --git a/src/V3AssertPre.cpp b/src/V3AssertPre.cpp index c23e1bd75..1c7b46fe1 100644 --- a/src/V3AssertPre.cpp +++ b/src/V3AssertPre.cpp @@ -51,7 +51,7 @@ private: if (!senip) senip = m_seniDefaultp; if (!senip) senip = m_seniAlwaysp; if (!senip) { - nodep->v3error("Unsupported: Unclocked assertion"); + nodep->v3warn(E_UNSUPPORTED, "Unsupported: Unclocked assertion"); newp = new AstSenTree(nodep->fileline(), NULL); } else { newp = new AstSenTree(nodep->fileline(), senip->cloneTree(true)); @@ -97,7 +97,8 @@ private: virtual void visit(AstPropClocked* nodep) VL_OVERRIDE { // No need to iterate the body, once replace will get iterated iterateAndNextNull(nodep->sensesp()); - if (m_senip) nodep->v3error("Unsupported: Only one PSL clock allowed per assertion"); + if (m_senip) + nodep->v3warn(E_UNSUPPORTED, "Unsupported: Only one PSL clock allowed per assertion"); // Block is the new expression to evaluate AstNode* blockp = nodep->propp()->unlinkFrBack(); if (nodep->disablep()) { diff --git a/src/V3AstNodes.cpp b/src/V3AstNodes.cpp index 78f710b73..6b2ce772b 100644 --- a/src/V3AstNodes.cpp +++ b/src/V3AstNodes.cpp @@ -495,8 +495,8 @@ string AstVar::cPubArgType(bool named, bool forReturn) const { } if (isWide()) { if (forReturn) { - v3error("Unsupported: Public functions with >64 bit outputs; " - "make an output of a public task instead"); + v3warn(E_UNSUPPORTED, "Unsupported: Public functions with >64 bit outputs; " + "make an output of a public task instead"); } arg += " (& " + name(); arg += ")[" + cvtToStr(widthWords()) + "]"; diff --git a/src/V3Clock.cpp b/src/V3Clock.cpp index 331701260..6cb915d2e 100644 --- a/src/V3Clock.cpp +++ b/src/V3Clock.cpp @@ -66,8 +66,8 @@ private: if (vscp->user1p()) return static_cast(vscp->user1p()); AstVar* varp = vscp->varp(); if (!varp->width1()) { - varp->v3error( - "Unsupported: Clock edge on non-single bit signal: " << varp->prettyNameQ()); + varp->v3warn(E_UNSUPPORTED, "Unsupported: Clock edge on non-single bit signal: " + << varp->prettyNameQ()); } string newvarname = (string("__Vclklast__") + vscp->scopep()->nameDotless() + "__" + varp->name()); @@ -103,10 +103,8 @@ private: // LOWEDGE: ~var AstNode* newp = NULL; if (nodep->edgeType() == VEdgeType::ET_ILLEGAL) { - if (!v3Global.opt.bboxUnsup()) { - nodep->v3error( - "Unsupported: Complicated event expression in sensitive activity list"); - } + nodep->v3warn(E_UNSUPPORTED, + "Unsupported: Complicated event expression in sensitive activity list"); return NULL; } AstVarScope* clkvscp = nodep->varrefp()->varScopep(); diff --git a/src/V3Delayed.cpp b/src/V3Delayed.cpp index e0f67f03e..14a981442 100644 --- a/src/V3Delayed.cpp +++ b/src/V3Delayed.cpp @@ -373,7 +373,8 @@ private: m_nextDlyp = VN_CAST(nodep->nextp(), AssignDly); // Next assignment in same block, maybe NULL. if (m_cfuncp) { - nodep->v3error("Unsupported: Delayed assignment inside public function/task"); + nodep->v3warn(E_UNSUPPORTED, + "Unsupported: Delayed assignment inside public function/task"); } if (VN_IS(nodep->lhsp(), ArraySel) || (VN_IS(nodep->lhsp(), Sel) @@ -385,7 +386,9 @@ private: "loops (non-delayed is ok - see docs)"); } AstBasicDType* basicp = lhsp->dtypep()->basicp(); - if (basicp && basicp->isEventValue()) nodep->v3error("Unsupported: event arrays"); + if (basicp && basicp->isEventValue()) { + nodep->v3warn(E_UNSUPPORTED, "Unsupported: event arrays"); + } if (newlhsp) { nodep->lhsp(newlhsp); } else { diff --git a/src/V3EmitC.cpp b/src/V3EmitC.cpp index 19f8939a3..4bc71785a 100644 --- a/src/V3EmitC.cpp +++ b/src/V3EmitC.cpp @@ -865,41 +865,51 @@ public: } virtual void visit(AstMulS* nodep) VL_OVERRIDE { if (nodep->widthWords() > VL_MULS_MAX_WORDS) { - nodep->v3error("Unsupported: Signed multiply of " - << nodep->width() - << " bits exceeds hardcoded limit VL_MULS_MAX_WORDS in verilatedos.h"); + nodep->v3warn( + E_UNSUPPORTED, + "Unsupported: Signed multiply of " + << nodep->width() + << " bits exceeds hardcoded limit VL_MULS_MAX_WORDS in verilatedos.h"); } visit(VN_CAST(nodep, NodeBiop)); } virtual void visit(AstPow* nodep) VL_OVERRIDE { if (nodep->widthWords() > VL_MULS_MAX_WORDS) { - nodep->v3error("Unsupported: Power of " - << nodep->width() - << " bits exceeds hardcoded limit VL_MULS_MAX_WORDS in verilatedos.h"); + nodep->v3warn( + E_UNSUPPORTED, + "Unsupported: Power of " + << nodep->width() + << " bits exceeds hardcoded limit VL_MULS_MAX_WORDS in verilatedos.h"); } visit(VN_CAST(nodep, NodeBiop)); } virtual void visit(AstPowSS* nodep) VL_OVERRIDE { if (nodep->widthWords() > VL_MULS_MAX_WORDS) { - nodep->v3error("Unsupported: Power of " - << nodep->width() - << " bits exceeds hardcoded limit VL_MULS_MAX_WORDS in verilatedos.h"); + nodep->v3warn( + E_UNSUPPORTED, + "Unsupported: Power of " + << nodep->width() + << " bits exceeds hardcoded limit VL_MULS_MAX_WORDS in verilatedos.h"); } visit(VN_CAST(nodep, NodeBiop)); } virtual void visit(AstPowSU* nodep) VL_OVERRIDE { if (nodep->widthWords() > VL_MULS_MAX_WORDS) { - nodep->v3error("Unsupported: Power of " - << nodep->width() - << " bits exceeds hardcoded limit VL_MULS_MAX_WORDS in verilatedos.h"); + nodep->v3warn( + E_UNSUPPORTED, + "Unsupported: Power of " + << nodep->width() + << " bits exceeds hardcoded limit VL_MULS_MAX_WORDS in verilatedos.h"); } visit(VN_CAST(nodep, NodeBiop)); } virtual void visit(AstPowUS* nodep) VL_OVERRIDE { if (nodep->widthWords() > VL_MULS_MAX_WORDS) { - nodep->v3error("Unsupported: Power of " - << nodep->width() - << " bits exceeds hardcoded limit VL_MULS_MAX_WORDS in verilatedos.h"); + nodep->v3warn( + E_UNSUPPORTED, + "Unsupported: Power of " + << nodep->width() + << " bits exceeds hardcoded limit VL_MULS_MAX_WORDS in verilatedos.h"); } visit(VN_CAST(nodep, NodeBiop)); } @@ -1057,7 +1067,7 @@ public: void emitConstant(AstConst* nodep, AstVarRef* assigntop, const string& assignString) { // Put out constant set to the specified variable, or given variable in a string if (nodep->num().isFourState()) { - nodep->v3error("Unsupported: 4-state numbers in this context"); + nodep->v3warn(E_UNSUPPORTED, "Unsupported: 4-state numbers in this context"); } else if (nodep->num().isString()) { putbs("std::string("); putsQuoted(nodep->num().toString()); diff --git a/src/V3EmitCInlines.cpp b/src/V3EmitCInlines.cpp index 39a2f4fd6..b2b526f29 100644 --- a/src/V3EmitCInlines.cpp +++ b/src/V3EmitCInlines.cpp @@ -42,7 +42,8 @@ class EmitCInlines : EmitCBaseVisitor { } virtual void visit(AstCNew* nodep) VL_OVERRIDE { checkHeavy(nodep); - if (v3Global.opt.savable()) v3error("Unsupported: --savable with dynamic new"); + if (v3Global.opt.savable()) + v3warn(E_UNSUPPORTED, "Unsupported: --savable with dynamic new"); iterateChildren(nodep); } virtual void visit(AstDumpCtl* nodep) VL_OVERRIDE { diff --git a/src/V3EmitCMake.cpp b/src/V3EmitCMake.cpp index 793ce9bbc..5e741264f 100644 --- a/src/V3EmitCMake.cpp +++ b/src/V3EmitCMake.cpp @@ -163,8 +163,9 @@ class CMakeEmitter { + "_c.cpp"); if (v3Global.opt.systemC()) { if (v3Global.opt.traceFormat() != TraceFormat::VCD) { - v3error("Unsupported: This trace format is not supported in SystemC, " - "use VCD format."); + v3warn(E_UNSUPPORTED, + "Unsupported: This trace format is not supported in SystemC, " + "use VCD format."); } global.push_back("${VERILATOR_ROOT}/include/" + v3Global.opt.traceSourceLang() + ".cpp"); diff --git a/src/V3EmitMk.cpp b/src/V3EmitMk.cpp index e148bb1a0..6fe9cf8c0 100644 --- a/src/V3EmitMk.cpp +++ b/src/V3EmitMk.cpp @@ -104,8 +104,9 @@ public: putMakeClassEntry(of, v3Global.opt.traceSourceBase() + "_c.cpp"); if (v3Global.opt.systemC()) { if (v3Global.opt.traceFormat() != TraceFormat::VCD) { - v3error("Unsupported: This trace format is not supported " - "in SystemC, use VCD format."); + v3warn(E_UNSUPPORTED, + "Unsupported: This trace format is not supported " + "in SystemC, use VCD format."); } else { putMakeClassEntry(of, v3Global.opt.traceSourceLang() + ".cpp"); } diff --git a/src/V3Error.h b/src/V3Error.h index b44bab0bf..88f96d0e1 100644 --- a/src/V3Error.h +++ b/src/V3Error.h @@ -52,6 +52,7 @@ public: // Error codes: E_DETECTARRAY, // Error: Unsupported: Can't detect changes on arrayed variable E_PORTSHORT, // Error: Output port is connected to a constant, electrical short + E_UNSUPPORTED, // Error: Unsupported (generally) E_TASKNSVAR, // Error: Task I/O not simple // // Warning codes: @@ -143,7 +144,7 @@ public: // Boolean " I_CELLDEFINE", " I_COVERAGE", " I_TRACING", " I_LINT", " I_DEF_NETTYPE_WIRE", // Errors - "DETECTARRAY", "PORTSHORT", "TASKNSVAR", + "DETECTARRAY", "PORTSHORT", "UNSUPPORTED", "TASKNSVAR", // Warnings " EC_FIRST_WARN", "ALWCOMBORDER", "ASSIGNDLY", "ASSIGNIN", diff --git a/src/V3Expand.cpp b/src/V3Expand.cpp index f3e47f857..623f98c1f 100644 --- a/src/V3Expand.cpp +++ b/src/V3Expand.cpp @@ -206,8 +206,8 @@ private: UINFO(8, " Wordize ASSIGN(CONST) " << nodep << endl); // -> {for each_word{ ASSIGN(WORDSEL(wide,#),WORDSEL(CONST,#))}} if (rhsp->num().isFourState()) { - rhsp->v3error( // LCOV_EXCL_LINE // impossible? - "Unsupported: 4-state numbers in this context"); + rhsp->v3warn(E_UNSUPPORTED, // LCOV_EXCL_LINE // impossible? + "Unsupported: 4-state numbers in this context"); } for (int w = 0; w < nodep->widthWords(); w++) { addWordAssign( diff --git a/src/V3Inst.cpp b/src/V3Inst.cpp index 17343944d..c42234ff7 100644 --- a/src/V3Inst.cpp +++ b/src/V3Inst.cpp @@ -116,8 +116,8 @@ private: virtual void visit(AstUdpTable* nodep) VL_OVERRIDE { if (!v3Global.opt.bboxUnsup()) { // If we support primitives, update V3Undriven to remove special case - nodep->v3error("Unsupported: Verilog 1995 UDP Tables. " - "Use --bbox-unsup to ignore tables."); + nodep->v3warn(E_UNSUPPORTED, "Unsupported: Verilog 1995 UDP Tables. " + "Use --bbox-unsup to ignore tables."); } } @@ -358,8 +358,8 @@ private: && !VN_IS(exprp, VarRef) // V3Const will collapse the SEL with the one we're about to make && !VN_IS(exprp, Concat) && !VN_IS(exprp, Sel)) { - nodep->v3error("Unsupported: Per-bit array instantiations with output " - "connections to non-wires."); + nodep->v3warn(E_UNSUPPORTED, "Unsupported: Per-bit array instantiations " + "with output connections to non-wires."); // Note spec allows more complicated matches such as slices and such } exprp = new AstSel(exprp->fileline(), exprp, pinwidth * m_instSelNum, pinwidth); @@ -375,7 +375,8 @@ private: V3Const::constifyParamsEdit(arrselp->rhsp()); const AstConst* constp = VN_CAST(arrselp->rhsp(), Const); if (!constp) { - nodep->v3error( + nodep->v3warn( + E_UNSUPPORTED, "Unsupported: Non-constant index when passing interface to module"); return; } diff --git a/src/V3LinkCells.cpp b/src/V3LinkCells.cpp index e55660d70..bb6f1110c 100644 --- a/src/V3LinkCells.cpp +++ b/src/V3LinkCells.cpp @@ -75,12 +75,13 @@ public: void LinkCellsGraph::loopsMessageCb(V3GraphVertex* vertexp) { if (LinkCellsVertex* vvertexp = dynamic_cast(vertexp)) { - vvertexp->modp()->v3error( - "Unsupported: Recursive multiple modules (module instantiates " - "something leading back to itself): " - << vvertexp->modp()->prettyNameQ() << endl - << V3Error::warnMore() - << "... note: self-recursion (module instantiating itself directly) is supported."); + vvertexp->modp()->v3warn(E_UNSUPPORTED, + "Unsupported: Recursive multiple modules (module instantiates " + "something leading back to itself): " + << vvertexp->modp()->prettyNameQ() << endl + << V3Error::warnMore() + << "... note: self-recursion (module instantiating itself " + "directly) is supported."); V3Error::abortIfErrors(); } else { // Everything should match above, but... v3fatalSrc("Recursive instantiations"); diff --git a/src/V3LinkDot.cpp b/src/V3LinkDot.cpp index b5a9f03c3..30c173a01 100644 --- a/src/V3LinkDot.cpp +++ b/src/V3LinkDot.cpp @@ -793,9 +793,10 @@ class LinkDotFindVisitor : public AstNVisitor { int oldBlockNum = m_blockNum; int oldModBlockNum = m_modBlockNum; if (doit && nodep->user2()) { - nodep->v3error("Unsupported: Identically recursive module (module instantiates " - "itself, without changing parameters): " - << AstNode::prettyNameQ(nodep->origName())); + nodep->v3warn(E_UNSUPPORTED, + "Unsupported: Identically recursive module (module instantiates " + "itself, without changing parameters): " + << AstNode::prettyNameQ(nodep->origName())); } else if (doit) { UINFO(4, " Link Module: " << nodep << endl); UASSERT_OBJ(!nodep->dead(), nodep, "Module in cell tree mislabeled as dead?"); @@ -1035,7 +1036,8 @@ class LinkDotFindVisitor : public AstNVisitor { UASSERT_OBJ(m_curSymp && m_modSymp, nodep, "Var not under module?"); iterateChildren(nodep); if (m_ftaskp && nodep->isParam()) { - nodep->v3error("Unsupported: Parameters in functions."); // Big3 unsupported too + nodep->v3warn(E_UNSUPPORTED, + "Unsupported: Parameters in functions"); // Big3 unsupported too VL_DO_DANGLING(nodep->unlinkFrBack()->deleteTree(), nodep); return; } @@ -1618,7 +1620,7 @@ class LinkDotIfaceVisitor : public AstNVisitor { virtual void visit(AstModportFTaskRef* nodep) VL_OVERRIDE { UINFO(5, " fif: " << nodep << endl); iterateChildren(nodep); - if (nodep->isExport()) nodep->v3error("Unsupported: modport export"); + if (nodep->isExport()) nodep->v3warn(E_UNSUPPORTED, "Unsupported: modport export"); VSymEnt* symp = m_curSymp->findIdFallback(nodep->name()); if (!symp) { nodep->v3error("Modport item not found: " << nodep->prettyNameQ()); @@ -2626,7 +2628,7 @@ private: if (AstClassExtends* eitemp = VN_CAST(itemp, ClassExtends)) { // Replace abstract reference with hard pointer // Will need later resolution when deal with parameters - eitemp->v3error("Unsupported: class extends"); + eitemp->v3warn(E_UNSUPPORTED, "Unsupported: class extends"); } } VSymEnt* oldCurSymp = m_curSymp; diff --git a/src/V3LinkInc.cpp b/src/V3LinkInc.cpp index 73fbe604c..55c7b24cf 100644 --- a/src/V3LinkInc.cpp +++ b/src/V3LinkInc.cpp @@ -178,7 +178,7 @@ private: AstNodeVarRef* varrefp; if (m_unsupportedHere || !(varrefp = VN_CAST(nodep->rhsp(), VarRef))) { - nodep->v3error("Unsupported: Incrementation in this context."); + nodep->v3warn(E_UNSUPPORTED, "Unsupported: Incrementation in this context."); return; } diff --git a/src/V3LinkJump.cpp b/src/V3LinkJump.cpp index 3c9185b33..d31b5ba4d 100644 --- a/src/V3LinkJump.cpp +++ b/src/V3LinkJump.cpp @@ -260,7 +260,7 @@ private: AstJumpLabel* labelp = findAddLabel(beginp, false); nodep->addNextHere(new AstJumpGo(nodep->fileline(), labelp)); } else { - nodep->v3error("Unsupported: disable fork"); + nodep->v3warn(E_UNSUPPORTED, "Unsupported: disable fork"); } nodep->unlinkFrBack(); VL_DO_DANGLING(pushDeletep(nodep), nodep); diff --git a/src/V3LinkLevel.cpp b/src/V3LinkLevel.cpp index 8c0fe88ec..70c997d6d 100644 --- a/src/V3LinkLevel.cpp +++ b/src/V3LinkLevel.cpp @@ -228,8 +228,9 @@ void V3LinkLevel::wrapTopCell(AstNetlist* rootp) { varp->primaryIO(true); } if (varp->direction().isRefOrConstRef()) { - varp->v3error("Unsupported: ref/const ref as primary input/output: " - << varp->prettyNameQ()); + varp->v3warn(E_UNSUPPORTED, + "Unsupported: ref/const ref as primary input/output: " + << varp->prettyNameQ()); } if (varp->isIO() && v3Global.opt.systemC()) { varp->sc(true); diff --git a/src/V3LinkParse.cpp b/src/V3LinkParse.cpp index 680b76ebc..dd89317ad 100644 --- a/src/V3LinkParse.cpp +++ b/src/V3LinkParse.cpp @@ -228,8 +228,8 @@ private: new AstInitial(fl, new AstAssign(fl, new AstVarRef(fl, nodep->name(), true), nodep->valuep()->unlinkFrBack()))); } else if (!m_ftaskp && nodep->isNonOutput()) { - nodep->v3error( - "Unsupported: Default value on module input: " << nodep->prettyNameQ()); + nodep->v3warn(E_UNSUPPORTED, "Unsupported: Default value on module input: " + << nodep->prettyNameQ()); nodep->valuep()->unlinkFrBack()->deleteTree(); } // 3. Under modules, it's an initial value to be loaded at time 0 via an AstInitial else if (m_valueModp) { @@ -251,7 +251,7 @@ private: // What breaks later is we don't have a Scope/Cell representing // the interface to attach to if (m_modp->level() <= 2) { - nodep->v3error("Unsupported: Interfaced port on top level module"); + nodep->v3warn(E_UNSUPPORTED, "Unsupported: Interfaced port on top level module"); } } } @@ -540,12 +540,10 @@ private: } if (nodep->stmtsp()) alwaysp->addStmtp(nodep->stmtsp()->unlinkFrBackWithNext()); } else { - if (!v3Global.opt.bboxUnsup()) { - nodep->v3error("Unsupported: timing control statement in this location\n" - << nodep->warnMore() - << "... Suggest have one timing control statement " - << "per procedure, at the top of the procedure"); - } + nodep->v3warn(E_UNSUPPORTED, "Unsupported: timing control statement in this location\n" + << nodep->warnMore() + << "... Suggest have one timing control statement " + << "per procedure, at the top of the procedure"); } VL_DO_DANGLING(nodep->unlinkFrBack()->deleteTree(), nodep); } diff --git a/src/V3LinkResolve.cpp b/src/V3LinkResolve.cpp index a6074a554..50bcde21c 100644 --- a/src/V3LinkResolve.cpp +++ b/src/V3LinkResolve.cpp @@ -108,7 +108,8 @@ private: virtual void visit(AstVar* nodep) VL_OVERRIDE { iterateChildren(nodep); if (m_classp && !nodep->isParam()) nodep->varType(AstVarType::MEMBER); - if (m_classp && nodep->isParam()) nodep->v3error("Unsupported: class parameter"); + if (m_classp && nodep->isParam()) + nodep->v3warn(E_UNSUPPORTED, "Unsupported: class parameter"); if (m_ftaskp) nodep->funcLocal(true); if (nodep->lifetime().isNone()) nodep->lifetime(m_lifetime); if (nodep->isSigModPublic()) { @@ -167,8 +168,9 @@ private: addwherep = addwherep->backp(); } if (!VN_IS(addwherep, Always)) { // Assertion perhaps? - sensp->v3error("Unsupported: Non-single-bit pos/negedge clock statement under " - "some complicated block"); + sensp->v3warn(E_UNSUPPORTED, + "Unsupported: Non-single-bit pos/negedge clock statement under " + "some complicated block"); addwherep = m_modp; } addwherep->addNext(newvarp); @@ -207,7 +209,7 @@ private: && !VN_IS(nodep->sensp(), EnumItemRef) // V3Const will cleanup && !nodep->isIllegal()) { if (debug()) nodep->dumpTree(cout, "-tree: "); - nodep->v3error("Unsupported: Complex statement in sensitivity list"); + nodep->v3warn(E_UNSUPPORTED, "Unsupported: Complex statement in sensitivity list"); } } virtual void visit(AstSenGate* nodep) VL_OVERRIDE { // LCOV_EXCL_LINE @@ -239,7 +241,7 @@ private: } else if (VN_IS(basefromp, Replicate)) { // From {...}[...] syntax in IEEE 2017 if (basefromp) { UINFO(1, " Related node: " << basefromp << endl); } - nodep->v3error("Unsupported: Select of concatenation"); + nodep->v3warn(E_UNSUPPORTED, "Unsupported: Select of concatenation"); nodep = NULL; } else { if (basefromp) { UINFO(1, " Related node: " << basefromp << endl); } @@ -309,13 +311,13 @@ private: break; case 'm': // %m - auto insert "name" if (isScan) { - nodep->v3error("Unsupported: %m in $fscanf"); + nodep->v3warn(E_UNSUPPORTED, "Unsupported: %m in $fscanf"); fmt = ""; } break; case 'l': // %l - auto insert "library" if (isScan) { - nodep->v3error("Unsupported: %l in $fscanf"); + nodep->v3warn(E_UNSUPPORTED, "Unsupported: %l in $fscanf"); fmt = ""; } if (m_modp) fmt = VString::quotePercent(m_modp->prettyName()); @@ -395,7 +397,8 @@ private: void expectDescriptor(AstNode* nodep, AstNodeVarRef* filep) { if (!filep) { - nodep->v3error("Unsupported: $fopen/$fclose/$f* descriptor must be a simple variable"); + nodep->v3warn(E_UNSUPPORTED, + "Unsupported: $fopen/$fclose/$f* descriptor must be a simple variable"); } if (filep && filep->varp()) filep->varp()->attrFileDescr(true); } diff --git a/src/V3Options.cpp b/src/V3Options.cpp index 714e104b6..1fe8c3a1e 100644 --- a/src/V3Options.cpp +++ b/src/V3Options.cpp @@ -603,8 +603,9 @@ void V3Options::notify() { if (allPublic()) { // We always call protect() on names, we don't check if public or not // Hence any external references wouldn't be able to find the refed public object. - cmdfl->v3error("Unsupported: Using --protect-ids with --public\n" // - + V3Error::warnMore() + "... Suggest remove --public."); + cmdfl->v3warn(E_UNSUPPORTED, "Unsupported: Using --protect-ids with --public\n" // + + V3Error::warnMore() + + "... Suggest remove --public."); } if (trace()) { cmdfl->v3warn(INSECURE, @@ -644,7 +645,8 @@ void V3Options::notify() { if (m_outputSplitCTrace < 0) m_outputSplitCTrace = m_outputSplit; if (v3Global.opt.main() && v3Global.opt.systemC()) { - cmdfl->v3error("--main not usable with SystemC. Suggest see examples for sc_main()."); + cmdfl->v3warn(E_UNSUPPORTED, + "--main not usable with SystemC. Suggest see examples for sc_main()."); } } @@ -839,6 +841,7 @@ void V3Options::parseOptsList(FileLine* fl, const string& optdir, int argc, char } else if (onoff(sw, "-bbox-sys", flag /*ref*/)) { m_bboxSys = flag; } else if (onoff(sw, "-bbox-unsup", flag /*ref*/)) { + FileLine::globalWarnOff(V3ErrorCode::E_UNSUPPORTED, true); m_bboxUnsup = flag; } else if (!strcmp(sw, "-build")) { m_build = true; diff --git a/src/V3ParseGrammar.cpp b/src/V3ParseGrammar.cpp index 37d040a96..00c3f4f23 100644 --- a/src/V3ParseGrammar.cpp +++ b/src/V3ParseGrammar.cpp @@ -100,7 +100,7 @@ AstRange* V3ParseGrammar::scrubRange(AstNodeRange* nrangep) { } if (nrangep && nrangep->nextp()) { // Not supported by at least 2 of big 3 - nrangep->nextp()->v3error("Unsupported: Multidimensional cells/interfaces."); + nrangep->nextp()->v3warn(E_UNSUPPORTED, "Unsupported: Multidimensional cells/interfaces."); nrangep->nextp()->unlinkFrBackWithNext()->deleteTree(); } return VN_CAST(nrangep, Range); @@ -151,7 +151,7 @@ AstVar* V3ParseGrammar::createVariable(FileLine* fileline, const string& name, << GRAMMARP->m_varIO << " dt=" << (dtypep ? "set" : "") << endl); if (GRAMMARP->m_varIO == VDirection::NONE && GRAMMARP->m_varDecl == AstVarType::PORT) { // Just a port list with variable name (not v2k format); AstPort already created - if (dtypep) fileline->v3error("Unsupported: Ranges ignored in port-lists"); + if (dtypep) fileline->v3warn(E_UNSUPPORTED, "Unsupported: Ranges ignored in port-lists"); return NULL; } if (GRAMMARP->m_varDecl == AstVarType::WREAL) { diff --git a/src/V3ProtectLib.cpp b/src/V3ProtectLib.cpp index c04726c8b..06fd9d726 100644 --- a/src/V3ProtectLib.cpp +++ b/src/V3ProtectLib.cpp @@ -364,8 +364,8 @@ private: virtual void visit(AstVar* nodep) VL_OVERRIDE { if (!nodep->isIO()) return; if (VN_IS(nodep->dtypep(), UnpackArrayDType)) { - nodep->v3error("Unsupported: unpacked arrays with protect-lib on " - << nodep->prettyNameQ()); + nodep->v3warn(E_UNSUPPORTED, "Unsupported: unpacked arrays with protect-lib on " + << nodep->prettyNameQ()); } if (nodep->direction() == VDirection::INPUT) { if (nodep->isUsedClock() || nodep->attrClocker() == VVarAttrClocker::CLOCKER_YES) { @@ -376,8 +376,8 @@ private: } else if (nodep->direction() == VDirection::OUTPUT) { handleOutput(nodep); } else { - nodep->v3error( - "Unsupported: protect-lib port direction: " << nodep->direction().ascii()); + nodep->v3warn(E_UNSUPPORTED, "Unsupported: protect-lib port direction: " + << nodep->direction().ascii()); } } diff --git a/src/V3Task.cpp b/src/V3Task.cpp index 30ef04ec9..b9f8f2445 100644 --- a/src/V3Task.cpp +++ b/src/V3Task.cpp @@ -846,11 +846,12 @@ private: newPortp->funcLocal(true); dpip->addArgsp(newPortp); if (!portp->basicp()) { - portp->v3error( + portp->v3warn( + E_UNSUPPORTED, "Unsupported: DPI argument of type " - << portp->basicp()->prettyTypeName() << endl - << portp->warnMore() - << "... For best portability, use bit, byte, int, or longint"); + << portp->basicp()->prettyTypeName() << endl + << portp->warnMore() + << "... For best portability, use bit, byte, int, or longint"); // We don't warn on logic either, although the 4-stateness is lost. // That's what other simulators do. } @@ -971,9 +972,10 @@ private: } } else { if (portp->isWide()) { - nodep->v3error("Unsupported: Public functions with return > 64 bits wide.\n" - + V3Error::warnMore() - + "... Suggest make it an output argument instead?"); + nodep->v3warn(E_UNSUPPORTED, + "Unsupported: Public functions with return > 64 bits wide.\n" + + V3Error::warnMore() + + "... Suggest make it an output argument instead?"); } } @@ -1265,7 +1267,8 @@ private: if (v3Global.opt.protectIds() && nodep->taskPublic()) { // We always call protect() on names, we don't check if public or not // Hence any external references wouldn't be able to find the refed public object. - nodep->v3error("Unsupported: Using --protect-ids with public function"); + nodep->v3warn(E_UNSUPPORTED, + "Unsupported: Using --protect-ids with public function"); } if (modes > 1) { nodep->v3error("Cannot mix DPI import, DPI export, class methods, and/or public " @@ -1463,9 +1466,10 @@ V3TaskConnects V3Task::taskConnects(AstNodeFTaskRef* nodep, AstNode* taskStmtsp) // Problem otherwise is we might have a varref, task // call, or something else that only makes sense in the // domain of the function, not the callee. - nodep->v3error("Unsupported: Non-constant default value in missing argument " - << portp->prettyNameQ() << " in function call to " - << nodep->taskp()->prettyTypeName()); + nodep->v3warn(E_UNSUPPORTED, + "Unsupported: Non-constant default value in missing argument " + << portp->prettyNameQ() << " in function call to " + << nodep->taskp()->prettyTypeName()); newvaluep = new AstConst(nodep->fileline(), AstConst::Unsized32(), 0); } else { newvaluep = newvaluep->cloneTree(true); diff --git a/src/V3Tristate.cpp b/src/V3Tristate.cpp index 184f92571..feab69955 100644 --- a/src/V3Tristate.cpp +++ b/src/V3Tristate.cpp @@ -380,8 +380,9 @@ class TristateVisitor : public TristateBaseVisitor { invarp->name() + "__en", invarp); UINFO(9, " newenv " << newp << endl); if (!m_modp) { - invarp->v3error("Unsupported: Creating tristate signal not underneath a module: " - << invarp->prettyNameQ()); + invarp->v3warn(E_UNSUPPORTED, + "Unsupported: Creating tristate signal not underneath a module: " + << invarp->prettyNameQ()); } else { m_modp->addStmtp(newp); } @@ -397,8 +398,9 @@ class TristateVisitor : public TristateBaseVisitor { invarp->name() + "__out", invarp); UINFO(9, " newout " << newp << endl); if (!m_modp) { - invarp->v3error("Unsupported: Creating tristate signal not underneath a module: " - << invarp->prettyNameQ()); + invarp->v3warn(E_UNSUPPORTED, + "Unsupported: Creating tristate signal not underneath a module: " + << invarp->prettyNameQ()); } else { m_modp->addStmtp(newp); } @@ -412,7 +414,8 @@ class TristateVisitor : public TristateBaseVisitor { "__Vtriunconn" + cvtToStr(m_unique++), dtypep); UINFO(9, " newunc " << newp << endl); if (!m_modp) { - newp->v3error("Unsupported: Creating tristate signal not underneath a module"); + newp->v3warn(E_UNSUPPORTED, + "Unsupported: Creating tristate signal not underneath a module"); } else { m_modp->addStmtp(newp); } @@ -447,10 +450,11 @@ class TristateVisitor : public TristateBaseVisitor { varp->user3p(pullp); // save off to indicate the pull direction } else { if (oldpullp->direction() != pullp->direction()) { - pullp->v3error("Unsupported: Conflicting pull directions.\n" - << pullp->warnContextPrimary() << endl - << oldpullp->warnOther() << "... Location of conflicting pull.\n" - << oldpullp->warnContextSecondary()); + pullp->v3warn(E_UNSUPPORTED, "Unsupported: Conflicting pull directions.\n" + << pullp->warnContextPrimary() << endl + << oldpullp->warnOther() + << "... Location of conflicting pull.\n" + << oldpullp->warnContextSecondary()); } } } @@ -460,14 +464,16 @@ class TristateVisitor : public TristateBaseVisitor { // The best way would be to visit the tree again and find any user1p() // pointers that did not get picked up and expanded. if (m_alhs && nodep->user1p()) { - nodep->v3error("Unsupported LHS tristate construct: " << nodep->prettyTypeName()); + nodep->v3warn(E_UNSUPPORTED, + "Unsupported LHS tristate construct: " << nodep->prettyTypeName()); } // Ignore Var's because they end up adjacent to statements if ((nodep->op1p() && nodep->op1p()->user1p() && !VN_IS(nodep->op1p(), Var)) || (nodep->op2p() && nodep->op2p()->user1p() && !VN_IS(nodep->op1p(), Var)) || (nodep->op3p() && nodep->op3p()->user1p() && !VN_IS(nodep->op1p(), Var)) || (nodep->op4p() && nodep->op4p()->user1p() && !VN_IS(nodep->op1p(), Var))) { - nodep->v3error("Unsupported tristate construct: " << nodep->prettyTypeName()); + nodep->v3warn(E_UNSUPPORTED, + "Unsupported tristate construct: " << nodep->prettyTypeName()); } } @@ -678,7 +684,8 @@ class TristateVisitor : public TristateBaseVisitor { } } else { if (m_alhs && nodep->user1p()) { - nodep->v3error("Unsupported LHS tristate construct: " << nodep->prettyTypeName()); + nodep->v3warn(E_UNSUPPORTED, + "Unsupported LHS tristate construct: " << nodep->prettyTypeName()); return; } iterateChildren(nodep); @@ -689,8 +696,8 @@ class TristateVisitor : public TristateBaseVisitor { // error. AstNode* condp = nodep->condp(); if (condp->user1p()) { - condp->v3error("Unsupported: don't know how to deal with " - "tristate logic in the conditional expression"); + condp->v3warn(E_UNSUPPORTED, "Unsupported: don't know how to deal with " + "tristate logic in the conditional expression"); } AstNode* expr1p = nodep->expr1p(); AstNode* expr2p = nodep->expr2p(); @@ -732,8 +739,8 @@ class TristateVisitor : public TristateBaseVisitor { iterateChildren(nodep); UINFO(9, dbgState() << nodep << endl); if (nodep->lsbp()->user1p()) { - nodep->v3error( - "Unsupported RHS tristate construct: " << nodep->prettyTypeName()); + nodep->v3warn(E_UNSUPPORTED, "Unsupported RHS tristate construct: " + << nodep->prettyTypeName()); } if (nodep->fromp()->user1p()) { // SEL(VARREF, lsb) AstNode* en1p = getEnp(nodep->fromp()); @@ -804,7 +811,8 @@ class TristateVisitor : public TristateBaseVisitor { } else { if (debug() >= 9) nodep->backp()->dumpTree(cout, "-bufif: "); if (m_alhs) { - nodep->v3error("Unsupported LHS tristate construct: " << nodep->prettyTypeName()); + nodep->v3warn(E_UNSUPPORTED, + "Unsupported LHS tristate construct: " << nodep->prettyTypeName()); return; } m_tgraph.didProcess(nodep); @@ -834,7 +842,8 @@ class TristateVisitor : public TristateBaseVisitor { associateLogic(nodep->rhsp(), nodep); } else { if (m_alhs && nodep->user1p()) { - nodep->v3error("Unsupported LHS tristate construct: " << nodep->prettyTypeName()); + nodep->v3warn(E_UNSUPPORTED, + "Unsupported LHS tristate construct: " << nodep->prettyTypeName()); return; } // ANDs and Z's have issues. Earlier optimizations convert @@ -956,13 +965,14 @@ class TristateVisitor : public TristateBaseVisitor { } void visitEqNeqWild(AstNodeBiop* nodep) { if (!VN_IS(nodep->rhsp(), Const)) { - nodep->v3error( // Says spac. - "Unsupported: RHS of ==? or !=? must be constant to be synthesizable"); + nodep->v3warn(E_UNSUPPORTED, // Says spac. + "Unsupported: RHS of ==? or !=? must be constant to be synthesizable"); // rhs we want to keep X/Z intact, so otherwise ignore } iterateAndNextNull(nodep->lhsp()); if (nodep->lhsp()->user1p()) { - nodep->v3error("Unsupported LHS tristate construct: " << nodep->prettyTypeName()); + nodep->v3warn(E_UNSUPPORTED, + "Unsupported LHS tristate construct: " << nodep->prettyTypeName()); return; } } @@ -982,7 +992,7 @@ class TristateVisitor : public TristateBaseVisitor { } if (!varrefp) { if (debug() >= 4) nodep->dumpTree(cout, "- "); - nodep->v3error("Unsupported pullup/down (weak driver) construct."); + nodep->v3warn(E_UNSUPPORTED, "Unsupported pullup/down (weak driver) construct."); } else { if (m_graphing) { varrefp->lvalue(true); @@ -1115,8 +1125,8 @@ class TristateVisitor : public TristateBaseVisitor { if (!outModVarp) { // At top, no need for __out as might be input only. Otherwise resolvable. if (!m_modp->isTop()) { - nodep->v3error( - "Unsupported: tristate in top-level IO: " << nodep->prettyNameQ()); + nodep->v3warn(E_UNSUPPORTED, "Unsupported: tristate in top-level IO: " + << nodep->prettyNameQ()); } } else { AstNode* outexprp = nodep->exprp()->cloneTree(false); // Note has lvalue() set @@ -1160,8 +1170,8 @@ class TristateVisitor : public TristateBaseVisitor { // pinReconnect should have converted this exprrefp = VN_CAST(outpinp->exprp(), VarRef); if (!exprrefp) { - nodep->v3error("Unsupported tristate port expression: " - << nodep->exprp()->prettyTypeName()); + nodep->v3warn(E_UNSUPPORTED, "Unsupported tristate port expression: " + << nodep->exprp()->prettyTypeName()); } } } else { @@ -1169,8 +1179,8 @@ class TristateVisitor : public TristateBaseVisitor { exprrefp = VN_CAST(outAssignp->rhsp(), VarRef); // This should be the same var as the output pin if (!exprrefp) { - nodep->v3error("Unsupported tristate port expression: " - << nodep->exprp()->prettyTypeName()); + nodep->v3warn(E_UNSUPPORTED, "Unsupported tristate port expression: " + << nodep->exprp()->prettyTypeName()); } } if (exprrefp) { diff --git a/src/V3Unknown.cpp b/src/V3Unknown.cpp index d0769702d..3ebaa05ec 100644 --- a/src/V3Unknown.cpp +++ b/src/V3Unknown.cpp @@ -210,8 +210,8 @@ private: AstNode* rhsp = nodep->rhsp()->unlinkFrBack(); AstNode* newp; if (!VN_IS(rhsp, Const)) { - nodep->v3error("Unsupported: RHS of ==? or !=? must be " - "constant to be synthesizable"); // Says spec. + nodep->v3warn(E_UNSUPPORTED, "Unsupported: RHS of ==? or !=? must be " + "constant to be synthesizable"); // Says spec. // Replace with anything that won't cause more errors newp = new AstEq(nodep->fileline(), lhsp, rhsp); } else { diff --git a/src/V3Unroll.cpp b/src/V3Unroll.cpp index 6d1eb0cb7..76470a752 100644 --- a/src/V3Unroll.cpp +++ b/src/V3Unroll.cpp @@ -59,7 +59,8 @@ private: // VISITORS bool cantUnroll(AstNode* nodep, const char* reason) { - if (m_generate) nodep->v3error("Unsupported: Can't unroll generate for; " << reason); + if (m_generate) + nodep->v3warn(E_UNSUPPORTED, "Unsupported: Can't unroll generate for; " << reason); UINFO(3, " Can't Unroll: " << reason << " :" << nodep << endl); // if (debug() >= 9) nodep->dumpTree(cout, "-cant-"); V3Stats::addStatSum(string("Unrolling gave up, ") + reason, 1); diff --git a/src/V3Width.cpp b/src/V3Width.cpp index e314d93f9..0172750c1 100644 --- a/src/V3Width.cpp +++ b/src/V3Width.cpp @@ -479,8 +479,8 @@ private: && (VN_IS(vdtypep, AssocArrayDType) // || VN_IS(vdtypep, DynArrayDType) // || VN_IS(vdtypep, QueueDType))) { - nodep->v3error("Unsupported: Concatenation to form " << vdtypep->prettyDTypeNameQ() - << "data type"); + nodep->v3warn(E_UNSUPPORTED, "Unsupported: Concatenation to form " + << vdtypep->prettyDTypeNameQ() << "data type"); } iterateCheckSizedSelf(nodep, "LHS", nodep->lhsp(), SELF, BOTH); @@ -564,7 +564,7 @@ private: nodep->replaceWith(newp); VL_DO_DANGLING(nodep->deleteTree(), nodep); } else { - nodep->v3error("Unsupported: fork statements"); + nodep->v3warn(E_UNSUPPORTED, "Unsupported: fork statements"); // TBD might support only normal join, if so complain about other join flavors } } @@ -589,8 +589,8 @@ private: if (vdtypep && (VN_IS(vdtypep, AssocArrayDType) || VN_IS(vdtypep, DynArrayDType) || VN_IS(vdtypep, QueueDType) || VN_IS(vdtypep, UnpackArrayDType))) { - nodep->v3error("Unsupported: Replication to form " << vdtypep->prettyDTypeNameQ() - << " data type"); + nodep->v3warn(E_UNSUPPORTED, "Unsupported: Replication to form " + << vdtypep->prettyDTypeNameQ() << " data type"); } iterateCheckSizedSelf(nodep, "LHS", nodep->lhsp(), SELF, BOTH); iterateCheckSizedSelf(nodep, "RHS", nodep->rhsp(), SELF, BOTH); @@ -746,8 +746,8 @@ private: int width = nodep->widthConst(); UASSERT_OBJ(nodep->dtypep(), nodep, "dtype wasn't set"); // by V3WidthSel if (VN_IS(nodep->lsbp(), Const) && nodep->msbConst() < nodep->lsbConst()) { - nodep->v3error("Unsupported: MSB < LSB of bit extract: " - << nodep->msbConst() << "<" << nodep->lsbConst()); + nodep->v3warn(E_UNSUPPORTED, "Unsupported: MSB < LSB of bit extract: " + << nodep->msbConst() << "<" << nodep->lsbConst()); width = (nodep->lsbConst() - nodep->msbConst() + 1); nodep->dtypeSetLogicSized(width, VSigning::UNSIGNED); nodep->widthp()->replaceWith(new AstConst(nodep->widthp()->fileline(), width)); @@ -1063,7 +1063,7 @@ private: nodep->dtypeSetSigned32(); // Used in int context if (!VN_IS(nodep->backp(), IsUnbounded) && !VN_IS(nodep->backp(), BracketArrayDType) && !(VN_IS(nodep->backp(), Var) && VN_CAST(nodep->backp(), Var)->isParam())) { - nodep->v3error("Unsupported/illegal unbounded ('$') in this context."); + nodep->v3warn(E_UNSUPPORTED, "Unsupported/illegal unbounded ('$') in this context."); } } virtual void visit(AstIsUnbounded* nodep) VL_OVERRIDE { @@ -1083,7 +1083,7 @@ private: AstNodeDType* expDTypep = m_vup->dtypeOverridep(nodep->dtypep()); nodep->dtypeFrom(expDTypep); // Assume user knows the rules; go with the flow if (nodep->width() > 64) { - nodep->v3error("Unsupported: $c can't generate wider than 64 bits"); + nodep->v3warn(E_UNSUPPORTED, "Unsupported: $c can't generate wider than 64 bits"); } } } @@ -1267,7 +1267,7 @@ private: break; } case AstAttrType::DIM_BITS: { - nodep->v3error("Unsupported: $bits for queue"); + nodep->v3warn(E_UNSUPPORTED, "Unsupported: $bits for queue"); break; } default: nodep->v3error("Unhandled attribute type"); @@ -1490,9 +1490,7 @@ private: nodep->widthFromSub(nodep->subDTypep()); } virtual void visit(AstCastDynamic* nodep) VL_OVERRIDE { - if (!v3Global.opt.bboxUnsup()) { - nodep->v3error("Unsupported: $cast. Suggest try static cast."); - } + nodep->v3warn(E_UNSUPPORTED, "Unsupported: $cast. Suggest try static cast."); AstNode* newp = new AstConst(nodep->fileline(), 1); newp->dtypeSetSigned32(); // Spec says integer return nodep->replaceWith(newp); @@ -1510,7 +1508,8 @@ private: VL_DO_DANGLING(pushDeletep(nodep), nodep); userIterate(newp, m_vup); } else { - nodep->v3error("Unsupported: Cast to " << nodep->dtp()->prettyTypeName()); + nodep->v3warn(E_UNSUPPORTED, + "Unsupported: Cast to " << nodep->dtp()->prettyTypeName()); nodep->replaceWith(nodep->lhsp()->unlinkFrBack()); } } @@ -1567,7 +1566,8 @@ private: AstBasicDType* underDtp = VN_CAST(nodep->lhsp()->dtypep(), BasicDType); if (!underDtp) underDtp = nodep->lhsp()->dtypep()->basicp(); if (!underDtp) { - nodep->v3error("Unsupported: Size-changing cast on non-basic data type"); + nodep->v3warn(E_UNSUPPORTED, + "Unsupported: Size-changing cast on non-basic data type"); underDtp = VN_CAST(nodep->findLogicBoolDType(), BasicDType); } // A cast propagates its size to the lower expression and is included in the maximum @@ -1636,7 +1636,8 @@ private: && !(VN_IS(nodep->dtypeSkipRefp(), BasicDType) || VN_IS(nodep->dtypeSkipRefp(), NodeArrayDType) || VN_IS(nodep->dtypeSkipRefp(), NodeUOrStructDType))) { - nodep->v3error("Unsupported: Inputs and outputs must be simple data types"); + nodep->v3warn(E_UNSUPPORTED, + "Unsupported: Inputs and outputs must be simple data types"); } if (VN_IS(nodep->dtypep()->skipRefToConstp(), ConstDType)) nodep->isConst(true); // Parameters if implicit untyped inherit from what they are assigned to @@ -1963,7 +1964,7 @@ private: } virtual void visit(AstClassExtends* nodep) VL_OVERRIDE { if (nodep->didWidthAndSet()) return; - nodep->v3error("Unsupported: class extends"); // Member/meth access breaks + nodep->v3warn(E_UNSUPPORTED, "Unsupported: class extends"); // Member/meth access breaks VL_DO_DANGLING(nodep->unlinkFrBack()->deleteTree(), nodep); // nodep->dtypep(iterateEditMoveDTypep(nodep)); // data_type '{ pattern } // userIterateChildren(nodep, NULL); @@ -2114,9 +2115,10 @@ private: } else if (basicp && basicp->isString()) { methodCallString(nodep, basicp); } else { - nodep->v3error("Unsupported: Member call on object '" - << nodep->fromp()->prettyTypeName() << "' which is a '" - << nodep->fromp()->dtypep()->prettyTypeName() << "'"); + nodep->v3warn(E_UNSUPPORTED, "Unsupported: Member call on object '" + << nodep->fromp()->prettyTypeName() + << "' which is a '" + << nodep->fromp()->dtypep()->prettyTypeName() << "'"); } } void methodOkArguments(AstMethodCall* nodep, int minArg, int maxArg) { @@ -2230,7 +2232,8 @@ private: if (vconstp->toUQuad() >= msbdim) msbdim = vconstp->toUQuad(); } if (adtypep->itemsp()->width() > 64 || msbdim >= (1 << 16)) { - nodep->v3error("Unsupported: enum next/prev method on enum with > 10 bits"); + nodep->v3warn(E_UNSUPPORTED, + "Unsupported: enum next/prev method on enum with > 10 bits"); return; } } @@ -2315,8 +2318,8 @@ private: void methodCallLValue(AstMethodCall* nodep, AstNode* childp, bool lvalue) { AstNodeVarRef* varrefp = VN_CAST(childp, NodeVarRef); if (!varrefp) { - nodep->v3error("Unsupported: Non-variable on LHS of built-in method '" - << nodep->prettyName() << "'"); + nodep->v3warn(E_UNSUPPORTED, "Unsupported: Non-variable on LHS of built-in method '" + << nodep->prettyName() << "'"); } else { if (lvalue) varrefp->lvalue(true); } @@ -2345,8 +2348,8 @@ private: NULL); newp->makeStatement(); } else { - nodep->v3error("Unsupported/unknown built-in dynamic array method " - << nodep->prettyNameQ()); + nodep->v3warn(E_UNSUPPORTED, "Unsupported/unknown built-in dynamic array method " + << nodep->prettyNameQ()); } if (newp) { newp->didWidth(true); @@ -2390,8 +2393,9 @@ private: newp->didWidth(true); newp->makeStatement(); } else { - nodep->v3error("Unsupported: Queue .delete(index) method, as is O(n) " - "complexity and slow."); + nodep->v3warn(E_UNSUPPORTED, + "Unsupported: Queue .delete(index) method, as is O(n) " + "complexity and slow."); newp = new AstCMethodHard(nodep->fileline(), nodep->fromp()->unlinkFrBack(), "erase", index_exprp->unlinkFrBack()); newp->protect(false); @@ -2410,7 +2414,8 @@ private: newp->protect(false); newp->makeStatement(); } else { - nodep->v3error( + nodep->v3warn( + E_UNSUPPORTED, "Unsupported: Queue .insert method, as is O(n) complexity and slow."); newp = new AstCMethodHard(nodep->fileline(), nodep->fromp()->unlinkFrBack(), nodep->name(), index_exprp->unlinkFrBack()); @@ -2437,8 +2442,8 @@ private: newp->protect(false); newp->makeStatement(); } else { - nodep->v3error("Unsupported/unknown built-in associative array method " - << nodep->prettyNameQ()); + nodep->v3warn(E_UNSUPPORTED, "Unsupported/unknown built-in associative array method " + << nodep->prettyNameQ()); } if (newp) { newp->didWidth(true); @@ -2709,9 +2714,9 @@ private: } AstNodeDType* dtypep = nodep->dtypep(); if (!dtypep) { - nodep->v3error("Unsupported/Illegal: Assignment pattern" - " member not underneath a supported construct: " - << nodep->backp()->prettyTypeName()); + nodep->v3warn(E_UNSUPPORTED, "Unsupported/Illegal: Assignment pattern" + " member not underneath a supported construct: " + << nodep->backp()->prettyTypeName()); return; } { @@ -2768,9 +2773,10 @@ private: } else if (VN_IS(dtypep, BasicDType) && VN_CAST(dtypep, BasicDType)->isRanged()) { VL_DO_DANGLING(patternBasic(nodep, dtypep, defaultp), nodep); } else { - nodep->v3error( + nodep->v3warn( + E_UNSUPPORTED, "Unsupported: Assignment pattern applies against non struct/union data type: " - << dtypep->prettyDTypeNameQ()); + << dtypep->prettyDTypeNameQ()); } } } @@ -3144,7 +3150,7 @@ private: if (AstBasicDType* basicp = nodep->rhsp()->dtypep()->basicp()) { if (basicp->isEventValue()) { // see t_event_copy.v for commentary on the mess involved - nodep->v3error("Unsupported: assignment of event data type"); + nodep->v3warn(E_UNSUPPORTED, "Unsupported: assignment of event data type"); } } if (AstNewDynamic* dynp = VN_CAST(nodep->rhsp(), NewDynamic)) { @@ -3473,15 +3479,17 @@ private: = VN_CAST(nodep->memp()->dtypep()->skipRefp(), UnpackArrayDType)) { subp = adtypep->subDTypep(); } else { - nodep->memp()->v3error("Unsupported: " - << nodep->verilogKwd() - << " into other than unpacked or associative array"); + nodep->memp()->v3warn(E_UNSUPPORTED, + "Unsupported: " + << nodep->verilogKwd() + << " into other than unpacked or associative array"); } if (subp && (!subp->skipRefp()->basicp() || !subp->skipRefp()->basicp()->keyword().isIntNumeric())) { - nodep->memp()->v3error("Unsupported: " << nodep->verilogKwd() - << " array values must be integral"); + nodep->memp()->v3warn(E_UNSUPPORTED, + "Unsupported: " << nodep->verilogKwd() + << " array values must be integral"); } userIterateAndNext(nodep->lsbp(), WidthVP(SELF, BOTH).p()); userIterateAndNext(nodep->msbp(), WidthVP(SELF, BOTH).p()); @@ -3577,11 +3585,12 @@ private: << conDTypep->prettyDTypeNameQ() << " data type." << endl); } else if (nodep->modVarp()->isTristate()) { if (pinwidth != conwidth) { - nodep->v3error("Unsupported: " << ucfirst(nodep->prettyOperatorName()) - << " to inout signal requires " << pinwidth - << " bits, but connection's " - << nodep->exprp()->prettyTypeName() - << " generates " << conwidth << " bits."); + nodep->v3warn(E_UNSUPPORTED, + "Unsupported: " << ucfirst(nodep->prettyOperatorName()) + << " to inout signal requires " << pinwidth + << " bits, but connection's " + << nodep->exprp()->prettyTypeName() + << " generates " << conwidth << " bits."); // otherwise would need some mess to force both sides to proper size } } @@ -3677,7 +3686,7 @@ private: // Grab width from the output variable (if it's a function) if (nodep->didWidth()) return; if (nodep->doingWidth()) { - nodep->v3error("Unsupported: Recursive function or task call"); + nodep->v3warn(E_UNSUPPORTED, "Unsupported: Recursive function or task call"); nodep->dtypeSetLogicBool(); nodep->didWidth(true); return; @@ -3833,10 +3842,11 @@ private: << portp->prettyTypeName() << " but connection is " << pinp->prettyTypeName() << "."); } else if (portp->isWritable() && pinp->width() != portp->width()) { - pinp->v3error("Unsupported: Function output argument " - << portp->prettyNameQ() << " requires " << portp->width() - << " bits, but connection's " << pinp->prettyTypeName() - << " generates " << pinp->width() << " bits."); + pinp->v3warn(E_UNSUPPORTED, "Unsupported: Function output argument " + << portp->prettyNameQ() << " requires " + << portp->width() << " bits, but connection's " + << pinp->prettyTypeName() << " generates " + << pinp->width() << " bits."); // otherwise would need some mess to force both sides to proper size // (get an ASSIGN with EXTEND on the lhs instead of rhs) } diff --git a/src/V3WidthSel.cpp b/src/V3WidthSel.cpp index 65eff9830..880b3bf80 100644 --- a/src/V3WidthSel.cpp +++ b/src/V3WidthSel.cpp @@ -276,7 +276,9 @@ private: } else if (VN_IS(ddtypep, BasicDType) && ddtypep->isString()) { // SELBIT(string, index) -> GETC(string, index) AstNodeVarRef* varrefp = VN_CAST(fromp, NodeVarRef); - if (!varrefp) nodep->v3error("Unsupported: String array operation on non-variable"); + if (!varrefp) + nodep->v3warn(E_UNSUPPORTED, + "Unsupported: String array operation on non-variable"); AstNode* newp; if (varrefp && varrefp->lvalue()) { newp = new AstGetcRefN(nodep->fileline(), fromp, rhsp); @@ -499,7 +501,7 @@ private: nodep->replaceWith(newp); VL_DO_DANGLING(pushDeletep(nodep), nodep); } else { - nodep->v3error("Unsupported: Slice of non-constant bounds"); + nodep->v3warn(E_UNSUPPORTED, "Unsupported: Slice of non-constant bounds"); } } else if (VN_IS(ddtypep, BasicDType) || VN_IS(ddtypep, PackArrayDType) || (VN_IS(ddtypep, NodeUOrStructDType) diff --git a/src/verilog.l b/src/verilog.l index 0f1925707..f69f896ff 100644 --- a/src/verilog.l +++ b/src/verilog.l @@ -51,8 +51,9 @@ #define ERROR_RSVD_WORD(language) \ do { \ FL; \ - yylval.fl->v3error("Unsupported: " << language << " reserved word not implemented: '" \ - << yytext << "'"); \ + yylval.fl->v3warn(E_UNSUPPORTED, "Unsupported: " << language \ + << " reserved word not implemented: '" \ + << yytext << "'"); \ FL_BRK; \ } while (0) @@ -394,7 +395,8 @@ vnum {vnum1}|{vnum2}|{vnum3}|{vnum4}|{vnum5} "design" { ERROR_RSVD_WORD("Verilog 2001-config"); } "endconfig" { ERROR_RSVD_WORD("Verilog 2001-config"); } "incdir" { ERROR_RSVD_WORD("Verilog 2001-config"); } - "include" { FL; yylval.fl->v3error("Unsupported: Verilog 2001-config reserved word not implemented; suggest you want `include instead: '" << yytext << "'"); + "include" { FL; yylval.fl->v3warn(E_UNSUPPORTED, "Unsupported: Verilog 2001-config reserved word not implemented;" + " suggest you want `include instead: '" << yytext << "'"); FL_BRK; } "instance" { ERROR_RSVD_WORD("Verilog 2001-config"); } "liblist" { ERROR_RSVD_WORD("Verilog 2001-config"); } @@ -934,9 +936,11 @@ vnum {vnum1}|{vnum2}|{vnum3}|{vnum4}|{vnum5} "`default_decay_time"{ws}+[^\n\r]* { FL_FWD; FL_BRK; } // Verilog spec - delays only "`default_nettype"{ws}+"wire" { FL_FWD; PARSEP->lexFileline()->warnOn(V3ErrorCode::I_DEF_NETTYPE_WIRE, true); FL_BRK; } "`default_nettype"{ws}+"none" { FL_FWD; PARSEP->lexFileline()->warnOn(V3ErrorCode::I_DEF_NETTYPE_WIRE, false); FL_BRK; } - "`default_nettype"{ws}+[a-zA-Z0-9]* { FL; yylval.fl->v3error("Unsupported: `default_nettype of other than none or wire: '" << yytext << "'"); + "`default_nettype"{ws}+[a-zA-Z0-9]* { FL; yylval.fl->v3warn(E_UNSUPPORTED, "Unsupported: `default_nettype of other than none or wire: '" + << yytext << "'"); FL_BRK; } - "`default_trireg_strength"{ws}+[^\n\r]* { FL; yylval.fl->v3error("Unsupported: Verilog optional directive not implemented: '" << yytext << "'"); + "`default_trireg_strength"{ws}+[^\n\r]* { FL; yylval.fl->v3warn(E_UNSUPPORTED, "Unsupported: Verilog optional directive not implemented: '" + << yytext << "'"); FL_BRK; } "`delay_mode_distributed" { FL_FWD; FL_BRK; } // Verilog spec - delays only "`delay_mode_path" { FL_FWD; FL_BRK; } // Verilog spec - delays only diff --git a/src/verilog.y b/src/verilog.y index 214131c72..5f840c407 100644 --- a/src/verilog.y +++ b/src/verilog.y @@ -37,10 +37,7 @@ // Pick up new lexer #define yylex PARSEP->tokenToBison -#define BBUNSUP(fl, msg) \ - { \ - if (!v3Global.opt.bboxUnsup()) { (fl)->v3error(msg); } \ - } +#define BBUNSUP(fl, msg) (fl)->v3warn(E_UNSUPPORTED, msg) #define GATEUNSUP(fl, tok) \ { BBUNSUP((fl), "Unsupported: Verilog 1995 gate primitive: " << (tok)); } @@ -3339,7 +3336,8 @@ assignment_pattern: // ==IEEE: assignment_pattern // // also IEEE "''{' array_pattern_key ':' ... | yP_TICKBRA patternMemberList '}' { $$ = new AstPattern($1,$2); } // // IEEE: Not in grammar, but in VMM - | yP_TICKBRA '}' { $$ = new AstPattern($1, NULL); $1->v3error("Unsupported: Empty '{}"); } + | yP_TICKBRA '}' + { $$ = new AstPattern($1, NULL); $1->v3warn(E_UNSUPPORTED, "Unsupported: Empty '{}"); } ; // "datatype id = x {, id = x }" | "yaId = x {, id=x}" is legal diff --git a/test_regress/t/t_alias2_unsup.out b/test_regress/t/t_alias2_unsup.out index 3e8c1e581..f3414eed9 100644 --- a/test_regress/t/t_alias2_unsup.out +++ b/test_regress/t/t_alias2_unsup.out @@ -1,4 +1,4 @@ -%Error: t/t_alias2_unsup.v:39:4: Unsupported: alias statements +%Error-UNSUPPORTED: t/t_alias2_unsup.v:39:4: Unsupported: alias statements 39 | alias b = {a[3:0],a[7:4]}; | ^~~~~ %Error: Exiting due to diff --git a/test_regress/t/t_alias_unsup.out b/test_regress/t/t_alias_unsup.out index 2cee74f3f..c43253fa9 100644 --- a/test_regress/t/t_alias_unsup.out +++ b/test_regress/t/t_alias_unsup.out @@ -1,4 +1,4 @@ -%Error: t/t_alias_unsup.v:46:4: Unsupported: alias statements +%Error-UNSUPPORTED: t/t_alias_unsup.v:46:4: Unsupported: alias statements 46 | alias {a[7:0],a[15:8],a[23:16],a[31:24]} = b; | ^~~~~ %Error: Exiting due to diff --git a/test_regress/t/t_assoc_pattern_unsup.out b/test_regress/t/t_assoc_pattern_unsup.out index 6df0d8f82..05f437fa5 100644 --- a/test_regress/t/t_assoc_pattern_unsup.out +++ b/test_regress/t/t_assoc_pattern_unsup.out @@ -1,5 +1,5 @@ -%Error: t/t_assoc_pattern_unsup.v:19:11: Unsupported: Assignment pattern applies against non struct/union data type: 'string[string]' - : ... In instance t +%Error-UNSUPPORTED: t/t_assoc_pattern_unsup.v:19:11: Unsupported: Assignment pattern applies against non struct/union data type: 'string[string]' + : ... In instance t 19 | a = '{ "f": "fooed", "b": "bared", default: "defaulted" }; | ^~ %Error: Exiting due to diff --git a/test_regress/t/t_assoc_wildcard_unsup.out b/test_regress/t/t_assoc_wildcard_unsup.out index b2d66420c..7d4edc557 100644 --- a/test_regress/t/t_assoc_wildcard_unsup.out +++ b/test_regress/t/t_assoc_wildcard_unsup.out @@ -1,4 +1,4 @@ -%Error: t/t_assoc_wildcard_unsup.v:25:19: Unsupported: [*] wildcard associative arrays +%Error-UNSUPPORTED: t/t_assoc_wildcard_unsup.v:25:19: Unsupported: [*] wildcard associative arrays 25 | string a [*]; | ^~ %Error: Exiting due to diff --git a/test_regress/t/t_castdyn.out b/test_regress/t/t_castdyn.out index 1f5ea029e..8f9e32b5e 100644 --- a/test_regress/t/t_castdyn.out +++ b/test_regress/t/t_castdyn.out @@ -1,9 +1,9 @@ -%Error: t/t_castdyn.v:12:11: Unsupported: $cast. Suggest try static cast. - : ... In instance t +%Error-UNSUPPORTED: t/t_castdyn.v:12:11: Unsupported: $cast. Suggest try static cast. + : ... In instance t 12 | i = $cast(a, b); | ^~~~~ -%Error: t/t_castdyn.v:14:7: Unsupported: $cast. Suggest try static cast. - : ... In instance t +%Error-UNSUPPORTED: t/t_castdyn.v:14:7: Unsupported: $cast. Suggest try static cast. + : ... In instance t 14 | $cast(a, b); | ^~~~~ %Error: Exiting due to diff --git a/test_regress/t/t_class_class.out b/test_regress/t/t_class_class.out index 65f4f5ce1..0ea383361 100644 --- a/test_regress/t/t_class_class.out +++ b/test_regress/t/t_class_class.out @@ -1,4 +1,4 @@ -%Error: t/t_class_class.v:12:4: Unsupported: class within class +%Error-UNSUPPORTED: t/t_class_class.v:12:4: Unsupported: class within class 12 | class SubCls; | ^~~~~ %Error: Exiting due to diff --git a/test_regress/t/t_class_extends.out b/test_regress/t/t_class_extends.out index 932119d8a..81442acc4 100644 --- a/test_regress/t/t_class_extends.out +++ b/test_regress/t/t_class_extends.out @@ -1,16 +1,16 @@ -%Error: t/t_class_extends.v:13:21: Unsupported: class extends +%Error-UNSUPPORTED: t/t_class_extends.v:13:21: Unsupported: class extends 13 | class Base1 extends Base0; | ^~~~~ %Error: t/t_class_extends.v:13:21: Found definition of 'Base0' as a CLASS but expected a variable 13 | class Base1 extends Base0; | ^~~~~ -%Error: t/t_class_extends.v:17:21: Unsupported: class extends +%Error-UNSUPPORTED: t/t_class_extends.v:17:21: Unsupported: class extends 17 | class Base2 extends Base1; | ^~~~~ %Error: t/t_class_extends.v:17:21: Found definition of 'Base1' as a CLASS but expected a variable 17 | class Base2 extends Base1; | ^~~~~ -%Error: t/t_class_extends.v:21:19: Unsupported: class extends +%Error-UNSUPPORTED: t/t_class_extends.v:21:19: Unsupported: class extends 21 | class Cls extends Base2; | ^~~~~ %Error: t/t_class_extends.v:21:19: Found definition of 'Base2' as a CLASS but expected a variable diff --git a/test_regress/t/t_class_extends_bad.out b/test_regress/t/t_class_extends_bad.out index 41a715c41..b382ead9d 100644 --- a/test_regress/t/t_class_extends_bad.out +++ b/test_regress/t/t_class_extends_bad.out @@ -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), and unsupported for interface classes. +%Error-UNSUPPORTED: t/t_class_extends_bad.v:13:26: Multiple inheritance illegal on non-interface classes (IEEE 1800-2017 8.13), and unsupported for interface classes. 13 | class Cls extends Base1, Base2; | ^~~~~ %Error: Exiting due to diff --git a/test_regress/t/t_class_member_bad.out b/test_regress/t/t_class_member_bad.out index 22a47741b..eb6537580 100644 --- a/test_regress/t/t_class_member_bad.out +++ b/test_regress/t/t_class_member_bad.out @@ -1,4 +1,4 @@ -%Error: t/t_class_member_bad.v:11:20: Unsupported: class extends +%Error-UNSUPPORTED: t/t_class_member_bad.v:11:20: Unsupported: class extends 11 | class Cls2 extends Base1; | ^~~~~ %Error: t/t_class_member_bad.v:11:20: Found definition of 'Base1' as a CLASS but expected a variable diff --git a/test_regress/t/t_class_method_bad.out b/test_regress/t/t_class_method_bad.out index 67d0928c8..88dcdf4f4 100644 --- a/test_regress/t/t_class_method_bad.out +++ b/test_regress/t/t_class_method_bad.out @@ -1,4 +1,4 @@ -%Error: t/t_class_method_bad.v:11:20: Unsupported: class extends +%Error-UNSUPPORTED: t/t_class_method_bad.v:11:20: Unsupported: class extends 11 | class Cls2 extends Base1; | ^~~~~ %Error: t/t_class_method_bad.v:11:20: Found definition of 'Base1' as a CLASS but expected a variable diff --git a/test_regress/t/t_class_name.out b/test_regress/t/t_class_name.out index 3543b0eaf..f502aeddb 100644 --- a/test_regress/t/t_class_name.out +++ b/test_regress/t/t_class_name.out @@ -1,4 +1,4 @@ -%Error: t/t_class_name.v:12:4: Unsupported: 'static' class item +%Error-UNSUPPORTED: t/t_class_name.v:12:4: Unsupported: 'static' class item 12 | static task static_name; | ^~~~~~ %Error: Exiting due to diff --git a/test_regress/t/t_class_param.out b/test_regress/t/t_class_param.out index caccfa6de..f4aba8765 100644 --- a/test_regress/t/t_class_param.out +++ b/test_regress/t/t_class_param.out @@ -1,4 +1,4 @@ -%Error: t/t_class_param.v:20:11: Unsupported: Parameter classes +%Error-UNSUPPORTED: t/t_class_param.v:20:11: Unsupported: Parameter classes 20 | Cls #(.P(4)) c4; | ^ %Error: Exiting due to diff --git a/test_regress/t/t_class_static_order.out b/test_regress/t/t_class_static_order.out index e1f427b0a..9314c7c1a 100644 --- a/test_regress/t/t_class_static_order.out +++ b/test_regress/t/t_class_static_order.out @@ -1,10 +1,10 @@ -%Error: t/t_class_static_order.v:23:4: Unsupported: 'static' class item +%Error-UNSUPPORTED: t/t_class_static_order.v:23:4: Unsupported: 'static' class item 23 | static ClsZ z = new; | ^~~~~~ -%Error: t/t_class_static_order.v:34:4: Unsupported: 'static' class item +%Error-UNSUPPORTED: t/t_class_static_order.v:34:4: Unsupported: 'static' class item 34 | static ClsA a = new; | ^~~~~~ -%Error: t/t_class_static_order.v:35:4: Unsupported: 'static' class item +%Error-UNSUPPORTED: t/t_class_static_order.v:35:4: Unsupported: 'static' class item 35 | static ClsB b = new; | ^~~~~~ %Error: Exiting due to diff --git a/test_regress/t/t_class_typedef.out b/test_regress/t/t_class_typedef.out index 00b8490ea..bc468849c 100644 --- a/test_regress/t/t_class_typedef.out +++ b/test_regress/t/t_class_typedef.out @@ -1,4 +1,4 @@ -%Error: t/t_class_typedef.v:14:24: Unsupported: Parameterized classes +%Error-UNSUPPORTED: t/t_class_typedef.v:14:24: Unsupported: Parameterized classes 14 | uvm_resource_types#(1,2,3)::rsrc_q_t rtab_paramed [string]; | ^ %Error: Exiting due to diff --git a/test_regress/t/t_class_unsup_bad.out b/test_regress/t/t_class_unsup_bad.out index e58a257ca..5d0eef765 100644 --- a/test_regress/t/t_class_unsup_bad.out +++ b/test_regress/t/t_class_unsup_bad.out @@ -1,31 +1,31 @@ -%Error: t/t_class_unsup_bad.v:7:1: Unsupported: virtual interface +%Error-UNSUPPORTED: t/t_class_unsup_bad.v:7:1: Unsupported: virtual interface 7 | virtual interface vi_t vi; | ^~~~~~~ -%Error: t/t_class_unsup_bad.v:8:1: Unsupported: virtual data type +%Error-UNSUPPORTED: t/t_class_unsup_bad.v:8:1: Unsupported: virtual data type 8 | virtual vi_t vi2; | ^~~~~~~ -%Error: t/t_class_unsup_bad.v:14:26: Unsupported: class parameters +%Error-UNSUPPORTED: t/t_class_unsup_bad.v:14:26: Unsupported: class parameters 14 | localparam LOCPAR = 10; | ^ -%Error: t/t_class_unsup_bad.v:25:4: Unsupported: virtual class member qualifier +%Error-UNSUPPORTED: t/t_class_unsup_bad.v:25:4: Unsupported: virtual class member qualifier 25 | virtual function void func_virtual; endfunction | ^~~~~~~ -%Error: t/t_class_unsup_bad.v:26:4: Unsupported: pure virtual class method +%Error-UNSUPPORTED: t/t_class_unsup_bad.v:26:4: Unsupported: pure virtual class method 26 | pure virtual function void func_pure_virtual; | ^~~~ -%Error: t/t_class_unsup_bad.v:27:4: Unsupported: automatic class member qualifier +%Error-UNSUPPORTED: t/t_class_unsup_bad.v:27:4: Unsupported: automatic class member qualifier 27 | automatic function void func_automatic; endfunction | ^~~~~~~~~ -%Error: t/t_class_unsup_bad.v:28:4: Unsupported: const class member qualifier +%Error-UNSUPPORTED: t/t_class_unsup_bad.v:28:4: Unsupported: const class member qualifier 28 | const function void func_const; endfunction | ^~~~~ -%Error: t/t_class_unsup_bad.v:29:4: Unsupported: extern class method prototype +%Error-UNSUPPORTED: t/t_class_unsup_bad.v:29:4: Unsupported: extern class method prototype 29 | extern task exttask; | ^~~~~~ -%Error: t/t_class_unsup_bad.v:32:1: Unsupported: virtual classes +%Error-UNSUPPORTED: t/t_class_unsup_bad.v:32:1: Unsupported: virtual classes 32 | virtual class VC; | ^~~~~~~ -%Error: t/t_class_unsup_bad.v:42:4: Unsupported: virtual class member qualifier +%Error-UNSUPPORTED: t/t_class_unsup_bad.v:42:4: Unsupported: virtual class member qualifier 42 | virtual function uvm_root get_root(); | ^~~~~~~ %Error: Exiting due to diff --git a/test_regress/t/t_class_vparam_unsup.out b/test_regress/t/t_class_vparam_unsup.out index 9025acc4b..22a63a886 100644 --- a/test_regress/t/t_class_vparam_unsup.out +++ b/test_regress/t/t_class_vparam_unsup.out @@ -1,10 +1,10 @@ -%Error: t/t_class_vparam_unsup.v:12:1: Unsupported: virtual classes +%Error-UNSUPPORTED: t/t_class_vparam_unsup.v:12:1: Unsupported: virtual classes 12 | virtual class vclass #(type CTYPE_t = arg_class_t); | ^~~~~~~ -%Error: t/t_class_vparam_unsup.v:13:58: Unsupported: Parameter classes +%Error-UNSUPPORTED: t/t_class_vparam_unsup.v:13:58: Unsupported: Parameter classes 13 | pure virtual function void funcname(paramed_class_t #(CTYPE_t) v); | ^~~~~~~ -%Error: t/t_class_vparam_unsup.v:13:4: Unsupported: pure virtual class method +%Error-UNSUPPORTED: t/t_class_vparam_unsup.v:13:4: Unsupported: pure virtual class method 13 | pure virtual function void funcname(paramed_class_t #(CTYPE_t) v); | ^~~~ %Error: Exiting due to diff --git a/test_regress/t/t_event_control_unsup.out b/test_regress/t/t_event_control_unsup.out index c3920aa63..7e0f28123 100644 --- a/test_regress/t/t_event_control_unsup.out +++ b/test_regress/t/t_event_control_unsup.out @@ -1,9 +1,9 @@ -%Error: t/t_event_control_unsup.v:14:7: Unsupported: timing control statement in this location - : ... Suggest have one timing control statement per procedure, at the top of the procedure +%Error-UNSUPPORTED: t/t_event_control_unsup.v:14:7: Unsupported: timing control statement in this location + : ... Suggest have one timing control statement per procedure, at the top of the procedure 14 | @(clk); | ^ -%Error: t/t_event_control_unsup.v:16:7: Unsupported: timing control statement in this location - : ... Suggest have one timing control statement per procedure, at the top of the procedure +%Error-UNSUPPORTED: t/t_event_control_unsup.v:16:7: Unsupported: timing control statement in this location + : ... Suggest have one timing control statement per procedure, at the top of the procedure 16 | @(clk); | ^ %Error: Exiting due to diff --git a/test_regress/t/t_event_copy.out b/test_regress/t/t_event_copy.out index 3c2a9775c..3e54190e6 100644 --- a/test_regress/t/t_event_copy.out +++ b/test_regress/t/t_event_copy.out @@ -1,9 +1,9 @@ -%Error: t/t_event_copy.v:100:13: Unsupported: assignment of event data type - : ... In instance t +%Error-UNSUPPORTED: t/t_event_copy.v:100:13: Unsupported: assignment of event data type + : ... In instance t 100 | e4 = e3; | ^ -%Error: t/t_event_copy.v:101:13: Unsupported: assignment of event data type - : ... In instance t +%Error-UNSUPPORTED: t/t_event_copy.v:101:13: Unsupported: assignment of event data type + : ... In instance t 101 | e3 = e2; | ^ %Error: Exiting due to diff --git a/test_regress/t/t_flag_main_sc_bad.out b/test_regress/t/t_flag_main_sc_bad.out index aa5c05318..13ba2e390 100644 --- a/test_regress/t/t_flag_main_sc_bad.out +++ b/test_regress/t/t_flag_main_sc_bad.out @@ -1,2 +1,2 @@ -%Error: --main not usable with SystemC. Suggest see examples for sc_main(). +%Error-UNSUPPORTED: --main not usable with SystemC. Suggest see examples for sc_main(). %Error: Exiting due to diff --git a/test_regress/t/t_for_comma_bad.out b/test_regress/t/t_for_comma_bad.out index 21a3f739f..976f2036e 100644 --- a/test_regress/t/t_for_comma_bad.out +++ b/test_regress/t/t_for_comma_bad.out @@ -1,28 +1,28 @@ -%Error: t/t_for_comma_bad.v:14:21: Unsupported: for loop step after the first comma +%Error-UNSUPPORTED: t/t_for_comma_bad.v:14:21: Unsupported: for loop step after the first comma 14 | for (; ; a=a+1, b=b+1) ; | ^ -%Error: t/t_for_comma_bad.v:17:24: Unsupported: for loop step after the first comma +%Error-UNSUPPORTED: t/t_for_comma_bad.v:17:24: Unsupported: for loop step after the first comma 17 | for (; a<1; a=a+1, b=b+1) ; | ^ -%Error: t/t_for_comma_bad.v:20:27: Unsupported: for loop step after the first comma +%Error-UNSUPPORTED: t/t_for_comma_bad.v:20:27: Unsupported: for loop step after the first comma 20 | for (a=0; a<1; a=a+1, b=b+1) ; | ^ -%Error: t/t_for_comma_bad.v:23:35: Unsupported: for loop step after the first comma +%Error-UNSUPPORTED: t/t_for_comma_bad.v:23:35: Unsupported: for loop step after the first comma 23 | for (integer a=0; a<1; a=a+1, b=b+1) ; | ^ -%Error: t/t_for_comma_bad.v:26:39: Unsupported: for loop step after the first comma +%Error-UNSUPPORTED: t/t_for_comma_bad.v:26:39: Unsupported: for loop step after the first comma 26 | for (var integer a=0; a<1; a=a+1, b=b+1) ; | ^ -%Error: t/t_for_comma_bad.v:27:23: Unsupported: for loop initialization after the first comma +%Error-UNSUPPORTED: t/t_for_comma_bad.v:27:23: Unsupported: for loop initialization after the first comma 27 | for (integer a=0, integer b=0; a<1; ) ; | ^ -%Error: t/t_for_comma_bad.v:28:23: Unsupported: for loop initialization after the first comma +%Error-UNSUPPORTED: t/t_for_comma_bad.v:28:23: Unsupported: for loop initialization after the first comma 28 | for (integer a=0, integer b=0; a<1; a=a+1) ; | ^ -%Error: t/t_for_comma_bad.v:29:23: Unsupported: for loop initialization after the first comma +%Error-UNSUPPORTED: t/t_for_comma_bad.v:29:23: Unsupported: for loop initialization after the first comma 29 | for (integer a=0, integer b=0; a<1; a=a+1, b=b+1) ; | ^ -%Error: t/t_for_comma_bad.v:29:48: Unsupported: for loop step after the first comma +%Error-UNSUPPORTED: t/t_for_comma_bad.v:29:48: Unsupported: for loop step after the first comma 29 | for (integer a=0, integer b=0; a<1; a=a+1, b=b+1) ; | ^ %Error: Exiting due to diff --git a/test_regress/t/t_fork.out b/test_regress/t/t_fork.out index 5d76dd536..03e479d9f 100644 --- a/test_regress/t/t_fork.out +++ b/test_regress/t/t_fork.out @@ -1,5 +1,5 @@ -%Error: t/t_fork.v:10:14: Unsupported: fork statements - : ... In instance t +%Error-UNSUPPORTED: t/t_fork.v:10:14: Unsupported: fork statements + : ... In instance t 10 | fork : fblk | ^~~~ %Error: Exiting due to diff --git a/test_regress/t/t_func_bad.out b/test_regress/t/t_func_bad.out index bf300bf2e..68a2e95ab 100644 --- a/test_regress/t/t_func_bad.out +++ b/test_regress/t/t_func_bad.out @@ -10,8 +10,8 @@ : ... In instance t 11 | x; | ^ -%Error: t/t_func_bad.v:11:7: Unsupported: Function output argument 'y' requires 1 bits, but connection's CONST '?32?h0' generates 32 bits. - : ... In instance t +%Error-UNSUPPORTED: t/t_func_bad.v:11:7: Unsupported: Function output argument 'y' requires 1 bits, but connection's CONST '?32?h0' generates 32 bits. + : ... In instance t 11 | x; | ^ %Error: t/t_func_bad.v:14:17: No such argument 'no_such' in function call to FUNC 'f' diff --git a/test_regress/t/t_func_bad2.out b/test_regress/t/t_func_bad2.out index c354564b7..0666509d5 100644 --- a/test_regress/t/t_func_bad2.out +++ b/test_regress/t/t_func_bad2.out @@ -1,5 +1,5 @@ -%Error: t/t_func_bad2.v:8:13: Unsupported: Recursive function or task call - : ... In instance t +%Error-UNSUPPORTED: t/t_func_bad2.v:8:13: Unsupported: Recursive function or task call + : ... In instance t 8 | function recurse; | ^~~~~~~ %Error: Exiting due to diff --git a/test_regress/t/t_func_wide_out_bad.out b/test_regress/t/t_func_wide_out_bad.out index 956791a50..19c2df709 100644 --- a/test_regress/t/t_func_wide_out_bad.out +++ b/test_regress/t/t_func_wide_out_bad.out @@ -1,5 +1,5 @@ -%Error: t/t_func_wide_out_bad.v:17:12: Unsupported: Function output argument 'data' requires 4352 bits, but connection's VARREF 'msg' generates 4350 bits. - : ... In instance t +%Error-UNSUPPORTED: t/t_func_wide_out_bad.v:17:12: Unsupported: Function output argument 'data' requires 4352 bits, but connection's VARREF 'msg' generates 4350 bits. + : ... In instance t 17 | func(msg); | ^~~ %Error: Exiting due to diff --git a/test_regress/t/t_fuzz_always_bad.out b/test_regress/t/t_fuzz_always_bad.out index 6da8a3f17..c5691ffd4 100644 --- a/test_regress/t/t_fuzz_always_bad.out +++ b/test_regress/t/t_fuzz_always_bad.out @@ -4,7 +4,7 @@ %Error: t/t_fuzz_always_bad.v:10:19: Can't find definition of task/function: 'h' 10 | always @ c.a c:h; | ^ -%Error: t/t_fuzz_always_bad.v:10:14: Unsupported: Complex statement in sensitivity list +%Error-UNSUPPORTED: t/t_fuzz_always_bad.v:10:14: Unsupported: Complex statement in sensitivity list 10 | always @ c.a c:h; | ^ %Error: Exiting due to diff --git a/test_regress/t/t_fuzz_genintf_bad.out b/test_regress/t/t_fuzz_genintf_bad.out index bd63bfbc4..e9ecf42b4 100644 --- a/test_regress/t/t_fuzz_genintf_bad.out +++ b/test_regress/t/t_fuzz_genintf_bad.out @@ -1,5 +1,5 @@ -%Error: t/t_fuzz_genintf_bad.v:24:12: Unsupported: Member call on object 'VARREF 'j'' which is a 'BASICDTYPE 'integer'' - : ... In instance t +%Error-UNSUPPORTED: t/t_fuzz_genintf_bad.v:24:12: Unsupported: Member call on object 'VARREF 'j'' which is a 'BASICDTYPE 'integer'' + : ... In instance t 24 | j.e(0), | ^ %Error: Internal Error: t/t_fuzz_genintf_bad.v:24:11: ../V3Width.cpp:#: Unlinked pin data type diff --git a/test_regress/t/t_fuzz_triand_bad.out b/test_regress/t/t_fuzz_triand_bad.out index 4e3319976..c143c25ba 100644 --- a/test_regress/t/t_fuzz_triand_bad.out +++ b/test_regress/t/t_fuzz_triand_bad.out @@ -1,5 +1,5 @@ -%Error: t/t_fuzz_triand_bad.v:8:12: Unsupported: Member call on object 'VARREF 'g'' which is a 'BASICDTYPE 'logic'' - : ... In instance t +%Error-UNSUPPORTED: t/t_fuzz_triand_bad.v:8:12: Unsupported: Member call on object 'VARREF 'g'' which is a 'BASICDTYPE 'logic'' + : ... In instance t 8 | tri g=g.and.g; | ^~~ %Error: Internal Error: t/t_fuzz_triand_bad.v:8:12: ../V3Width.cpp:#: Unlinked data type diff --git a/test_regress/t/t_gen_defparam_unsup_bad.out b/test_regress/t/t_gen_defparam_unsup_bad.out index 663a56e5c..c876f67af 100644 --- a/test_regress/t/t_gen_defparam_unsup_bad.out +++ b/test_regress/t/t_gen_defparam_unsup_bad.out @@ -1,4 +1,4 @@ -%Error: t/t_gen_defparam_unsup_bad.v:9:16: Unsupported: defparam with more than one dot +%Error-UNSUPPORTED: t/t_gen_defparam_unsup_bad.v:9:16: Unsupported: defparam with more than one dot 9 | defparam a.b.W = 3; | ^ %Error: t/t_gen_defparam_unsup_bad.v:9:17: syntax error, unexpected IDENTIFIER, expecting ',' or ';' diff --git a/test_regress/t/t_increment_bad.out b/test_regress/t/t_increment_bad.out index 5664201ed..1c07b5c25 100644 --- a/test_regress/t/t_increment_bad.out +++ b/test_regress/t/t_increment_bad.out @@ -1,22 +1,22 @@ -%Error: t/t_increment_bad.v:15:31: Unsupported: Incrementation in this context. +%Error-UNSUPPORTED: t/t_increment_bad.v:15:31: Unsupported: Incrementation in this context. 15 | if (0 && test_string[pos++] != "e"); | ^~ -%Error: t/t_increment_bad.v:16:19: Unsupported: Incrementation in this context. +%Error-UNSUPPORTED: t/t_increment_bad.v:16:19: Unsupported: Incrementation in this context. 16 | if (1 || pos-- != 1); | ^~ -%Error: t/t_increment_bad.v:18:17: Unsupported: Incrementation in this context. +%Error-UNSUPPORTED: t/t_increment_bad.v:18:17: Unsupported: Incrementation in this context. 18 | if (a <-> --b); | ^~ -%Error: t/t_increment_bad.v:19:16: Unsupported: Incrementation in this context. +%Error-UNSUPPORTED: t/t_increment_bad.v:19:16: Unsupported: Incrementation in this context. 19 | if (0 -> ++b); | ^~ -%Error: t/t_increment_bad.v:21:24: Unsupported: Incrementation in this context. +%Error-UNSUPPORTED: t/t_increment_bad.v:21:24: Unsupported: Incrementation in this context. 21 | pos = (a > 0) ? a++ : --b; | ^~ -%Error: t/t_increment_bad.v:21:29: Unsupported: Incrementation in this context. +%Error-UNSUPPORTED: t/t_increment_bad.v:21:29: Unsupported: Incrementation in this context. 21 | pos = (a > 0) ? a++ : --b; | ^~ -%Error: t/t_increment_bad.v:23:24: Unsupported: Incrementation in this context. +%Error-UNSUPPORTED: t/t_increment_bad.v:23:24: Unsupported: Incrementation in this context. 23 | pos = array[0][0]++; | ^~ %Error: Exiting due to diff --git a/test_regress/t/t_inst_recurse2_bad.out b/test_regress/t/t_inst_recurse2_bad.out index e44e2eaed..dbd22cb94 100644 --- a/test_regress/t/t_inst_recurse2_bad.out +++ b/test_regress/t/t_inst_recurse2_bad.out @@ -1,5 +1,5 @@ -%Error: t/t_inst_recurse2_bad.v:18:8: Unsupported: Identically recursive module (module instantiates itself, without changing parameters): 'looped' - : ... In instance t.looped.looped +%Error-UNSUPPORTED: t/t_inst_recurse2_bad.v:18:8: Unsupported: Identically recursive module (module instantiates itself, without changing parameters): 'looped' + : ... In instance t.looped.looped 18 | module looped ( ); | ^~~~~~ %Error: Exiting due to diff --git a/test_regress/t/t_inst_recurse_bad.out b/test_regress/t/t_inst_recurse_bad.out index 2b2919a8c..68085b345 100644 --- a/test_regress/t/t_inst_recurse_bad.out +++ b/test_regress/t/t_inst_recurse_bad.out @@ -1,5 +1,5 @@ -%Error: t/t_inst_recurse_bad.v:18:8: Unsupported: Recursive multiple modules (module instantiates something leading back to itself): 'looped' - ... note: self-recursion (module instantiating itself directly) is supported. +%Error-UNSUPPORTED: t/t_inst_recurse_bad.v:18:8: Unsupported: Recursive multiple modules (module instantiates something leading back to itself): 'looped' + ... note: self-recursion (module instantiating itself directly) is supported. 18 | module looped ( ); | ^~~~~~ %Error: Exiting due to diff --git a/test_regress/t/t_interface_top_bad.out b/test_regress/t/t_interface_top_bad.out index 118e343f0..6947f5dea 100644 --- a/test_regress/t/t_interface_top_bad.out +++ b/test_regress/t/t_interface_top_bad.out @@ -1,4 +1,4 @@ -%Error: t/t_interface_top_bad.v:17:19: Unsupported: Interfaced port on top level module +%Error-UNSUPPORTED: t/t_interface_top_bad.v:17:19: Unsupported: Interfaced port on top level module 17 | ifc.counter_mp c_data | ^~~~~~ %Error: t/t_interface_top_bad.v:17:4: Parent cell's interface is not found: 'ifc' diff --git a/test_regress/t/t_lint_input_eq_bad.out b/test_regress/t/t_lint_input_eq_bad.out index c12a38f17..f189a6b88 100644 --- a/test_regress/t/t_lint_input_eq_bad.out +++ b/test_regress/t/t_lint_input_eq_bad.out @@ -1,4 +1,4 @@ -%Error: t/t_lint_input_eq_bad.v:10:15: Unsupported: Default value on module input: 'i2' +%Error-UNSUPPORTED: t/t_lint_input_eq_bad.v:10:15: Unsupported: Default value on module input: 'i2' 10 | input wire i2 = i | ^~ %Error: Exiting due to diff --git a/test_regress/t/t_lint_rsvd_bad.out b/test_regress/t/t_lint_rsvd_bad.out index 8cf338ee9..e1200e595 100644 --- a/test_regress/t/t_lint_rsvd_bad.out +++ b/test_regress/t/t_lint_rsvd_bad.out @@ -1,10 +1,10 @@ -%Error: t/t_lint_rsvd_bad.v:7:1: Unsupported: Verilog 2001-config reserved word not implemented: 'config' +%Error-UNSUPPORTED: t/t_lint_rsvd_bad.v:7:1: Unsupported: Verilog 2001-config reserved word not implemented: 'config' 7 | config cfgBad; | ^~~~~~ %Error: t/t_lint_rsvd_bad.v:7:8: syntax error, unexpected IDENTIFIER 7 | config cfgBad; | ^~~~~~ -%Error: t/t_lint_rsvd_bad.v:8:1: Unsupported: Verilog 2001-config reserved word not implemented: 'endconfig' +%Error-UNSUPPORTED: t/t_lint_rsvd_bad.v:8:1: Unsupported: Verilog 2001-config reserved word not implemented: 'endconfig' 8 | endconfig | ^~~~~~~~~ %Error: Exiting due to diff --git a/test_regress/t/t_math_countbits_bad.out b/test_regress/t/t_math_countbits_bad.out index 9e676ad75..def07da32 100755 --- a/test_regress/t/t_math_countbits_bad.out +++ b/test_regress/t/t_math_countbits_bad.out @@ -1,4 +1,4 @@ -%Error: t/t_math_countbits_bad.v:14:54: Unsupported: $countbits with more than 3 control fields +%Error-UNSUPPORTED: t/t_math_countbits_bad.v:14:54: Unsupported: $countbits with more than 3 control fields 14 | assign count = $countbits(32'h123456, '0, '1, 'x, 'z); | ^~ %Error: Exiting due to diff --git a/test_regress/t/t_mod_interface_array3.out b/test_regress/t/t_mod_interface_array3.out index 80bde9afc..f0fd8215e 100644 --- a/test_regress/t/t_mod_interface_array3.out +++ b/test_regress/t/t_mod_interface_array3.out @@ -1,7 +1,7 @@ -%Error: t/t_mod_interface_array3.v:25:20: Unsupported: Multidimensional cells/interfaces. +%Error-UNSUPPORTED: t/t_mod_interface_array3.v:25:20: Unsupported: Multidimensional cells/interfaces. 25 | a_if iface [2:0][1:0]; | ^ -%Error: t/t_mod_interface_array3.v:27:18: Unsupported: Multidimensional cells/interfaces. +%Error-UNSUPPORTED: t/t_mod_interface_array3.v:27:18: Unsupported: Multidimensional cells/interfaces. 27 | sub i_sub[2:0][1:0] (.s(str)); | ^ %Error: Exiting due to diff --git a/test_regress/t/t_param_in_func_bad.out b/test_regress/t/t_param_in_func_bad.out index 6e4c64cef..f152cd026 100644 --- a/test_regress/t/t_param_in_func_bad.out +++ b/test_regress/t/t_param_in_func_bad.out @@ -1,4 +1,4 @@ -%Error: t/t_param_in_func_bad.v:24:26: Unsupported: Parameters in functions. +%Error-UNSUPPORTED: t/t_param_in_func_bad.v:24:26: Unsupported: Parameters in functions 24 | localparam logic[7:0] digits[10] | ^~~~~~ %Error: t/t_param_in_func_bad.v:28:11: Can't find definition of variable: 'digits' diff --git a/test_regress/t/t_param_noval_bad.out b/test_regress/t/t_param_noval_bad.out index 82cc48819..988947e3a 100644 --- a/test_regress/t/t_param_noval_bad.out +++ b/test_regress/t/t_param_noval_bad.out @@ -15,8 +15,8 @@ : ... In instance t 10 | for (j=0; P; j++) | ^~~ -%Error: t/t_param_noval_bad.v:10:7: Unsupported: Can't unroll generate for; Unable to unroll loop - : ... In instance t +%Error-UNSUPPORTED: t/t_param_noval_bad.v:10:7: Unsupported: Can't unroll generate for; Unable to unroll loop + : ... In instance t 10 | for (j=0; P; j++) | ^~~ %Error: t/t_param_noval_bad.v:10:7: For loop doesn't have genvar index, or is malformed diff --git a/test_regress/t/t_past_unsup_bad.out b/test_regress/t/t_past_unsup_bad.out index d4a86b845..6d635d12b 100644 --- a/test_regress/t/t_past_unsup_bad.out +++ b/test_regress/t/t_past_unsup_bad.out @@ -1,4 +1,4 @@ -%Error: t/t_past_unsup_bad.v:13:11: Unsupported: $past expr2 and clock arguments +%Error-UNSUPPORTED: t/t_past_unsup_bad.v:13:11: Unsupported: $past expr2 and clock arguments 13 | if ($past(d, 0, 0, 0)) $stop; | ^~~~~ %Error: Exiting due to diff --git a/test_regress/t/t_prot_lib_inout_bad.out b/test_regress/t/t_prot_lib_inout_bad.out index 681f98209..b33360f10 100644 --- a/test_regress/t/t_prot_lib_inout_bad.out +++ b/test_regress/t/t_prot_lib_inout_bad.out @@ -1,4 +1,4 @@ -%Error: t/t_prot_lib_inout_bad.v:9:28: Unsupported: protect-lib port direction: INOUT +%Error-UNSUPPORTED: t/t_prot_lib_inout_bad.v:9:28: Unsupported: protect-lib port direction: INOUT 9 | inout z, | ^ %Error: Exiting due to diff --git a/test_regress/t/t_prot_lib_unpacked_bad.out b/test_regress/t/t_prot_lib_unpacked_bad.out index afd642456..f48917027 100644 --- a/test_regress/t/t_prot_lib_unpacked_bad.out +++ b/test_regress/t/t_prot_lib_unpacked_bad.out @@ -1,7 +1,7 @@ -%Error: t/t_prot_lib_unpacked_bad.v:7:28: Unsupported: unpacked arrays with protect-lib on 'unpacked_in' +%Error-UNSUPPORTED: t/t_prot_lib_unpacked_bad.v:7:28: Unsupported: unpacked arrays with protect-lib on 'unpacked_in' 7 | input unpacked_in [7:0], | ^~~~~~~~~~~ -%Error: t/t_prot_lib_unpacked_bad.v:8:28: Unsupported: unpacked arrays with protect-lib on 'unpacked_out' +%Error-UNSUPPORTED: t/t_prot_lib_unpacked_bad.v:8:28: Unsupported: unpacked arrays with protect-lib on 'unpacked_out' 8 | output unpacked_out [7:0]); | ^~~~~~~~~~~~ %Error: Exiting due to diff --git a/test_regress/t/t_protect_ids_bad.out b/test_regress/t/t_protect_ids_bad.out index ae7d64f3b..da5ad8345 100644 --- a/test_regress/t/t_protect_ids_bad.out +++ b/test_regress/t/t_protect_ids_bad.out @@ -1,5 +1,5 @@ -%Error: Unsupported: Using --protect-ids with --public - ... Suggest remove --public. +%Error-UNSUPPORTED: Unsupported: Using --protect-ids with --public + ... Suggest remove --public. %Warning-INSECURE: Using --protect-ids with --trace may expose private design details ... Suggest remove --trace. ... Use "/* verilator lint_off INSECURE */" and lint_on around source to disable this message. diff --git a/test_regress/t/t_queue_unsup_bad.out b/test_regress/t/t_queue_unsup_bad.out index 7ba5976d4..91430c035 100644 --- a/test_regress/t/t_queue_unsup_bad.out +++ b/test_regress/t/t_queue_unsup_bad.out @@ -1,37 +1,37 @@ -%Error: t/t_queue_unsup_bad.v:21:11: Unsupported: Replication to form 'string[$]' data type - : ... In instance t +%Error-UNSUPPORTED: t/t_queue_unsup_bad.v:21:11: Unsupported: Replication to form 'string[$]' data type + : ... In instance t 21 | q = {"q", "b", "c", "d", "e", "f"}; | ^ -%Error: t/t_queue_unsup_bad.v:24:9: Unsupported: Queue .delete(index) method, as is O(n) complexity and slow. - : ... In instance t +%Error-UNSUPPORTED: t/t_queue_unsup_bad.v:24:9: Unsupported: Queue .delete(index) method, as is O(n) complexity and slow. + : ... In instance t 24 | q.delete(1); | ^~~~~~ -%Error: t/t_queue_unsup_bad.v:28:9: Unsupported: Queue .insert method, as is O(n) complexity and slow. - : ... In instance t +%Error-UNSUPPORTED: t/t_queue_unsup_bad.v:28:9: Unsupported: Queue .insert method, as is O(n) complexity and slow. + : ... In instance t 28 | q.insert(2, "ins2"); | ^~~~~~ -%Error: t/t_queue_unsup_bad.v:34:11: Unsupported: Replication to form 'string[$]' data type - : ... In instance t +%Error-UNSUPPORTED: t/t_queue_unsup_bad.v:34:11: Unsupported: Replication to form 'string[$]' data type + : ... In instance t 34 | q = {q, "f1"}; | ^ -%Error: t/t_queue_unsup_bad.v:35:11: Unsupported: Replication to form 'string[$]' data type - : ... In instance t +%Error-UNSUPPORTED: t/t_queue_unsup_bad.v:35:11: Unsupported: Replication to form 'string[$]' data type + : ... In instance t 35 | q = {q, "f2"}; | ^ -%Error: t/t_queue_unsup_bad.v:36:11: Unsupported: Replication to form 'string[$]' data type - : ... In instance t +%Error-UNSUPPORTED: t/t_queue_unsup_bad.v:36:11: Unsupported: Replication to form 'string[$]' data type + : ... In instance t 36 | q = {"b1", q}; | ^ -%Error: t/t_queue_unsup_bad.v:37:11: Unsupported: Replication to form 'string[$]' data type - : ... In instance t +%Error-UNSUPPORTED: t/t_queue_unsup_bad.v:37:11: Unsupported: Replication to form 'string[$]' data type + : ... In instance t 37 | q = {"b2", q}; | ^ -%Error: t/t_queue_unsup_bad.v:38:11: Unsupported: Replication to form 'string[$]' data type - : ... In instance t +%Error-UNSUPPORTED: t/t_queue_unsup_bad.v:38:11: Unsupported: Replication to form 'string[$]' data type + : ... In instance t 38 | q = {q[0], q[2:$]}; | ^ -%Error: t/t_queue_unsup_bad.v:38:22: Unsupported/illegal unbounded ('$') in this context. - : ... In instance t +%Error-UNSUPPORTED: t/t_queue_unsup_bad.v:38:22: Unsupported/illegal unbounded ('$') in this context. + : ... In instance t 38 | q = {q[0], q[2:$]}; | ^ %Error: t/t_queue_unsup_bad.v:38:22: First value of [a:b] isn't a constant, maybe you want +: or -: @@ -42,16 +42,16 @@ : ... In instance t 38 | q = {q[0], q[2:$]}; | ^ -%Error: t/t_queue_unsup_bad.v:42:25: Unsupported: Replication to form 'string[$]' data type - : ... In instance t +%Error-UNSUPPORTED: t/t_queue_unsup_bad.v:42:25: Unsupported: Replication to form 'string[$]' data type + : ... In instance t 42 | string ai[$] = { "Foo", "Bar" }; | ^ -%Error: t/t_queue_unsup_bad.v:47:14: Unsupported: Assignment pattern applies against non struct/union data type: 'string[$]' - : ... In instance t +%Error-UNSUPPORTED: t/t_queue_unsup_bad.v:47:14: Unsupported: Assignment pattern applies against non struct/union data type: 'string[$]' + : ... In instance t 47 | q = '{ "BB", "CC" }; | ^~ -%Error: t/t_queue_unsup_bad.v:50:14: Unsupported: Replication to form 'string[$]' data type - : ... In instance t +%Error-UNSUPPORTED: t/t_queue_unsup_bad.v:50:14: Unsupported: Replication to form 'string[$]' data type + : ... In instance t 50 | q = { "BB", "CC" }; | ^ %Error: Exiting due to diff --git a/test_regress/t/t_randomize.out b/test_regress/t/t_randomize.out index 3b00607a8..9224cf088 100644 --- a/test_regress/t/t_randomize.out +++ b/test_regress/t/t_randomize.out @@ -1,40 +1,40 @@ -%Error: t/t_randomize.v:11:4: Unsupported: extern constraint +%Error-UNSUPPORTED: t/t_randomize.v:11:4: Unsupported: extern constraint 11 | extern constraint ex; | ^~~~~~ -%Error: t/t_randomize.v:13:4: Unsupported: constraint +%Error-UNSUPPORTED: t/t_randomize.v:13:4: Unsupported: constraint 13 | constraint a { header > 0 && header < 1000; } | ^~~~~~~~~~ -%Error: t/t_randomize.v:14:4: Unsupported: constraint +%Error-UNSUPPORTED: t/t_randomize.v:14:4: Unsupported: constraint 14 | constraint b { | ^~~~~~~~~~ -%Error: t/t_randomize.v:19:4: Unsupported: constraint +%Error-UNSUPPORTED: t/t_randomize.v:19:4: Unsupported: constraint 19 | constraint b { | ^~~~~~~~~~ -%Error: t/t_randomize.v:23:4: Unsupported: constraint +%Error-UNSUPPORTED: t/t_randomize.v:23:4: Unsupported: constraint 23 | constraint c { | ^~~~~~~~~~ -%Error: t/t_randomize.v:29:29: Unsupported: solve before +%Error-UNSUPPORTED: t/t_randomize.v:29:29: Unsupported: solve before 29 | constraint order { solve length before header; } | ^~~~~~ -%Error: t/t_randomize.v:29:4: Unsupported: constraint +%Error-UNSUPPORTED: t/t_randomize.v:29:4: Unsupported: constraint 29 | constraint order { solve length before header; } | ^~~~~~~~~~ -%Error: t/t_randomize.v:32:16: Unsupported: dist :/ +%Error-UNSUPPORTED: t/t_randomize.v:32:16: Unsupported: dist :/ 32 | x dist { [100:102] :/ 1, 200 := 2, 300 := 5}; | ^ -%Error: t/t_randomize.v:32:32: Unsupported: dist := +%Error-UNSUPPORTED: t/t_randomize.v:32:32: Unsupported: dist := 32 | x dist { [100:102] :/ 1, 200 := 2, 300 := 5}; | ^~~ -%Error: t/t_randomize.v:32:42: Unsupported: dist := +%Error-UNSUPPORTED: t/t_randomize.v:32:42: Unsupported: dist := 32 | x dist { [100:102] :/ 1, 200 := 2, 300 := 5}; | ^~~ -%Error: t/t_randomize.v:32:9: Unsupported: dist +%Error-UNSUPPORTED: t/t_randomize.v:32:9: Unsupported: dist 32 | x dist { [100:102] :/ 1, 200 := 2, 300 := 5}; | ^~~~ -%Error: t/t_randomize.v:30:4: Unsupported: constraint +%Error-UNSUPPORTED: t/t_randomize.v:30:4: Unsupported: constraint 30 | constraint dis { | ^~~~~~~~~~ -%Error: t/t_randomize.v:50:25: Unsupported: randomize() 'with' +%Error-UNSUPPORTED: t/t_randomize.v:50:25: Unsupported: randomize() 'with' 50 | v = p.randomize() with {}; | ^~~~ %Error: Exiting due to diff --git a/test_regress/t/t_savable_class_bad.out b/test_regress/t/t_savable_class_bad.out index 8128ec348..08c051e17 100644 --- a/test_regress/t/t_savable_class_bad.out +++ b/test_regress/t/t_savable_class_bad.out @@ -1,2 +1,2 @@ -%Error: Unsupported: --savable with dynamic new +%Error-UNSUPPORTED: Unsupported: --savable with dynamic new %Error: Exiting due to diff --git a/test_regress/t/t_sys_rand_seed.out b/test_regress/t/t_sys_rand_seed.out index 26738d308..c227b2acd 100644 --- a/test_regress/t/t_sys_rand_seed.out +++ b/test_regress/t/t_sys_rand_seed.out @@ -1,7 +1,7 @@ -%Error: t/t_sys_rand_seed.v:13:16: Unsupported: Seed on $random. Suggest use +verilator+seed+ runtime flag +%Error-UNSUPPORTED: t/t_sys_rand_seed.v:13:16: Unsupported: Seed on $random. Suggest use +verilator+seed+ runtime flag 13 | valuea = $random(10); | ^~~~~~~ -%Error: t/t_sys_rand_seed.v:14:16: Unsupported: Seed on $random. Suggest use +verilator+seed+ runtime flag +%Error-UNSUPPORTED: t/t_sys_rand_seed.v:14:16: Unsupported: Seed on $random. Suggest use +verilator+seed+ runtime flag 14 | valueb = $random(10); | ^~~~~~~ %Error: Exiting due to diff --git a/test_regress/t/t_sys_readmem_assoc_bad.out b/test_regress/t/t_sys_readmem_assoc_bad.out index ccb95325d..bc09fd9cd 100644 --- a/test_regress/t/t_sys_readmem_assoc_bad.out +++ b/test_regress/t/t_sys_readmem_assoc_bad.out @@ -2,8 +2,8 @@ : ... In instance t 13 | $readmemb("not", assoc_bad_key); | ^~~~~~~~~~~~~ -%Error: t/t_sys_readmem_assoc_bad.v:14:24: Unsupported: $readmemb array values must be integral - : ... In instance t +%Error-UNSUPPORTED: t/t_sys_readmem_assoc_bad.v:14:24: Unsupported: $readmemb array values must be integral + : ... In instance t 14 | $readmemb("not", assoc_bad_value); | ^~~~~~~~~~~~~~~ %Error: Exiting due to diff --git a/test_regress/t/t_tri_compass_bad.out b/test_regress/t/t_tri_compass_bad.out index a7cdf0192..b07623a7d 100644 --- a/test_regress/t/t_tri_compass_bad.out +++ b/test_regress/t/t_tri_compass_bad.out @@ -1,5 +1,5 @@ -%Error: t/t_tri_compass_bad.v:16:12: Unsupported: tristate in top-level IO: '__pinNumber1' - : ... In instance t +%Error-UNSUPPORTED: t/t_tri_compass_bad.v:16:12: Unsupported: tristate in top-level IO: '__pinNumber1' + : ... In instance t 16 | sub sub(i, o); | ^ %Error: Exiting due to diff --git a/test_regress/t/t_tri_pull2_bad.out b/test_regress/t/t_tri_pull2_bad.out index f80de4b1f..98baf9520 100644 --- a/test_regress/t/t_tri_pull2_bad.out +++ b/test_regress/t/t_tri_pull2_bad.out @@ -1,8 +1,8 @@ -%Error: t/t_tri_pull2_bad.v:12:11: Unsupported: Conflicting pull directions. - : ... In instance t +%Error-UNSUPPORTED: t/t_tri_pull2_bad.v:12:11: Unsupported: Conflicting pull directions. + : ... In instance t 12 | pullup p1(A); | ^~ - t/t_tri_pull2_bad.v:22:13: ... Location of conflicting pull. + t/t_tri_pull2_bad.v:22:13: ... Location of conflicting pull. 22 | pulldown p2(A); | ^~ %Error: Exiting due to diff --git a/test_regress/t/t_tri_pull_bad.out b/test_regress/t/t_tri_pull_bad.out index f9e60554b..e59dcf535 100644 --- a/test_regress/t/t_tri_pull_bad.out +++ b/test_regress/t/t_tri_pull_bad.out @@ -1,8 +1,8 @@ -%Error: t/t_tri_pull_bad.v:13:13: Unsupported: Conflicting pull directions. - : ... In instance t +%Error-UNSUPPORTED: t/t_tri_pull_bad.v:13:13: Unsupported: Conflicting pull directions. + : ... In instance t 13 | pulldown p2(A); | ^~ - t/t_tri_pull_bad.v:12:11: ... Location of conflicting pull. + t/t_tri_pull_bad.v:12:11: ... Location of conflicting pull. 12 | pullup p1(A); | ^~ %Error: Exiting due to diff --git a/test_regress/t/t_tri_pullvec_bad.out b/test_regress/t/t_tri_pullvec_bad.out index 68bf7c55d..1c5594298 100644 --- a/test_regress/t/t_tri_pullvec_bad.out +++ b/test_regress/t/t_tri_pullvec_bad.out @@ -1,15 +1,15 @@ -%Error: t/t_tri_pullvec_bad.v:13:13: Unsupported: Conflicting pull directions. - : ... In instance t +%Error-UNSUPPORTED: t/t_tri_pullvec_bad.v:13:13: Unsupported: Conflicting pull directions. + : ... In instance t 13 | pulldown p1 (w[1]); | ^~ - t/t_tri_pullvec_bad.v:12:11: ... Location of conflicting pull. + t/t_tri_pullvec_bad.v:12:11: ... Location of conflicting pull. 12 | pullup p0 (w[0]); | ^~ -%Error: t/t_tri_pullvec_bad.v:14:13: Unsupported: Conflicting pull directions. - : ... In instance t +%Error-UNSUPPORTED: t/t_tri_pullvec_bad.v:14:13: Unsupported: Conflicting pull directions. + : ... In instance t 14 | pulldown p2 (w[2]); | ^~ - t/t_tri_pullvec_bad.v:12:11: ... Location of conflicting pull. + t/t_tri_pullvec_bad.v:12:11: ... Location of conflicting pull. 12 | pullup p0 (w[0]); | ^~ %Error: Exiting due to diff --git a/test_regress/t/t_udp.out b/test_regress/t/t_udp.out index ff1599baa..852e2eef0 100644 --- a/test_regress/t/t_udp.out +++ b/test_regress/t/t_udp.out @@ -1,4 +1,4 @@ -%Error: t/t_udp.v:104:4: Unsupported: Verilog 1995 UDP Tables. Use --bbox-unsup to ignore tables. +%Error-UNSUPPORTED: t/t_udp.v:104:4: Unsupported: Verilog 1995 UDP Tables. Use --bbox-unsup to ignore tables. 104 | table | ^~~~~ %Error: Exiting due to diff --git a/test_regress/t/t_unpacked_concat_bad.out b/test_regress/t/t_unpacked_concat_bad.out index f47940153..67309b1bd 100644 --- a/test_regress/t/t_unpacked_concat_bad.out +++ b/test_regress/t/t_unpacked_concat_bad.out @@ -1,5 +1,5 @@ -%Error: t/t_unpacked_concat_bad.v:17:46: Unsupported: Replication to form 'bit[31:0]$[1:0]' data type - : ... In instance t +%Error-UNSUPPORTED: t/t_unpacked_concat_bad.v:17:46: Unsupported: Replication to form 'bit[31:0]$[1:0]' data type + : ... In instance t 17 | localparam bit_int_t count_bits [1:0] = {2{$bits(count_t)}}; | ^ %Warning-WIDTHCONCAT: t/t_unpacked_concat_bad.v:17:47: Unsized numbers/parameters not allowed in replications. @@ -7,8 +7,8 @@ 17 | localparam bit_int_t count_bits [1:0] = {2{$bits(count_t)}}; | ^~~~~ ... Use "/* verilator lint_off WIDTHCONCAT */" and lint_on around source to disable this message. -%Error: t/t_unpacked_concat_bad.v:18:45: Unsupported: Replication to form 'bit[31:0]$[1:0]' data type - : ... In instance t +%Error-UNSUPPORTED: t/t_unpacked_concat_bad.v:18:45: Unsupported: Replication to form 'bit[31:0]$[1:0]' data type + : ... In instance t 18 | localparam bit_int_t count_bitsc [1:0] = {$bits(count_t), $bits(count_t)}; | ^ %Warning-WIDTHCONCAT: t/t_unpacked_concat_bad.v:18:46: Unsized numbers/parameters not allowed in concatenations. diff --git a/test_regress/t/t_vams_kwd_bad.out b/test_regress/t/t_vams_kwd_bad.out index dfbd90b40..cc4a86cc1 100644 --- a/test_regress/t/t_vams_kwd_bad.out +++ b/test_regress/t/t_vams_kwd_bad.out @@ -1,199 +1,199 @@ -%Error: t/t_vams_kwd_bad.v:12:8: Unsupported: AMS reserved word not implemented: 'above' +%Error-UNSUPPORTED: t/t_vams_kwd_bad.v:12:8: Unsupported: AMS reserved word not implemented: 'above' 12 | int above; | ^~~~~ %Error: t/t_vams_kwd_bad.v:12:13: syntax error, unexpected ';', expecting IDENTIFIER or randomize 12 | int above; | ^ -%Error: t/t_vams_kwd_bad.v:13:8: Unsupported: AMS reserved word not implemented: 'abs' +%Error-UNSUPPORTED: t/t_vams_kwd_bad.v:13:8: Unsupported: AMS reserved word not implemented: 'abs' 13 | int abs; | ^~~ -%Error: t/t_vams_kwd_bad.v:14:8: Unsupported: AMS reserved word not implemented: 'absdelay' +%Error-UNSUPPORTED: t/t_vams_kwd_bad.v:14:8: Unsupported: AMS reserved word not implemented: 'absdelay' 14 | int absdelay; | ^~~~~~~~ -%Error: t/t_vams_kwd_bad.v:15:8: Unsupported: AMS reserved word not implemented: 'abstol' +%Error-UNSUPPORTED: t/t_vams_kwd_bad.v:15:8: Unsupported: AMS reserved word not implemented: 'abstol' 15 | int abstol; | ^~~~~~ -%Error: t/t_vams_kwd_bad.v:16:8: Unsupported: AMS reserved word not implemented: 'ac_stim' +%Error-UNSUPPORTED: t/t_vams_kwd_bad.v:16:8: Unsupported: AMS reserved word not implemented: 'ac_stim' 16 | int ac_stim; | ^~~~~~~ -%Error: t/t_vams_kwd_bad.v:17:8: Unsupported: AMS reserved word not implemented: 'access' +%Error-UNSUPPORTED: t/t_vams_kwd_bad.v:17:8: Unsupported: AMS reserved word not implemented: 'access' 17 | int access; | ^~~~~~ -%Error: t/t_vams_kwd_bad.v:18:8: Unsupported: AMS reserved word not implemented: 'acos' +%Error-UNSUPPORTED: t/t_vams_kwd_bad.v:18:8: Unsupported: AMS reserved word not implemented: 'acos' 18 | int acos; | ^~~~ -%Error: t/t_vams_kwd_bad.v:19:8: Unsupported: AMS reserved word not implemented: 'acosh' +%Error-UNSUPPORTED: t/t_vams_kwd_bad.v:19:8: Unsupported: AMS reserved word not implemented: 'acosh' 19 | int acosh; | ^~~~~ -%Error: t/t_vams_kwd_bad.v:20:8: Unsupported: AMS reserved word not implemented: 'aliasparam' +%Error-UNSUPPORTED: t/t_vams_kwd_bad.v:20:8: Unsupported: AMS reserved word not implemented: 'aliasparam' 20 | int aliasparam; | ^~~~~~~~~~ -%Error: t/t_vams_kwd_bad.v:21:8: Unsupported: AMS reserved word not implemented: 'analog' +%Error-UNSUPPORTED: t/t_vams_kwd_bad.v:21:8: Unsupported: AMS reserved word not implemented: 'analog' 21 | int analog; | ^~~~~~ -%Error: t/t_vams_kwd_bad.v:22:8: Unsupported: AMS reserved word not implemented: 'analysis' +%Error-UNSUPPORTED: t/t_vams_kwd_bad.v:22:8: Unsupported: AMS reserved word not implemented: 'analysis' 22 | int analysis; | ^~~~~~~~ -%Error: t/t_vams_kwd_bad.v:23:8: Unsupported: AMS reserved word not implemented: 'assert' +%Error-UNSUPPORTED: t/t_vams_kwd_bad.v:23:8: Unsupported: AMS reserved word not implemented: 'assert' 23 | int assert; | ^~~~~~ -%Error: t/t_vams_kwd_bad.v:24:8: Unsupported: AMS reserved word not implemented: 'branch' +%Error-UNSUPPORTED: t/t_vams_kwd_bad.v:24:8: Unsupported: AMS reserved word not implemented: 'branch' 24 | int branch; | ^~~~~~ -%Error: t/t_vams_kwd_bad.v:25:8: Unsupported: AMS reserved word not implemented: 'connect' +%Error-UNSUPPORTED: t/t_vams_kwd_bad.v:25:8: Unsupported: AMS reserved word not implemented: 'connect' 25 | int connect; | ^~~~~~~ -%Error: t/t_vams_kwd_bad.v:26:8: Unsupported: AMS reserved word not implemented: 'connectmodule' +%Error-UNSUPPORTED: t/t_vams_kwd_bad.v:26:8: Unsupported: AMS reserved word not implemented: 'connectmodule' 26 | int connectmodule; | ^~~~~~~~~~~~~ -%Error: t/t_vams_kwd_bad.v:27:8: Unsupported: AMS reserved word not implemented: 'connectrules' +%Error-UNSUPPORTED: t/t_vams_kwd_bad.v:27:8: Unsupported: AMS reserved word not implemented: 'connectrules' 27 | int connectrules; | ^~~~~~~~~~~~ -%Error: t/t_vams_kwd_bad.v:28:8: Unsupported: AMS reserved word not implemented: 'continuous' +%Error-UNSUPPORTED: t/t_vams_kwd_bad.v:28:8: Unsupported: AMS reserved word not implemented: 'continuous' 28 | int continuous; | ^~~~~~~~~~ -%Error: t/t_vams_kwd_bad.v:29:8: Unsupported: AMS reserved word not implemented: 'cross' +%Error-UNSUPPORTED: t/t_vams_kwd_bad.v:29:8: Unsupported: AMS reserved word not implemented: 'cross' 29 | int cross; | ^~~~~ -%Error: t/t_vams_kwd_bad.v:30:8: Unsupported: AMS reserved word not implemented: 'ddt' +%Error-UNSUPPORTED: t/t_vams_kwd_bad.v:30:8: Unsupported: AMS reserved word not implemented: 'ddt' 30 | int ddt; | ^~~ -%Error: t/t_vams_kwd_bad.v:31:8: Unsupported: AMS reserved word not implemented: 'ddt_nature' +%Error-UNSUPPORTED: t/t_vams_kwd_bad.v:31:8: Unsupported: AMS reserved word not implemented: 'ddt_nature' 31 | int ddt_nature; | ^~~~~~~~~~ -%Error: t/t_vams_kwd_bad.v:32:8: Unsupported: AMS reserved word not implemented: 'ddx' +%Error-UNSUPPORTED: t/t_vams_kwd_bad.v:32:8: Unsupported: AMS reserved word not implemented: 'ddx' 32 | int ddx; | ^~~ -%Error: t/t_vams_kwd_bad.v:33:8: Unsupported: AMS reserved word not implemented: 'discipline' +%Error-UNSUPPORTED: t/t_vams_kwd_bad.v:33:8: Unsupported: AMS reserved word not implemented: 'discipline' 33 | int discipline; | ^~~~~~~~~~ -%Error: t/t_vams_kwd_bad.v:34:8: Unsupported: AMS reserved word not implemented: 'discrete' +%Error-UNSUPPORTED: t/t_vams_kwd_bad.v:34:8: Unsupported: AMS reserved word not implemented: 'discrete' 34 | int discrete; | ^~~~~~~~ -%Error: t/t_vams_kwd_bad.v:35:8: Unsupported: AMS reserved word not implemented: 'domain' +%Error-UNSUPPORTED: t/t_vams_kwd_bad.v:35:8: Unsupported: AMS reserved word not implemented: 'domain' 35 | int domain; | ^~~~~~ -%Error: t/t_vams_kwd_bad.v:36:8: Unsupported: AMS reserved word not implemented: 'driver_update' +%Error-UNSUPPORTED: t/t_vams_kwd_bad.v:36:8: Unsupported: AMS reserved word not implemented: 'driver_update' 36 | int driver_update; | ^~~~~~~~~~~~~ -%Error: t/t_vams_kwd_bad.v:37:8: Unsupported: AMS reserved word not implemented: 'endconnectrules' +%Error-UNSUPPORTED: t/t_vams_kwd_bad.v:37:8: Unsupported: AMS reserved word not implemented: 'endconnectrules' 37 | int endconnectrules; | ^~~~~~~~~~~~~~~ -%Error: t/t_vams_kwd_bad.v:38:8: Unsupported: AMS reserved word not implemented: 'enddiscipline' +%Error-UNSUPPORTED: t/t_vams_kwd_bad.v:38:8: Unsupported: AMS reserved word not implemented: 'enddiscipline' 38 | int enddiscipline; | ^~~~~~~~~~~~~ -%Error: t/t_vams_kwd_bad.v:39:8: Unsupported: AMS reserved word not implemented: 'endnature' +%Error-UNSUPPORTED: t/t_vams_kwd_bad.v:39:8: Unsupported: AMS reserved word not implemented: 'endnature' 39 | int endnature; | ^~~~~~~~~ -%Error: t/t_vams_kwd_bad.v:40:8: Unsupported: AMS reserved word not implemented: 'endparamset' +%Error-UNSUPPORTED: t/t_vams_kwd_bad.v:40:8: Unsupported: AMS reserved word not implemented: 'endparamset' 40 | int endparamset; | ^~~~~~~~~~~ -%Error: t/t_vams_kwd_bad.v:41:8: Unsupported: AMS reserved word not implemented: 'exclude' +%Error-UNSUPPORTED: t/t_vams_kwd_bad.v:41:8: Unsupported: AMS reserved word not implemented: 'exclude' 41 | int exclude; | ^~~~~~~ -%Error: t/t_vams_kwd_bad.v:42:8: Unsupported: AMS reserved word not implemented: 'final_step' +%Error-UNSUPPORTED: t/t_vams_kwd_bad.v:42:8: Unsupported: AMS reserved word not implemented: 'final_step' 42 | int final_step; | ^~~~~~~~~~ -%Error: t/t_vams_kwd_bad.v:43:8: Unsupported: AMS reserved word not implemented: 'flicker_noise' +%Error-UNSUPPORTED: t/t_vams_kwd_bad.v:43:8: Unsupported: AMS reserved word not implemented: 'flicker_noise' 43 | int flicker_noise; | ^~~~~~~~~~~~~ -%Error: t/t_vams_kwd_bad.v:44:8: Unsupported: AMS reserved word not implemented: 'flow' +%Error-UNSUPPORTED: t/t_vams_kwd_bad.v:44:8: Unsupported: AMS reserved word not implemented: 'flow' 44 | int flow; | ^~~~ -%Error: t/t_vams_kwd_bad.v:45:8: Unsupported: AMS reserved word not implemented: 'from' +%Error-UNSUPPORTED: t/t_vams_kwd_bad.v:45:8: Unsupported: AMS reserved word not implemented: 'from' 45 | int from; | ^~~~ -%Error: t/t_vams_kwd_bad.v:46:8: Unsupported: AMS reserved word not implemented: 'ground' +%Error-UNSUPPORTED: t/t_vams_kwd_bad.v:46:8: Unsupported: AMS reserved word not implemented: 'ground' 46 | int ground; | ^~~~~~ -%Error: t/t_vams_kwd_bad.v:47:8: Unsupported: AMS reserved word not implemented: 'idt' +%Error-UNSUPPORTED: t/t_vams_kwd_bad.v:47:8: Unsupported: AMS reserved word not implemented: 'idt' 47 | int idt; | ^~~ -%Error: t/t_vams_kwd_bad.v:48:8: Unsupported: AMS reserved word not implemented: 'idt_nature' +%Error-UNSUPPORTED: t/t_vams_kwd_bad.v:48:8: Unsupported: AMS reserved word not implemented: 'idt_nature' 48 | int idt_nature; | ^~~~~~~~~~ -%Error: t/t_vams_kwd_bad.v:49:8: Unsupported: AMS reserved word not implemented: 'idtmod' +%Error-UNSUPPORTED: t/t_vams_kwd_bad.v:49:8: Unsupported: AMS reserved word not implemented: 'idtmod' 49 | int idtmod; | ^~~~~~ -%Error: t/t_vams_kwd_bad.v:50:8: Unsupported: AMS reserved word not implemented: 'inf' +%Error-UNSUPPORTED: t/t_vams_kwd_bad.v:50:8: Unsupported: AMS reserved word not implemented: 'inf' 50 | int inf; | ^~~ -%Error: t/t_vams_kwd_bad.v:51:8: Unsupported: AMS reserved word not implemented: 'initial_step' +%Error-UNSUPPORTED: t/t_vams_kwd_bad.v:51:8: Unsupported: AMS reserved word not implemented: 'initial_step' 51 | int initial_step; | ^~~~~~~~~~~~ -%Error: t/t_vams_kwd_bad.v:52:8: Unsupported: AMS reserved word not implemented: 'laplace_nd' +%Error-UNSUPPORTED: t/t_vams_kwd_bad.v:52:8: Unsupported: AMS reserved word not implemented: 'laplace_nd' 52 | int laplace_nd; | ^~~~~~~~~~ -%Error: t/t_vams_kwd_bad.v:53:8: Unsupported: AMS reserved word not implemented: 'laplace_np' +%Error-UNSUPPORTED: t/t_vams_kwd_bad.v:53:8: Unsupported: AMS reserved word not implemented: 'laplace_np' 53 | int laplace_np; | ^~~~~~~~~~ -%Error: t/t_vams_kwd_bad.v:54:8: Unsupported: AMS reserved word not implemented: 'laplace_zd' +%Error-UNSUPPORTED: t/t_vams_kwd_bad.v:54:8: Unsupported: AMS reserved word not implemented: 'laplace_zd' 54 | int laplace_zd; | ^~~~~~~~~~ -%Error: t/t_vams_kwd_bad.v:55:8: Unsupported: AMS reserved word not implemented: 'laplace_zp' +%Error-UNSUPPORTED: t/t_vams_kwd_bad.v:55:8: Unsupported: AMS reserved word not implemented: 'laplace_zp' 55 | int laplace_zp; | ^~~~~~~~~~ -%Error: t/t_vams_kwd_bad.v:56:8: Unsupported: AMS reserved word not implemented: 'last_crossing' +%Error-UNSUPPORTED: t/t_vams_kwd_bad.v:56:8: Unsupported: AMS reserved word not implemented: 'last_crossing' 56 | int last_crossing; | ^~~~~~~~~~~~~ -%Error: t/t_vams_kwd_bad.v:57:8: Unsupported: AMS reserved word not implemented: 'limexp' +%Error-UNSUPPORTED: t/t_vams_kwd_bad.v:57:8: Unsupported: AMS reserved word not implemented: 'limexp' 57 | int limexp; | ^~~~~~ -%Error: t/t_vams_kwd_bad.v:58:8: Unsupported: AMS reserved word not implemented: 'max' +%Error-UNSUPPORTED: t/t_vams_kwd_bad.v:58:8: Unsupported: AMS reserved word not implemented: 'max' 58 | int max; | ^~~ -%Error: t/t_vams_kwd_bad.v:59:8: Unsupported: AMS reserved word not implemented: 'merged' +%Error-UNSUPPORTED: t/t_vams_kwd_bad.v:59:8: Unsupported: AMS reserved word not implemented: 'merged' 59 | int merged; | ^~~~~~ -%Error: t/t_vams_kwd_bad.v:60:8: Unsupported: AMS reserved word not implemented: 'min' +%Error-UNSUPPORTED: t/t_vams_kwd_bad.v:60:8: Unsupported: AMS reserved word not implemented: 'min' 60 | int min; | ^~~ -%Error: t/t_vams_kwd_bad.v:61:8: Unsupported: AMS reserved word not implemented: 'nature' +%Error-UNSUPPORTED: t/t_vams_kwd_bad.v:61:8: Unsupported: AMS reserved word not implemented: 'nature' 61 | int nature; | ^~~~~~ -%Error: t/t_vams_kwd_bad.v:62:8: Unsupported: AMS reserved word not implemented: 'net_resolution' +%Error-UNSUPPORTED: t/t_vams_kwd_bad.v:62:8: Unsupported: AMS reserved word not implemented: 'net_resolution' 62 | int net_resolution; | ^~~~~~~~~~~~~~ -%Error: t/t_vams_kwd_bad.v:63:8: Unsupported: AMS reserved word not implemented: 'noise_table' +%Error-UNSUPPORTED: t/t_vams_kwd_bad.v:63:8: Unsupported: AMS reserved word not implemented: 'noise_table' 63 | int noise_table; | ^~~~~~~~~~~ -%Error: t/t_vams_kwd_bad.v:64:8: Unsupported: AMS reserved word not implemented: 'paramset' +%Error-UNSUPPORTED: t/t_vams_kwd_bad.v:64:8: Unsupported: AMS reserved word not implemented: 'paramset' 64 | int paramset; | ^~~~~~~~ -%Error: t/t_vams_kwd_bad.v:65:8: Unsupported: AMS reserved word not implemented: 'potential' +%Error-UNSUPPORTED: t/t_vams_kwd_bad.v:65:8: Unsupported: AMS reserved word not implemented: 'potential' 65 | int potential; | ^~~~~~~~~ -%Error: t/t_vams_kwd_bad.v:66:8: Unsupported: AMS reserved word not implemented: 'resolveto' +%Error-UNSUPPORTED: t/t_vams_kwd_bad.v:66:8: Unsupported: AMS reserved word not implemented: 'resolveto' 66 | int resolveto; | ^~~~~~~~~ -%Error: t/t_vams_kwd_bad.v:67:8: Unsupported: AMS reserved word not implemented: 'slew' +%Error-UNSUPPORTED: t/t_vams_kwd_bad.v:67:8: Unsupported: AMS reserved word not implemented: 'slew' 67 | int slew; | ^~~~ -%Error: t/t_vams_kwd_bad.v:68:8: Unsupported: AMS reserved word not implemented: 'split' +%Error-UNSUPPORTED: t/t_vams_kwd_bad.v:68:8: Unsupported: AMS reserved word not implemented: 'split' 68 | int split; | ^~~~~ -%Error: t/t_vams_kwd_bad.v:69:8: Unsupported: AMS reserved word not implemented: 'timer' +%Error-UNSUPPORTED: t/t_vams_kwd_bad.v:69:8: Unsupported: AMS reserved word not implemented: 'timer' 69 | int timer; | ^~~~~ -%Error: t/t_vams_kwd_bad.v:70:8: Unsupported: AMS reserved word not implemented: 'transition' +%Error-UNSUPPORTED: t/t_vams_kwd_bad.v:70:8: Unsupported: AMS reserved word not implemented: 'transition' 70 | int transition; | ^~~~~~~~~~ -%Error: t/t_vams_kwd_bad.v:71:8: Unsupported: AMS reserved word not implemented: 'units' +%Error-UNSUPPORTED: t/t_vams_kwd_bad.v:71:8: Unsupported: AMS reserved word not implemented: 'units' 71 | int units; | ^~~~~ -%Error: t/t_vams_kwd_bad.v:72:8: Unsupported: AMS reserved word not implemented: 'white_noise' +%Error-UNSUPPORTED: t/t_vams_kwd_bad.v:72:8: Unsupported: AMS reserved word not implemented: 'white_noise' 72 | int white_noise; | ^~~~~~~~~~~ -%Error: t/t_vams_kwd_bad.v:73:8: Unsupported: AMS reserved word not implemented: 'zi_nd' +%Error-UNSUPPORTED: t/t_vams_kwd_bad.v:73:8: Unsupported: AMS reserved word not implemented: 'zi_nd' 73 | int zi_nd; | ^~~~~ -%Error: t/t_vams_kwd_bad.v:74:8: Unsupported: AMS reserved word not implemented: 'zi_np' +%Error-UNSUPPORTED: t/t_vams_kwd_bad.v:74:8: Unsupported: AMS reserved word not implemented: 'zi_np' 74 | int zi_np; | ^~~~~ -%Error: t/t_vams_kwd_bad.v:75:8: Unsupported: AMS reserved word not implemented: 'zi_zd' +%Error-UNSUPPORTED: t/t_vams_kwd_bad.v:75:8: Unsupported: AMS reserved word not implemented: 'zi_zd' 75 | int zi_zd; | ^~~~~ -%Error: t/t_vams_kwd_bad.v:76:8: Unsupported: AMS reserved word not implemented: 'zi_zp' +%Error-UNSUPPORTED: t/t_vams_kwd_bad.v:76:8: Unsupported: AMS reserved word not implemented: 'zi_zp' 76 | int zi_zp; | ^~~~~ %Error: Exiting due to diff --git a/test_regress/t/t_var_ref_bad3.out b/test_regress/t/t_var_ref_bad3.out index 967d473af..6ae8e9307 100644 --- a/test_regress/t/t_var_ref_bad3.out +++ b/test_regress/t/t_var_ref_bad3.out @@ -1,4 +1,4 @@ -%Error: t/t_var_ref_bad3.v:10:18: Unsupported: ref/const ref as primary input/output: 'bad_primary_ref' +%Error-UNSUPPORTED: t/t_var_ref_bad3.v:10:18: Unsupported: ref/const ref as primary input/output: 'bad_primary_ref' 10 | module t(ref int bad_primary_ref | ^~~~~~~~~~~~~~~ %Error: Exiting due to diff --git a/test_regress/t/t_var_static.out b/test_regress/t/t_var_static.out index 3103c2e9b..30e9ea620 100644 --- a/test_regress/t/t_var_static.out +++ b/test_regress/t/t_var_static.out @@ -1,22 +1,22 @@ -%Error: t/t_var_static.v:20:7: Unsupported: Static in this context +%Error-UNSUPPORTED: t/t_var_static.v:20:7: Unsupported: Static in this context 20 | static int st = 2; st++; return st; | ^~~~~~ -%Error: t/t_var_static.v:26:13: Unsupported: Static in this context +%Error-UNSUPPORTED: t/t_var_static.v:26:13: Unsupported: Static in this context 26 | function static int f_st_no (); | ^~~~~~ -%Error: t/t_var_static.v:29:13: Unsupported: Static in this context +%Error-UNSUPPORTED: t/t_var_static.v:29:13: Unsupported: Static in this context 29 | function static int f_st_st (); | ^~~~~~ -%Error: t/t_var_static.v:30:7: Unsupported: Static in this context +%Error-UNSUPPORTED: t/t_var_static.v:30:7: Unsupported: Static in this context 30 | static int st = 2; st++; return st; | ^~~~~~ -%Error: t/t_var_static.v:32:13: Unsupported: Static in this context +%Error-UNSUPPORTED: t/t_var_static.v:32:13: Unsupported: Static in this context 32 | function static int f_st_au (); | ^~~~~~ -%Error: t/t_var_static.v:40:7: Unsupported: Static in this context +%Error-UNSUPPORTED: t/t_var_static.v:40:7: Unsupported: Static in this context 40 | static int st = 2; st++; return st; | ^~~~~~ -%Error: t/t_var_static.v:73:7: Unsupported: Static in this context +%Error-UNSUPPORTED: t/t_var_static.v:73:7: Unsupported: Static in this context 73 | static int ist2; | ^~~~~~ %Error: Exiting due to diff --git a/test_regress/t/t_with_unsup.out b/test_regress/t/t_with_unsup.out index 59caaa74c..24569dad3 100644 --- a/test_regress/t/t_with_unsup.out +++ b/test_regress/t/t_with_unsup.out @@ -1,31 +1,31 @@ -%Error: t/t_with_unsup.v:19:31: Unsupported: 'with' on function call +%Error-UNSUPPORTED: t/t_with_unsup.v:19:31: Unsupported: 'with' on function call 19 | found = aliases.find(i) with (i == to_find); | ^~~~ -%Error: t/t_with_unsup.v:21:23: Unsupported: 'with' on task call +%Error-UNSUPPORTED: t/t_with_unsup.v:21:23: Unsupported: 'with' on task call 21 | aliases.find(i) with (i == to_find); | ^~~~ -%Error: t/t_with_unsup.v:24:28: Unsupported: 'with' on function call +%Error-UNSUPPORTED: t/t_with_unsup.v:24:28: Unsupported: 'with' on function call 24 | found = aliases.find with (item == i); | ^~~~ -%Error: t/t_with_unsup.v:25:20: Unsupported: 'with' on function call +%Error-UNSUPPORTED: t/t_with_unsup.v:25:20: Unsupported: 'with' on function call 25 | aliases.find with (item == i); | ^~~~ -%Error: t/t_with_unsup.v:29:36: Unsupported: 'with' on method call +%Error-UNSUPPORTED: t/t_with_unsup.v:29:36: Unsupported: 'with' on method call 29 | found = aliases.unique with (id); | ^~ -%Error: t/t_with_unsup.v:30:38: Unsupported: 'with' on method call +%Error-UNSUPPORTED: t/t_with_unsup.v:30:38: Unsupported: 'with' on method call 30 | found = aliases.unique() with (id); | ^~ -%Error: t/t_with_unsup.v:31:39: Unsupported: 'with' on method call +%Error-UNSUPPORTED: t/t_with_unsup.v:31:39: Unsupported: 'with' on method call 31 | found = aliases.unique(i) with (id); | ^~ -%Error: t/t_with_unsup.v:32:32: Unsupported: 'with' on method call +%Error-UNSUPPORTED: t/t_with_unsup.v:32:32: Unsupported: 'with' on method call 32 | found = aliases.or with (id); | ^~ -%Error: t/t_with_unsup.v:33:33: Unsupported: 'with' on method call +%Error-UNSUPPORTED: t/t_with_unsup.v:33:33: Unsupported: 'with' on method call 33 | found = aliases.and with (id); | ^~ -%Error: t/t_with_unsup.v:34:33: Unsupported: 'with' on method call +%Error-UNSUPPORTED: t/t_with_unsup.v:34:33: Unsupported: 'with' on method call 34 | found = aliases.xor with (id); | ^~ %Error: Exiting due to