From 3549fd1aa0843c3def95ab708a2e3f934072b07b Mon Sep 17 00:00:00 2001 From: Wilson Snyder Date: Sat, 6 Sep 2025 10:31:08 -0400 Subject: [PATCH] Add parsing of `$assert*`, `$coverage*` and `$q_*` as still unsupported. --- src/V3AstNodeStmt.h | 4 +- src/V3AstNodes.cpp | 11 +- src/verilog.l | 166 ++++---- src/verilog.y | 51 ++- test_regress/t/t_assert_ctl_arg.v | 66 +-- test_regress/t/t_assert_ctl_type_bad.out | 8 + test_regress/t/t_assert_ctl_type_bad.py | 16 + test_regress/t/t_assert_ctl_type_bad.v | 12 + test_regress/t/t_assert_ctl_unsup.out | 135 ++++-- test_regress/t/t_assert_ctl_unsup.v | 57 ++- test_regress/t/t_config_include_bad.out | 2 +- test_regress/t/t_config_libmap.out | 30 +- test_regress/t/t_cover_sys_unsup.out | 26 ++ test_regress/t/t_cover_sys_unsup.py | 16 + test_regress/t/t_cover_sys_unsup.v | 42 ++ test_regress/t/t_dump_json.out | 500 ++++++++++++----------- test_regress/t/t_sys_queue_unsup.out | 152 +++++++ test_regress/t/t_sys_queue_unsup.py | 16 + test_regress/t/t_sys_queue_unsup.v | 195 +++++++++ 19 files changed, 1074 insertions(+), 431 deletions(-) create mode 100644 test_regress/t/t_assert_ctl_type_bad.out create mode 100755 test_regress/t/t_assert_ctl_type_bad.py create mode 100755 test_regress/t/t_assert_ctl_type_bad.v create mode 100644 test_regress/t/t_cover_sys_unsup.out create mode 100755 test_regress/t/t_cover_sys_unsup.py create mode 100644 test_regress/t/t_cover_sys_unsup.v create mode 100644 test_regress/t/t_sys_queue_unsup.out create mode 100755 test_regress/t/t_sys_queue_unsup.py create mode 100644 test_regress/t/t_sys_queue_unsup.v diff --git a/src/V3AstNodeStmt.h b/src/V3AstNodeStmt.h index ca7753c63..9cd6b1652 100644 --- a/src/V3AstNodeStmt.h +++ b/src/V3AstNodeStmt.h @@ -247,8 +247,8 @@ class AstAssertCtl final : public AstNodeStmt { VAssertDirectiveType m_directiveTypes; // Types of directives affected public: - AstAssertCtl(FileLine* fl, VAssertCtlType ctlType, AstNodeExpr* levelp = nullptr, - AstNodeExpr* itemsp = nullptr); + AstAssertCtl(FileLine* fl, VAssertCtlType ctlType, uint32_t assertType, uint32_t directiveType, + AstNodeExpr* levelp = nullptr, AstNodeExpr* itemsp = nullptr); AstAssertCtl(FileLine* fl, AstNodeExpr* controlTypep, AstNodeExpr* assertTypesp = nullptr, AstNodeExpr* directiveTypep = nullptr, AstNodeExpr* levelp = nullptr, AstNodeExpr* itemsp = nullptr); diff --git a/src/V3AstNodes.cpp b/src/V3AstNodes.cpp index b7a2507fc..457613dd7 100644 --- a/src/V3AstNodes.cpp +++ b/src/V3AstNodes.cpp @@ -1646,10 +1646,15 @@ void AstAlways::dumpJson(std::ostream& str) const { dumpJsonStr(str, "keyword", keyword().ascii()); dumpJsonGen(str); } -AstAssertCtl::AstAssertCtl(FileLine* fl, VAssertCtlType ctlType, AstNodeExpr*, AstNodeExpr*) +AstAssertCtl::AstAssertCtl(FileLine* fl, VAssertCtlType ctlType, uint32_t assertType, + uint32_t directiveType, AstNodeExpr*, AstNodeExpr*) : ASTGEN_SUPER_AssertCtl(fl) - , m_ctlType{ctlType} { - controlTypep(new AstConst{fl, ctlType}); + , m_ctlType{VAssertCtlType::_TO_BE_EVALUATED} + , m_assertTypes{VAssertType::INTERNAL} + , m_directiveTypes{VAssertDirectiveType::INTERNAL} { + this->controlTypep(new AstConst{fl, ctlType}); + this->assertTypesp(new AstConst{fl, assertType}); + this->directiveTypesp(new AstConst{fl, directiveType}); } AstAssertCtl::AstAssertCtl(FileLine* fl, AstNodeExpr* controlTypep, AstNodeExpr* assertTypesp, AstNodeExpr* directiveTypep, AstNodeExpr*, AstNodeExpr*) diff --git a/src/verilog.l b/src/verilog.l index de6c832c2..3cb8fa3e9 100644 --- a/src/verilog.l +++ b/src/verilog.l @@ -50,11 +50,9 @@ #define ERROR_RSVD_WORD(language) \ do { \ - FL; \ yylval.fl->v3warn(E_UNSUPPORTED, "Unsupported: " << language \ << " reserved word not implemented: '" \ << yytext << "'"); \ - FL_BRK; \ } while (0) //====================================================================== @@ -259,6 +257,11 @@ vnum {vnum1}|{vnum2}|{vnum3}|{vnum4}|{vnum5} "$psprintf" { FL; yylval.fl->v3warn(NONSTD, "Non-standard system function '" << yytext << "';" " suggest use standard '$sformatf' (IEEE 1800-2023 21.3.3)"); return yD_SFORMATF; } + "$q_add" { FL; ERROR_RSVD_WORD("IEEE 1364-1995"); return yaD_PLI; } + "$q_exam" { FL; ERROR_RSVD_WORD("IEEE 1364-1995"); return yaD_PLI; } + "$q_full" { FL; ERROR_RSVD_WORD("IEEE 1364-1995"); return yaD_PLI; } + "$q_initialize" { FL; ERROR_RSVD_WORD("IEEE 1364-1995"); return yaD_PLI; } + "$q_remove" { FL; ERROR_RSVD_WORD("IEEE 1364-1995"); return yaD_PLI; } "$random" { FL; return yD_RANDOM; } "$readmemb" { FL; return yD_READMEMB; } "$readmemh" { FL; return yD_READMEMH; } @@ -446,14 +449,15 @@ vnum {vnum1}|{vnum2}|{vnum3}|{vnum4}|{vnum5} "config" { FL; return yCONFIG; } "design" { FL; return yDESIGN; } "endconfig" { FL; return yENDCONFIG; } - "incdir" { FL; ERROR_RSVD_WORD("Verilog 2001-config lib.map"); } - "include" { FL; yylval.fl->v3warn(E_UNSUPPORTED, "Unsupported: Verilog 2001-config lib.map reserved word not implemented: 'include'\n" + "incdir" { FL; ERROR_RSVD_WORD("IEEE 1800-2001-config lib.map"); FL_BRK; } + "include" { FL; yylval.fl->v3warn(E_UNSUPPORTED, "Unsupported: IEEE 1800-2001-config lib.map" + " reserved word not implemented: 'include'\n" << yylval.fl->warnMore() << "... Suggest unless in a lib.map file," " want `include instead"); FL_BRK; } "instance" { FL; return yINSTANCE; } "liblist" { FL; return yLIBLIST; } - "library" { FL; ERROR_RSVD_WORD("Verilog 2001-config lib.map"); } + "library" { FL; ERROR_RSVD_WORD("IEEE 1800-2001-config lib.map"); FL_BRK; } "use" { FL; return yUSE; } } @@ -474,6 +478,11 @@ vnum {vnum1}|{vnum2}|{vnum3}|{vnum4}|{vnum5} "$changing_gclk" { FL; return yD_CHANGING_GCLK; } "$countbits" { FL; return yD_COUNTBITS; } "$countones" { FL; return yD_COUNTONES; } + "$coverage_control" { FL; ERROR_RSVD_WORD("IEEE 1800-2005"); return yaD_PLI; } + "$coverage_get" { FL; ERROR_RSVD_WORD("IEEE 1800-2005"); return yaD_PLI; } + "$coverage_get_max" { FL; ERROR_RSVD_WORD("IEEE 1800-2005"); return yaD_PLI; } + "$coverage_merge" { FL; ERROR_RSVD_WORD("IEEE 1800-2005"); return yaD_PLI; } + "$coverage_save" { FL; ERROR_RSVD_WORD("IEEE 1800-2005"); return yaD_PLI; } "$dimensions" { FL; return yD_DIMENSIONS; } "$error" { FL; return yD_ERROR; } "$falling_gclk" { FL; return yD_FALLING_GCLK; } @@ -481,13 +490,16 @@ vnum {vnum1}|{vnum2}|{vnum3}|{vnum4}|{vnum5} "$fell" { FL; return yD_FELL; } "$fell_gclk" { FL; return yD_FELL_GCLK; } "$future_gclk" { FL; return yD_FUTURE_GCLK; } + "$get_coverage" { FL; ERROR_RSVD_WORD("IEEE 1800-2005"); return yaD_PLI; } "$high" { FL; return yD_HIGH; } "$increment" { FL; return yD_INCREMENT; } + "$inferred_clock" { FL; ERROR_RSVD_WORD("IEEE 1800-2005"); return yaD_PLI; } "$inferred_disable" { FL; return yD_INFERRED_DISABLE; } "$info" { FL; return yD_INFO; } "$isunbounded" { FL; return yD_ISUNBOUNDED; } "$isunknown" { FL; return yD_ISUNKNOWN; } "$left" { FL; return yD_LEFT; } + "$load_coverage_db" { FL; ERROR_RSVD_WORD("IEEE 1800-2005"); return yaD_PLI; } "$low" { FL; return yD_LOW; } "$onehot" { FL; return yD_ONEHOT; } "$onehot0" { FL; return yD_ONEHOT0; } @@ -498,6 +510,7 @@ vnum {vnum1}|{vnum2}|{vnum3}|{vnum4}|{vnum5} "$root" { FL; return yD_ROOT; } "$rose" { FL; return yD_ROSE; } "$rose_gclk" { FL; return yD_ROSE_GCLK; } + "$set_coverage_db_name" { FL; ERROR_RSVD_WORD("IEEE 1800-2005"); return yaD_PLI; } "$size" { FL; return yD_SIZE; } "$stable" { FL; return yD_STABLE; } "$stable_gclk" { FL; return yD_STABLE_GCLK; } @@ -609,6 +622,16 @@ vnum {vnum1}|{vnum2}|{vnum3}|{vnum4}|{vnum5} /* SystemVerilog 2009 */ { + /* System Tasks */ + "$assertfailoff" { FL; return yD_ASSERTFAILOFF; } + "$assertfailon" { FL; return yD_ASSERTFAILON; } + "$assertkill" { FL; return yD_ASSERTKILL; } + "$assertnonvacuouson" { FL; return yD_ASSERTNONVACUOUSON; } + "$assertoff" { FL; return yD_ASSERTOFF; } + "$asserton" { FL; return yD_ASSERTON; } + "$assertpassoff" { FL; return yD_ASSERTPASSOFF; } + "$assertpasson" { FL; return yD_ASSERTPASSON; } + "$assertvacuousoff" { FL; return yD_ASSERTVACUOUSOFF; } /* Keywords */ "accept_on" { FL; return yACCEPT_ON; } "checker" { FL; return yCHECKER; } @@ -638,9 +661,6 @@ vnum {vnum1}|{vnum2}|{vnum3}|{vnum4}|{vnum5} { /* System Tasks */ "$assertcontrol" { FL; return yD_ASSERTCTL; } - "$assertkill" { FL; return yD_ASSERTKILL; } - "$assertoff" { FL; return yD_ASSERTOFF; } - "$asserton" { FL; return yD_ASSERTON; } /* Keywords */ "implements" { FL; return yIMPLEMENTS; } "interconnect" { FL; return yINTERCONNECT; } @@ -665,92 +685,92 @@ vnum {vnum1}|{vnum2}|{vnum3}|{vnum4}|{vnum5} { /* Generic unsupported warnings */ "1step" { FL; return y1STEP; } - "above" { ERROR_RSVD_WORD("AMS"); } - "abs" { ERROR_RSVD_WORD("AMS"); } - "absdelay" { ERROR_RSVD_WORD("AMS"); } - "abstol" { ERROR_RSVD_WORD("AMS"); } - "ac_stim" { ERROR_RSVD_WORD("AMS"); } - "access" { ERROR_RSVD_WORD("AMS"); } - "acos" { ERROR_RSVD_WORD("AMS"); } - "acosh" { ERROR_RSVD_WORD("AMS"); } - "aliasparam" { ERROR_RSVD_WORD("AMS"); } - "analog" { ERROR_RSVD_WORD("AMS"); } - "analysis" { ERROR_RSVD_WORD("AMS"); } + "above" { FL; ERROR_RSVD_WORD("AMS"); FL_BRK; } + "abs" { FL; ERROR_RSVD_WORD("AMS"); FL_BRK; } + "absdelay" { FL; ERROR_RSVD_WORD("AMS"); FL_BRK; } + "abstol" { FL; ERROR_RSVD_WORD("AMS"); FL_BRK; } + "ac_stim" { FL; ERROR_RSVD_WORD("AMS"); FL_BRK; } + "access" { FL; ERROR_RSVD_WORD("AMS"); FL_BRK; } + "acos" { FL; ERROR_RSVD_WORD("AMS"); FL_BRK; } + "acosh" { FL; ERROR_RSVD_WORD("AMS"); FL_BRK; } + "aliasparam" { FL; ERROR_RSVD_WORD("AMS"); FL_BRK; } + "analog" { FL; ERROR_RSVD_WORD("AMS"); FL_BRK; } + "analysis" { FL; ERROR_RSVD_WORD("AMS"); FL_BRK; } "asin" { FL; return yD_ASIN; } "asinh" { FL; return yD_ASINH; } - "assert" { ERROR_RSVD_WORD("AMS"); } + "assert" { FL; ERROR_RSVD_WORD("AMS"); FL_BRK; } "atan" { FL; return yD_ATAN; } "atan2" { FL; return yD_ATAN2; } "atanh" { FL; return yD_ATANH; } - "branch" { ERROR_RSVD_WORD("AMS"); } + "branch" { FL; ERROR_RSVD_WORD("AMS"); FL_BRK; } "ceil" { FL; return yD_CEIL; } - "connect" { ERROR_RSVD_WORD("AMS"); } - "connectmodule" { ERROR_RSVD_WORD("AMS"); } - "connectrules" { ERROR_RSVD_WORD("AMS"); } - "continuous" { ERROR_RSVD_WORD("AMS"); } + "connect" { FL; ERROR_RSVD_WORD("AMS"); FL_BRK; } + "connectmodule" { FL; ERROR_RSVD_WORD("AMS"); FL_BRK; } + "connectrules" { FL; ERROR_RSVD_WORD("AMS"); FL_BRK; } + "continuous" { FL; ERROR_RSVD_WORD("AMS"); FL_BRK; } "cos" { FL; return yD_COS; } "cosh" { FL; return yD_COSH; } - "cross" { ERROR_RSVD_WORD("AMS"); } - "ddt" { ERROR_RSVD_WORD("AMS"); } - "ddt_nature" { ERROR_RSVD_WORD("AMS"); } - "ddx" { ERROR_RSVD_WORD("AMS"); } - "discipline" { ERROR_RSVD_WORD("AMS"); } - "discrete" { ERROR_RSVD_WORD("AMS"); } - "domain" { ERROR_RSVD_WORD("AMS"); } - "driver_update" { ERROR_RSVD_WORD("AMS"); } - "endconnectrules" { ERROR_RSVD_WORD("AMS"); } - "enddiscipline" { ERROR_RSVD_WORD("AMS"); } - "endnature" { ERROR_RSVD_WORD("AMS"); } - "endparamset" { ERROR_RSVD_WORD("AMS"); } - "exclude" { ERROR_RSVD_WORD("AMS"); } + "cross" { FL; ERROR_RSVD_WORD("AMS"); FL_BRK; } + "ddt" { FL; ERROR_RSVD_WORD("AMS"); FL_BRK; } + "ddt_nature" { FL; ERROR_RSVD_WORD("AMS"); FL_BRK; } + "ddx" { FL; ERROR_RSVD_WORD("AMS"); FL_BRK; } + "discipline" { FL; ERROR_RSVD_WORD("AMS"); FL_BRK; } + "discrete" { FL; ERROR_RSVD_WORD("AMS"); FL_BRK; } + "domain" { FL; ERROR_RSVD_WORD("AMS"); FL_BRK; } + "driver_update" { FL; ERROR_RSVD_WORD("AMS"); FL_BRK; } + "endconnectrules" { FL; ERROR_RSVD_WORD("AMS"); FL_BRK; } + "enddiscipline" { FL; ERROR_RSVD_WORD("AMS"); FL_BRK; } + "endnature" { FL; ERROR_RSVD_WORD("AMS"); FL_BRK; } + "endparamset" { FL; ERROR_RSVD_WORD("AMS"); FL_BRK; } + "exclude" { FL; ERROR_RSVD_WORD("AMS"); FL_BRK; } "exp" { FL; return yD_EXP; } - "final_step" { ERROR_RSVD_WORD("AMS"); } - "flicker_noise" { ERROR_RSVD_WORD("AMS"); } + "final_step" { FL; ERROR_RSVD_WORD("AMS"); FL_BRK; } + "flicker_noise" { FL; ERROR_RSVD_WORD("AMS"); FL_BRK; } "floor" { FL; return yD_FLOOR; } - "flow" { ERROR_RSVD_WORD("AMS"); } - "from" { ERROR_RSVD_WORD("AMS"); } - "ground" { ERROR_RSVD_WORD("AMS"); } + "flow" { FL; ERROR_RSVD_WORD("AMS"); FL_BRK; } + "from" { FL; ERROR_RSVD_WORD("AMS"); FL_BRK; } + "ground" { FL; ERROR_RSVD_WORD("AMS"); FL_BRK; } "hypot" { FL; return yD_HYPOT; } - "idt" { ERROR_RSVD_WORD("AMS"); } - "idt_nature" { ERROR_RSVD_WORD("AMS"); } - "idtmod" { ERROR_RSVD_WORD("AMS"); } - "inf" { ERROR_RSVD_WORD("AMS"); } - "initial_step" { ERROR_RSVD_WORD("AMS"); } - "laplace_nd" { ERROR_RSVD_WORD("AMS"); } - "laplace_np" { ERROR_RSVD_WORD("AMS"); } - "laplace_zd" { ERROR_RSVD_WORD("AMS"); } - "laplace_zp" { ERROR_RSVD_WORD("AMS"); } - "last_crossing" { ERROR_RSVD_WORD("AMS"); } - "limexp" { ERROR_RSVD_WORD("AMS"); } + "idt" { FL; ERROR_RSVD_WORD("AMS"); FL_BRK; } + "idt_nature" { FL; ERROR_RSVD_WORD("AMS"); FL_BRK; } + "idtmod" { FL; ERROR_RSVD_WORD("AMS"); FL_BRK; } + "inf" { FL; ERROR_RSVD_WORD("AMS"); FL_BRK; } + "initial_step" { FL; ERROR_RSVD_WORD("AMS"); FL_BRK; } + "laplace_nd" { FL; ERROR_RSVD_WORD("AMS"); FL_BRK; } + "laplace_np" { FL; ERROR_RSVD_WORD("AMS"); FL_BRK; } + "laplace_zd" { FL; ERROR_RSVD_WORD("AMS"); FL_BRK; } + "laplace_zp" { FL; ERROR_RSVD_WORD("AMS"); FL_BRK; } + "last_crossing" { FL; ERROR_RSVD_WORD("AMS"); FL_BRK; } + "limexp" { FL; ERROR_RSVD_WORD("AMS"); FL_BRK; } "ln" { FL; return yD_LN; } "log" { FL; return yD_LOG10; } - "max" { ERROR_RSVD_WORD("AMS"); } - "merged" { ERROR_RSVD_WORD("AMS"); } - "min" { ERROR_RSVD_WORD("AMS"); } - "nature" { ERROR_RSVD_WORD("AMS"); } - "net_resolution" { ERROR_RSVD_WORD("AMS"); } - "noise_table" { ERROR_RSVD_WORD("AMS"); } - "paramset" { ERROR_RSVD_WORD("AMS"); } - "potential" { ERROR_RSVD_WORD("AMS"); } + "max" { FL; ERROR_RSVD_WORD("AMS"); FL_BRK; } + "merged" { FL; ERROR_RSVD_WORD("AMS"); FL_BRK; } + "min" { FL; ERROR_RSVD_WORD("AMS"); FL_BRK; } + "nature" { FL; ERROR_RSVD_WORD("AMS"); FL_BRK; } + "net_resolution" { FL; ERROR_RSVD_WORD("AMS"); FL_BRK; } + "noise_table" { FL; ERROR_RSVD_WORD("AMS"); FL_BRK; } + "paramset" { FL; ERROR_RSVD_WORD("AMS"); FL_BRK; } + "potential" { FL; ERROR_RSVD_WORD("AMS"); FL_BRK; } "pow" { FL; return yD_POW; } - "resolveto" { ERROR_RSVD_WORD("AMS"); } + "resolveto" { FL; ERROR_RSVD_WORD("AMS"); FL_BRK; } "sin" { FL; return yD_SIN; } "sinh" { FL; return yD_SINH; } - "slew" { ERROR_RSVD_WORD("AMS"); } - "split" { ERROR_RSVD_WORD("AMS"); } + "slew" { FL; ERROR_RSVD_WORD("AMS"); FL_BRK; } + "split" { FL; ERROR_RSVD_WORD("AMS"); FL_BRK; } "sqrt" { FL; return yD_SQRT; } "string" { FL; return ySTRING; } "tan" { FL; return yD_TAN; } "tanh" { FL; return yD_TANH; } - "timer" { ERROR_RSVD_WORD("AMS"); } - "transition" { ERROR_RSVD_WORD("AMS"); } - "units" { ERROR_RSVD_WORD("AMS"); } - "white_noise" { ERROR_RSVD_WORD("AMS"); } + "timer" { FL; ERROR_RSVD_WORD("AMS"); FL_BRK; } + "transition" { FL; ERROR_RSVD_WORD("AMS"); FL_BRK; } + "units" { FL; ERROR_RSVD_WORD("AMS"); FL_BRK; } + "white_noise" { FL; ERROR_RSVD_WORD("AMS"); FL_BRK; } "wreal" { FL; return yWREAL; } - "zi_nd" { ERROR_RSVD_WORD("AMS"); } - "zi_np" { ERROR_RSVD_WORD("AMS"); } - "zi_zd" { ERROR_RSVD_WORD("AMS"); } - "zi_zp" { ERROR_RSVD_WORD("AMS"); } + "zi_nd" { FL; ERROR_RSVD_WORD("AMS"); FL_BRK; } + "zi_np" { FL; ERROR_RSVD_WORD("AMS"); FL_BRK; } + "zi_zd" { FL; ERROR_RSVD_WORD("AMS"); FL_BRK; } + "zi_zp" { FL; ERROR_RSVD_WORD("AMS"); FL_BRK; } } /************************************************************************/ diff --git a/src/verilog.y b/src/verilog.y index cb877bde8..496e634aa 100644 --- a/src/verilog.y +++ b/src/verilog.y @@ -530,13 +530,13 @@ BISONPRE_VERSION(3.7,%define api.header.include {"V3ParseBison.h"}) %token yaSTRING "STRING" %token yaSTRING__IGNORE "STRING-ignored" // Used when expr:string not allowed // IEEE: edge_descriptor -%token yaEDGEDESC "EDGE DESCRIPTOR" +%token yaEDGEDESC "EDGE DESCRIPTOR" %token yaTIMINGSPEC "TIMING SPEC ELEMENT" %token ygenSTRENGTH "STRENGTH keyword (strong1/etc)" -%token yaTABLE_FIELD "UDP table field" +%token yaTABLE_FIELD "UDP table field" %token yaTABLE_LRSEP ":" %token yaTABLE_LINEEND "UDP table line end" @@ -903,9 +903,15 @@ BISONPRE_VERSION(3.7,%define api.header.include {"V3ParseBison.h"}) %token yD_ASIN "$asin" %token yD_ASINH "$asinh" %token yD_ASSERTCTL "$assertcontrol" +%token yD_ASSERTFAILOFF "$assertfailoff" +%token yD_ASSERTFAILON "$assertfailon" %token yD_ASSERTKILL "$assertkill" +%token yD_ASSERTNONVACUOUSON "$assertnonvacuouson" %token yD_ASSERTOFF "$assertoff" %token yD_ASSERTON "$asserton" +%token yD_ASSERTPASSOFF "$assertpassoff" +%token yD_ASSERTPASSON "$assertpasson" +%token yD_ASSERTVACUOUSOFF "$assertvacuousoff" %token yD_ATAN "$atan" %token yD_ATAN2 "$atan2" %token yD_ATANH "$atanh" @@ -4483,15 +4489,33 @@ system_t_call: // IEEE: system_tf_call (as task) | yD_ASSERTCTL '(' expr ',' exprE ',' exprE ')' { $$ = new AstAssertCtl{$1, $3, $5, $7}; } | yD_ASSERTCTL '(' expr ',' exprE ',' exprE ',' exprE ')' { $$ = new AstAssertCtl{$1, $3, $5, $7, $9}; } | yD_ASSERTCTL '(' expr ',' exprE ',' exprE ',' exprE ',' exprList ')' { $$ = new AstAssertCtl{$1, $3, $5, $7, $9, $11}; } - | yD_ASSERTKILL parenE { $$ = new AstAssertCtl{$1, VAssertCtlType::KILL}; } - | yD_ASSERTKILL '(' expr ')' { $$ = new AstAssertCtl{$1, VAssertCtlType::KILL, $3}; } - | yD_ASSERTKILL '(' exprE ',' exprList ')' { $$ = new AstAssertCtl{$1, VAssertCtlType::KILL, $3, $5}; } - | yD_ASSERTOFF parenE { $$ = new AstAssertCtl{$1, VAssertCtlType::OFF}; } - | yD_ASSERTOFF '(' expr ')' { $$ = new AstAssertCtl{$1, VAssertCtlType::OFF, $3}; } - | yD_ASSERTOFF '(' exprE ',' exprList ')' { $$ = new AstAssertCtl{$1, VAssertCtlType::OFF, $3, $5}; } - | yD_ASSERTON parenE { $$ = new AstAssertCtl{$1, VAssertCtlType::ON}; } - | yD_ASSERTON '(' expr ')' { $$ = new AstAssertCtl{$1, VAssertCtlType::ON, $3}; } - | yD_ASSERTON '(' exprE ',' exprList ')' { $$ = new AstAssertCtl{$1, VAssertCtlType::ON, $3, $5}; } + | yD_ASSERTFAILOFF '(' expr ')' { $$ = new AstAssertCtl{$1, VAssertCtlType::FAIL_OFF, 31, 7, $3}; } + | yD_ASSERTFAILOFF '(' exprE ',' exprList ')' { $$ = new AstAssertCtl{$1, VAssertCtlType::FAIL_OFF, 31, 7, $3, $5}; } + | yD_ASSERTFAILOFF parenE { $$ = new AstAssertCtl{$1, VAssertCtlType::FAIL_OFF, 31, 7}; } + | yD_ASSERTFAILON '(' expr ')' { $$ = new AstAssertCtl{$1, VAssertCtlType::FAIL_ON, 31, 7, $3}; } + | yD_ASSERTFAILON '(' exprE ',' exprList ')' { $$ = new AstAssertCtl{$1, VAssertCtlType::FAIL_ON, 31, 7, $3, $5}; } + | yD_ASSERTFAILON parenE { $$ = new AstAssertCtl{$1, VAssertCtlType::FAIL_ON, 31, 7}; } + | yD_ASSERTKILL '(' expr ')' { $$ = new AstAssertCtl{$1, VAssertCtlType::KILL, 15, 7, $3}; } + | yD_ASSERTKILL '(' exprE ',' exprList ')' { $$ = new AstAssertCtl{$1, VAssertCtlType::KILL, 15, 7, $3, $5}; } + | yD_ASSERTKILL parenE { $$ = new AstAssertCtl{$1, VAssertCtlType::KILL, 15, 7}; } + | yD_ASSERTNONVACUOUSON '(' expr ')' { $$ = new AstAssertCtl{$1, VAssertCtlType::NONVACUOUS_ON, 31, 7, $3}; } + | yD_ASSERTNONVACUOUSON '(' exprE ',' exprList ')' { $$ = new AstAssertCtl{$1, VAssertCtlType::NONVACUOUS_ON, 31, 7, $3, $5}; } + | yD_ASSERTNONVACUOUSON parenE { $$ = new AstAssertCtl{$1, VAssertCtlType::NONVACUOUS_ON, 31, 7}; } + | yD_ASSERTOFF '(' expr ')' { $$ = new AstAssertCtl{$1, VAssertCtlType::OFF, 15, 7, $3}; } + | yD_ASSERTOFF '(' exprE ',' exprList ')' { $$ = new AstAssertCtl{$1, VAssertCtlType::OFF, 15, 7, $3, $5}; } + | yD_ASSERTOFF parenE { $$ = new AstAssertCtl{$1, VAssertCtlType::OFF, 15, 7}; } + | yD_ASSERTON '(' expr ')' { $$ = new AstAssertCtl{$1, VAssertCtlType::ON, 15, 7, $3}; } + | yD_ASSERTON '(' exprE ',' exprList ')' { $$ = new AstAssertCtl{$1, VAssertCtlType::ON, 15, 7, $3, $5}; } + | yD_ASSERTON parenE { $$ = new AstAssertCtl{$1, VAssertCtlType::ON, 15, 7}; } + | yD_ASSERTPASSOFF '(' expr ')' { $$ = new AstAssertCtl{$1, VAssertCtlType::PASS_OFF, 31, 7, $3}; } + | yD_ASSERTPASSOFF '(' exprE ',' exprList ')' { $$ = new AstAssertCtl{$1, VAssertCtlType::PASS_OFF, 31, 7, $3, $5}; } + | yD_ASSERTPASSOFF parenE { $$ = new AstAssertCtl{$1, VAssertCtlType::PASS_OFF, 31, 7}; } + | yD_ASSERTPASSON '(' expr ')' { $$ = new AstAssertCtl{$1, VAssertCtlType::PASS_ON, 31, 7, $3}; } + | yD_ASSERTPASSON '(' exprE ',' exprList ')' { $$ = new AstAssertCtl{$1, VAssertCtlType::PASS_ON, 31, 7, $3, $5}; } + | yD_ASSERTPASSON parenE { $$ = new AstAssertCtl{$1, VAssertCtlType::PASS_ON, 31, 7}; } + | yD_ASSERTVACUOUSOFF '(' expr ')' { $$ = new AstAssertCtl{$1, VAssertCtlType::VACUOUS_OFF, 31, 7, $3}; } + | yD_ASSERTVACUOUSOFF '(' exprE ',' exprList ')' { $$ = new AstAssertCtl{$1, VAssertCtlType::VACUOUS_OFF, 31, 7, $3, $5}; } + | yD_ASSERTVACUOUSOFF parenE { $$ = new AstAssertCtl{$1, VAssertCtlType::VACUOUS_OFF, 31, 7}; } // | yD_MONITOROFF parenE { $$ = new AstMonitorOff{$1, true}; } | yD_MONITORON parenE { $$ = new AstMonitorOff{$1, false}; } @@ -6654,9 +6678,10 @@ sequence_declarationBody: // IEEE: part of sequence_declaration property_spec: // IEEE: property_spec //UNSUP: This rule has been super-specialized to what is supported now //UNSUP remove below - '@' '(' senitemEdge ')' yDISABLE yIFF '(' expr ')' pexpr + '@' '(' senitem ')' yDISABLE yIFF '(' expr ')' pexpr { $$ = new AstPropSpec{$1, $3, $8, $10}; } - | '@' '(' senitemEdge ')' pexpr { $$ = new AstPropSpec{$1, $3, nullptr, $5}; } + | '@' '(' senitem ')' pexpr + { $$ = new AstPropSpec{$1, $3, nullptr, $5}; } // // Disable applied after the event occurs, // // so no existing AST can represent this | yDISABLE yIFF '(' expr ')' '@' '(' senitemEdge ')' pexpr diff --git a/test_regress/t/t_assert_ctl_arg.v b/test_regress/t/t_assert_ctl_arg.v index c3961213e..94f2b3a41 100644 --- a/test_regress/t/t_assert_ctl_arg.v +++ b/test_regress/t/t_assert_ctl_arg.v @@ -25,9 +25,9 @@ module t (/*AUTOARG*/ ); input clk; - let ON = 3; - let OFF = 4; - let KILL = 5; + let On = 3; + let Off = 4; + let Kill = 5; let CONCURRENT = 1; let SIMPLE_IMMEDIATE = 2; @@ -44,24 +44,24 @@ module t (/*AUTOARG*/ initial begin // simple immediate - $assertcontrol(OFF, ALL_TYPES); - $assertcontrol(ON, SIMPLE_IMMEDIATE); + $assertcontrol(Off, ALL_TYPES); + $assertcontrol(On, SIMPLE_IMMEDIATE); `RUN_ALL_ASSERTS - $assertcontrol(OFF, SIMPLE_IMMEDIATE); + $assertcontrol(Off, SIMPLE_IMMEDIATE); `RUN_ALL_ASSERTS // observed deferred immediate - $assertcontrol(OFF, ALL_TYPES); - $assertcontrol(ON, OBSERVED_DEFERRED_IMMEDIATE); + $assertcontrol(Off, ALL_TYPES); + $assertcontrol(On, OBSERVED_DEFERRED_IMMEDIATE); `RUN_ALL_ASSERTS - $assertcontrol(OFF, OBSERVED_DEFERRED_IMMEDIATE); + $assertcontrol(Off, OBSERVED_DEFERRED_IMMEDIATE); `RUN_ALL_ASSERTS // final deferred immediate - $assertcontrol(OFF, ALL_TYPES); - $assertcontrol(ON, FINAL_DEFERRED_IMMEDIATE); + $assertcontrol(Off, ALL_TYPES); + $assertcontrol(On, FINAL_DEFERRED_IMMEDIATE); `RUN_ALL_ASSERTS - $assertcontrol(OFF, FINAL_DEFERRED_IMMEDIATE); + $assertcontrol(Off, FINAL_DEFERRED_IMMEDIATE); `RUN_ALL_ASSERTS // on, off, kill test @@ -72,54 +72,54 @@ module t (/*AUTOARG*/ $assertkill; `RUN_ALL_ASSERTS; - $assertcontrol(ON, SIMPLE_IMMEDIATE|OBSERVED_DEFERRED_IMMEDIATE); + $assertcontrol(On, SIMPLE_IMMEDIATE|OBSERVED_DEFERRED_IMMEDIATE); `RUN_ALL_ASSERTS; - $assertcontrol(ON, FINAL_DEFERRED_IMMEDIATE); + $assertcontrol(On, FINAL_DEFERRED_IMMEDIATE); `RUN_ALL_ASSERTS; - $assertcontrol(OFF, OBSERVED_DEFERRED_IMMEDIATE|FINAL_DEFERRED_IMMEDIATE); + $assertcontrol(Off, OBSERVED_DEFERRED_IMMEDIATE|FINAL_DEFERRED_IMMEDIATE); `RUN_ALL_ASSERTS; - $assertcontrol(OFF, FINAL_DEFERRED_IMMEDIATE); + $assertcontrol(Off, FINAL_DEFERRED_IMMEDIATE); `RUN_ALL_ASSERTS; - $assertcontrol(OFF, SIMPLE_IMMEDIATE); + $assertcontrol(Off, SIMPLE_IMMEDIATE); `RUN_ALL_ASSERTS; - $assertcontrol(ON, SIMPLE_IMMEDIATE); + $assertcontrol(On, SIMPLE_IMMEDIATE); `RUN_ALL_ASSERTS; - $assertcontrol(OFF, ALL_TYPES); + $assertcontrol(Off, ALL_TYPES); `RUN_ALL_ASSERTS; - $assertcontrol(ON, ALL_TYPES); + $assertcontrol(On, ALL_TYPES); `RUN_ALL_ASSERTS; - $assertcontrol(KILL, ALL_TYPES); + $assertcontrol(Kill, ALL_TYPES); `RUN_ALL_ASSERTS; // directive_type test $assertoff; - $assertcontrol(ON, ALL_TYPES, ASSERT); + $assertcontrol(On, ALL_TYPES, ASSERT); `RUN_ALL_ASSERTS; - $assertcontrol(OFF, ALL_TYPES, ASSERT); - $assertcontrol(ON, ALL_TYPES, COVER); + $assertcontrol(Off, ALL_TYPES, ASSERT); + $assertcontrol(On, ALL_TYPES, COVER); `RUN_ALL_ASSERTS; - $assertcontrol(OFF, ALL_TYPES, COVER); - $assertcontrol(ON, ALL_TYPES, ASSUME); + $assertcontrol(Off, ALL_TYPES, COVER); + $assertcontrol(On, ALL_TYPES, ASSUME); `RUN_ALL_ASSERTS; - $assertcontrol(OFF, ALL_TYPES, ASSUME); - $assertcontrol(ON, ALL_TYPES, ASSERT|COVER); + $assertcontrol(Off, ALL_TYPES, ASSUME); + $assertcontrol(On, ALL_TYPES, ASSERT|COVER); `RUN_ALL_ASSERTS; - $assertcontrol(ON, ALL_TYPES, ASSUME); + $assertcontrol(On, ALL_TYPES, ASSUME); `RUN_ALL_ASSERTS; $assertoff; `RUN_ALL_ASSERTS; - $assertcontrol(ON, SIMPLE_IMMEDIATE|FINAL_DEFERRED_IMMEDIATE, COVER|ASSUME); + $assertcontrol(On, SIMPLE_IMMEDIATE|FINAL_DEFERRED_IMMEDIATE, COVER|ASSUME); `RUN_ALL_ASSERTS; $assertoff; // concurrent test #10; $display("Disabling concurrent asserts, time: %g", $time); - $assertcontrol(ON, ALL_TYPES); - $assertcontrol(OFF, CONCURRENT); + $assertcontrol(On, ALL_TYPES); + $assertcontrol(Off, CONCURRENT); #10; $display("Enabling concurrent asserts, time: %g", $time); - $assertcontrol(ON, CONCURRENT); + $assertcontrol(On, CONCURRENT); $write("*-* All Finished *-*\n"); $finish; diff --git a/test_regress/t/t_assert_ctl_type_bad.out b/test_regress/t/t_assert_ctl_type_bad.out new file mode 100644 index 000000000..c673cff8f --- /dev/null +++ b/test_regress/t/t_assert_ctl_type_bad.out @@ -0,0 +1,8 @@ +%Error: t/t_assert_ctl_type_bad.v:9:5: Bad assertcontrol control_type (IEEE 1800-2023 Table 20-5) + 9 | $assertcontrol(0); + | ^~~~~~~~~~~~~~ + ... See the manual at https://verilator.org/verilator_doc.html?v=latest for more assistance. +%Error: t/t_assert_ctl_type_bad.v:10:5: Bad assertcontrol control_type (IEEE 1800-2023 Table 20-5) + 10 | $assertcontrol(100); + | ^~~~~~~~~~~~~~ +%Error: Exiting due to diff --git a/test_regress/t/t_assert_ctl_type_bad.py b/test_regress/t/t_assert_ctl_type_bad.py new file mode 100755 index 000000000..0275f2df9 --- /dev/null +++ b/test_regress/t/t_assert_ctl_type_bad.py @@ -0,0 +1,16 @@ +#!/usr/bin/env python3 +# DESCRIPTION: Verilator: Verilog Test driver/expect definition +# +# Copyright 2024 by Wilson Snyder. This program is free software; you +# can redistribute it and/or modify it under the terms of either the GNU +# Lesser General Public License Version 3 or the Perl Artistic License +# Version 2.0. +# SPDX-License-Identifier: LGPL-3.0-only OR Artistic-2.0 + +import vltest_bootstrap + +test.scenarios('linter') + +test.lint(verilator_flags2=['--assert'], fails=True, expect_filename=test.golden_filename) + +test.passes() diff --git a/test_regress/t/t_assert_ctl_type_bad.v b/test_regress/t/t_assert_ctl_type_bad.v new file mode 100755 index 000000000..7d25822ce --- /dev/null +++ b/test_regress/t/t_assert_ctl_type_bad.v @@ -0,0 +1,12 @@ +// DESCRIPTION: Verilator: Verilog Test module +// +// This file ONLY is placed under the Creative Commons Public Domain, for +// any use, without warranty, 2025 by Wilson Snyder. +// SPDX-License-Identifier: CC0-1.0 + +module t; + initial begin + $assertcontrol(0); + $assertcontrol(100); + end +endmodule diff --git a/test_regress/t/t_assert_ctl_unsup.out b/test_regress/t/t_assert_ctl_unsup.out index 322ec5bd8..691b8d926 100644 --- a/test_regress/t/t_assert_ctl_unsup.out +++ b/test_regress/t/t_assert_ctl_unsup.out @@ -1,58 +1,123 @@ -%Error-UNSUPPORTED: t/t_assert_ctl_unsup.v:18:7: Unsupported: non-constant assert assertion-type expression +%Error-UNSUPPORTED: t/t_assert_ctl_unsup.v:25:7: Unsupported: non-constant assert assertion-type expression : ... note: In instance 't.unsupported_ctl_type' - 18 | $assertcontrol(1, a); + 25 | $assertcontrol(Lock, a); | ^~~~~~~~~~~~~~ ... For error description see https://verilator.org/warn/UNSUPPORTED?v=latest -%Error-UNSUPPORTED: t/t_assert_ctl_unsup.v:19:7: Unsupported assertcontrol control_type - 19 | $assertcontrol(2); +%Error-UNSUPPORTED: t/t_assert_ctl_unsup.v:27:7: Unsupported assertcontrol control_type + 27 | $assertcontrol(Unlock); | ^~~~~~~~~~~~~~ -%Error-UNSUPPORTED: t/t_assert_ctl_unsup.v:20:7: Unsupported assertcontrol control_type - 20 | $assertcontrol(6); +%Error-UNSUPPORTED: t/t_assert_ctl_unsup.v:29:7: Unsupported assertcontrol control_type + 29 | $assertcontrol(PassOn); | ^~~~~~~~~~~~~~ -%Error-UNSUPPORTED: t/t_assert_ctl_unsup.v:21:7: Unsupported assertcontrol control_type - 21 | $assertcontrol(7); +%Error-UNSUPPORTED: t/t_assert_ctl_unsup.v:30:7: Unsupported: assert control assertion_type + : ... note: In instance 't.unsupported_ctl_type' + 30 | $assertpasson; + | ^~~~~~~~~~~~~ +%Error-UNSUPPORTED: t/t_assert_ctl_unsup.v:31:7: Unsupported: assert control assertion_type + : ... note: In instance 't.unsupported_ctl_type' + 31 | $assertpasson(a); + | ^~~~~~~~~~~~~ +%Error-UNSUPPORTED: t/t_assert_ctl_unsup.v:32:7: Unsupported: assert control assertion_type + : ... note: In instance 't.unsupported_ctl_type' + 32 | $assertpasson(a, t); + | ^~~~~~~~~~~~~ +%Error-UNSUPPORTED: t/t_assert_ctl_unsup.v:34:7: Unsupported assertcontrol control_type + 34 | $assertcontrol(PassOff); | ^~~~~~~~~~~~~~ -%Error-UNSUPPORTED: t/t_assert_ctl_unsup.v:22:7: Unsupported assertcontrol control_type - 22 | $assertcontrol(8); +%Error-UNSUPPORTED: t/t_assert_ctl_unsup.v:35:7: Unsupported: assert control assertion_type + : ... note: In instance 't.unsupported_ctl_type' + 35 | $assertpassoff; | ^~~~~~~~~~~~~~ -%Error-UNSUPPORTED: t/t_assert_ctl_unsup.v:23:7: Unsupported assertcontrol control_type - 23 | $assertcontrol(9); +%Error-UNSUPPORTED: t/t_assert_ctl_unsup.v:36:7: Unsupported: assert control assertion_type + : ... note: In instance 't.unsupported_ctl_type' + 36 | $assertpassoff(a); | ^~~~~~~~~~~~~~ -%Error-UNSUPPORTED: t/t_assert_ctl_unsup.v:24:7: Unsupported assertcontrol control_type - 24 | $assertcontrol(10); +%Error-UNSUPPORTED: t/t_assert_ctl_unsup.v:37:7: Unsupported: assert control assertion_type + : ... note: In instance 't.unsupported_ctl_type' + 37 | $assertpassoff(a, t); | ^~~~~~~~~~~~~~ -%Error-UNSUPPORTED: t/t_assert_ctl_unsup.v:25:7: Unsupported assertcontrol control_type - 25 | $assertcontrol(11); +%Error-UNSUPPORTED: t/t_assert_ctl_unsup.v:39:7: Unsupported assertcontrol control_type + 39 | $assertcontrol(FailOn); | ^~~~~~~~~~~~~~ -%Error-UNSUPPORTED: t/t_assert_ctl_unsup.v:32:7: Unsupported: non-const assert control type expression +%Error-UNSUPPORTED: t/t_assert_ctl_unsup.v:40:7: Unsupported: assert control assertion_type + : ... note: In instance 't.unsupported_ctl_type' + 40 | $assertfailon; + | ^~~~~~~~~~~~~ +%Error-UNSUPPORTED: t/t_assert_ctl_unsup.v:41:7: Unsupported: assert control assertion_type + : ... note: In instance 't.unsupported_ctl_type' + 41 | $assertfailon(a); + | ^~~~~~~~~~~~~ +%Error-UNSUPPORTED: t/t_assert_ctl_unsup.v:42:7: Unsupported: assert control assertion_type + : ... note: In instance 't.unsupported_ctl_type' + 42 | $assertfailon(a, t); + | ^~~~~~~~~~~~~ +%Error-UNSUPPORTED: t/t_assert_ctl_unsup.v:44:7: Unsupported assertcontrol control_type + 44 | $assertcontrol(FailOff); + | ^~~~~~~~~~~~~~ +%Error-UNSUPPORTED: t/t_assert_ctl_unsup.v:45:7: Unsupported: assert control assertion_type + : ... note: In instance 't.unsupported_ctl_type' + 45 | $assertfailoff; + | ^~~~~~~~~~~~~~ +%Error-UNSUPPORTED: t/t_assert_ctl_unsup.v:46:7: Unsupported: assert control assertion_type + : ... note: In instance 't.unsupported_ctl_type' + 46 | $assertfailoff(a); + | ^~~~~~~~~~~~~~ +%Error-UNSUPPORTED: t/t_assert_ctl_unsup.v:47:7: Unsupported: assert control assertion_type + : ... note: In instance 't.unsupported_ctl_type' + 47 | $assertfailoff(a, t); + | ^~~~~~~~~~~~~~ +%Error-UNSUPPORTED: t/t_assert_ctl_unsup.v:49:7: Unsupported assertcontrol control_type + 49 | $assertcontrol(NonvacuousOn); + | ^~~~~~~~~~~~~~ +%Error-UNSUPPORTED: t/t_assert_ctl_unsup.v:50:7: Unsupported: assert control assertion_type + : ... note: In instance 't.unsupported_ctl_type' + 50 | $assertnonvacuouson; + | ^~~~~~~~~~~~~~~~~~~ +%Error-UNSUPPORTED: t/t_assert_ctl_unsup.v:51:7: Unsupported: assert control assertion_type + : ... note: In instance 't.unsupported_ctl_type' + 51 | $assertnonvacuouson(a); + | ^~~~~~~~~~~~~~~~~~~ +%Error-UNSUPPORTED: t/t_assert_ctl_unsup.v:52:7: Unsupported: assert control assertion_type + : ... note: In instance 't.unsupported_ctl_type' + 52 | $assertnonvacuouson(a, t); + | ^~~~~~~~~~~~~~~~~~~ +%Error-UNSUPPORTED: t/t_assert_ctl_unsup.v:54:7: Unsupported assertcontrol control_type + 54 | $assertcontrol(VacuousOff); + | ^~~~~~~~~~~~~~ +%Error-UNSUPPORTED: t/t_assert_ctl_unsup.v:55:7: Unsupported: assert control assertion_type + : ... note: In instance 't.unsupported_ctl_type' + 55 | $assertvacuousoff; + | ^~~~~~~~~~~~~~~~~ +%Error-UNSUPPORTED: t/t_assert_ctl_unsup.v:56:7: Unsupported: assert control assertion_type + : ... note: In instance 't.unsupported_ctl_type' + 56 | $assertvacuousoff(a); + | ^~~~~~~~~~~~~~~~~ +%Error-UNSUPPORTED: t/t_assert_ctl_unsup.v:57:7: Unsupported: assert control assertion_type + : ... note: In instance 't.unsupported_ctl_type' + 57 | $assertvacuousoff(a, t); + | ^~~~~~~~~~~~~~~~~ +%Error-UNSUPPORTED: t/t_assert_ctl_unsup.v:64:7: Unsupported: non-const assert control type expression : ... note: In instance 't.unsupported_ctl_type_expr' - 32 | $assertcontrol(ctl_type); + 64 | $assertcontrol(ctl_type); | ^~~~~~~~~~~~~~ -%Error: t/t_assert_ctl_unsup.v:38:7: Bad assertcontrol control_type (IEEE 1800-2023 Table 20-5) - 38 | $assertcontrol(0); - | ^~~~~~~~~~~~~~ - ... See the manual at https://verilator.org/verilator_doc.html?v=latest for more assistance. -%Error: t/t_assert_ctl_unsup.v:39:7: Bad assertcontrol control_type (IEEE 1800-2023 Table 20-5) - 39 | $assertcontrol(100); - | ^~~~~~~~~~~~~~ -%Error-UNSUPPORTED: t/t_assert_ctl_unsup.v:68:10: Unsupported: assertcontrols in classes or interfaces +%Error-UNSUPPORTED: t/t_assert_ctl_unsup.v:93:10: Unsupported: assertcontrols in classes or interfaces : ... note: In instance 't.assert_class' - 68 | $asserton; + 93 | $asserton; | ^~~~~~~~~ -%Error-UNSUPPORTED: t/t_assert_ctl_unsup.v:74:10: Unsupported: assertcontrols in classes or interfaces +%Error-UNSUPPORTED: t/t_assert_ctl_unsup.v:99:10: Unsupported: assertcontrols in classes or interfaces : ... note: In instance 't.assert_class' - 74 | $assertoff; + 99 | $assertoff; | ^~~~~~~~~~ -%Error-UNSUPPORTED: t/t_assert_ctl_unsup.v:147:7: Unsupported: assertcontrols in classes or interfaces +%Error-UNSUPPORTED: t/t_assert_ctl_unsup.v:172:7: Unsupported: assertcontrols in classes or interfaces : ... note: In instance 't.assert_iface' - 147 | $assertoff; + 172 | $assertoff; | ^~~~~~~~~~ -%Error-UNSUPPORTED: t/t_assert_ctl_unsup.v:113:7: Unsupported: assertcontrols in classes or interfaces +%Error-UNSUPPORTED: t/t_assert_ctl_unsup.v:138:7: Unsupported: assertcontrols in classes or interfaces : ... note: In instance 't.assert_iface_class' - 113 | $assertoff; + 138 | $assertoff; | ^~~~~~~~~~ -%Error-UNSUPPORTED: t/t_assert_ctl_unsup.v:120:7: Unsupported: assertcontrols in classes or interfaces +%Error-UNSUPPORTED: t/t_assert_ctl_unsup.v:145:7: Unsupported: assertcontrols in classes or interfaces : ... note: In instance 't.assert_iface_class' - 120 | $asserton; + 145 | $asserton; | ^~~~~~~~~ %Error: Exiting due to diff --git a/test_regress/t/t_assert_ctl_unsup.v b/test_regress/t/t_assert_ctl_unsup.v index 5a01ac190..b0ec25707 100755 --- a/test_regress/t/t_assert_ctl_unsup.v +++ b/test_regress/t/t_assert_ctl_unsup.v @@ -7,7 +7,6 @@ module t(input logic clk); unsupported_ctl_type unsupported_ctl_type(clk ? 1 : 2); unsupported_ctl_type_expr unsupported_ctl_type_expr(); - bad_assertcontrol_ctl_type bad_assertcontrol_ctl_type(); assert_class assert_class(); assert_iface assert_iface(); assert_iface_class assert_iface_class(); @@ -15,14 +14,47 @@ endmodule module unsupported_ctl_type(input int a); initial begin - $assertcontrol(1, a); - $assertcontrol(2); - $assertcontrol(6); - $assertcontrol(7); - $assertcontrol(8); - $assertcontrol(9); - $assertcontrol(10); - $assertcontrol(11); + let Lock = 1; + let Unlock = 2; + let PassOn = 6; + let PassOff = 7; + let FailOn = 8; + let FailOff = 9; + let NonvacuousOn = 10; + let VacuousOff = 11; + $assertcontrol(Lock, a); + + $assertcontrol(Unlock); + + $assertcontrol(PassOn); + $assertpasson; + $assertpasson(a); + $assertpasson(a, t); + + $assertcontrol(PassOff); + $assertpassoff; + $assertpassoff(a); + $assertpassoff(a, t); + + $assertcontrol(FailOn); + $assertfailon; + $assertfailon(a); + $assertfailon(a, t); + + $assertcontrol(FailOff); + $assertfailoff; + $assertfailoff(a); + $assertfailoff(a, t); + + $assertcontrol(NonvacuousOn); + $assertnonvacuouson; + $assertnonvacuouson(a); + $assertnonvacuouson(a, t); + + $assertcontrol(VacuousOff); + $assertvacuousoff; + $assertvacuousoff(a); + $assertvacuousoff(a, t); end endmodule @@ -33,13 +65,6 @@ module unsupported_ctl_type_expr; end endmodule -module bad_assertcontrol_ctl_type; - initial begin - $assertcontrol(0); - $assertcontrol(100); - end -endmodule - module assert_class; virtual class AssertCtl; pure virtual function void virtual_assert_ctl(); diff --git a/test_regress/t/t_config_include_bad.out b/test_regress/t/t_config_include_bad.out index c076f0ee5..f0fc944e1 100644 --- a/test_regress/t/t_config_include_bad.out +++ b/test_regress/t/t_config_include_bad.out @@ -1,4 +1,4 @@ -%Error-UNSUPPORTED: t/t_config_include_bad.v:7:1: Unsupported: Verilog 2001-config lib.map reserved word not implemented: 'include' +%Error-UNSUPPORTED: t/t_config_include_bad.v:7:1: Unsupported: IEEE 1800-2001-config lib.map reserved word not implemented: 'include' : ... Suggest unless in a lib.map file, want `include instead 7 | include "meant_to_tick_include.v" | ^~~~~~~ diff --git a/test_regress/t/t_config_libmap.out b/test_regress/t/t_config_libmap.out index 56ad3db45..8b2993499 100644 --- a/test_regress/t/t_config_libmap.out +++ b/test_regress/t/t_config_libmap.out @@ -1,4 +1,4 @@ -%Error-UNSUPPORTED: t/t_config_libmap.map:9:1: Unsupported: Verilog 2001-config lib.map reserved word not implemented: 'include' +%Error-UNSUPPORTED: t/t_config_libmap.map:9:1: Unsupported: IEEE 1800-2001-config lib.map reserved word not implemented: 'include' : ... Suggest unless in a lib.map file, want `include instead 9 | include ./t_config_libmap_inc.map | ^~~~~~~ @@ -7,23 +7,25 @@ 9 | include ./t_config_libmap_inc.map | ^ ... See the manual at https://verilator.org/verilator_doc.html?v=latest for more assistance. -%Error-UNSUPPORTED: t/t_config_libmap.map:11:1: Unsupported: Verilog 2001-config lib.map reserved word not implemented: 'library' +%Error-UNSUPPORTED: t/t_config_libmap.map:11:1: Unsupported: IEEE 1800-2001-config lib.map reserved word not implemented: 'library' 11 | library rtllib *.v; - | ^~~~~~~~~~~~~~ -%Error-UNSUPPORTED: t/t_config_libmap.map:12:1: Unsupported: Verilog 2001-config lib.map reserved word not implemented: 'library' + | ^~~~~~~ +%Error-UNSUPPORTED: t/t_config_libmap.map:12:1: Unsupported: IEEE 1800-2001-config lib.map reserved word not implemented: 'library' 12 | library rtllib2 *.v, *.sv; - | ^~~~~~~~~~~~~~ -%Error-UNSUPPORTED: t/t_config_libmap.map:13:1: Unsupported: Verilog 2001-config lib.map reserved word not implemented: 'library' + | ^~~~~~~ +%Error-UNSUPPORTED: t/t_config_libmap.map:13:1: Unsupported: IEEE 1800-2001-config lib.map reserved word not implemented: 'library' 13 | library rtllib3 *.v -incdir *.vh; - | ^~~~~~~~~~~~~~ -%Error-UNSUPPORTED: t/t_config_libmap.map:13:29: Unsupported: Verilog 2001-config lib.map reserved word not implemented: 'incdir' -%Error-UNSUPPORTED: t/t_config_libmap.map:14:1: Unsupported: Verilog 2001-config lib.map reserved word not implemented: 'library' + | ^~~~~~~ +%Error-UNSUPPORTED: t/t_config_libmap.map:13:22: Unsupported: IEEE 1800-2001-config lib.map reserved word not implemented: 'incdir' + 13 | library rtllib3 *.v -incdir *.vh; + | ^~~~~~ +%Error-UNSUPPORTED: t/t_config_libmap.map:14:1: Unsupported: IEEE 1800-2001-config lib.map reserved word not implemented: 'library' 14 | library rtllib4 *.v -incdir *.vh, *.svh; - | ^~~~~~~~~~~~~~ -%Error-UNSUPPORTED: t/t_config_libmap.map:14:29: Unsupported: Verilog 2001-config lib.map reserved word not implemented: 'incdir' + | ^~~~~~~ +%Error-UNSUPPORTED: t/t_config_libmap.map:14:22: Unsupported: IEEE 1800-2001-config lib.map reserved word not implemented: 'incdir' 14 | library rtllib4 *.v -incdir *.vh, *.svh; - | ^~~~~~~~~~~~ -%Error-UNSUPPORTED: t/t_config_libmap.map:17:1: Unsupported: Verilog 2001-config lib.map reserved word not implemented: 'library' + | ^~~~~~ +%Error-UNSUPPORTED: t/t_config_libmap.map:17:1: Unsupported: IEEE 1800-2001-config lib.map reserved word not implemented: 'library' 17 | library gatelib . - | ^~~~~~~~~~~~~~ + | ^~~~~~~ %Error: Exiting due to diff --git a/test_regress/t/t_cover_sys_unsup.out b/test_regress/t/t_cover_sys_unsup.out new file mode 100644 index 000000000..e5c4126db --- /dev/null +++ b/test_regress/t/t_cover_sys_unsup.out @@ -0,0 +1,26 @@ +%Error-UNSUPPORTED: t/t_cover_sys_unsup.v:18:9: Unsupported: IEEE 1800-2005 reserved word not implemented: '$coverage_control' + 18 | i = $coverage_control(0, 23, 10, t); + | ^~~~~~~~~~~~~~~~~ + ... For error description see https://verilator.org/warn/UNSUPPORTED?v=latest +%Error-UNSUPPORTED: t/t_cover_sys_unsup.v:21:9: Unsupported: IEEE 1800-2005 reserved word not implemented: '$coverage_get' + 21 | i = $coverage_get(23, 10, t); + | ^~~~~~~~~~~~~ +%Error-UNSUPPORTED: t/t_cover_sys_unsup.v:24:9: Unsupported: IEEE 1800-2005 reserved word not implemented: '$coverage_get_max' + 24 | i = $coverage_get_max(23, 10, t); + | ^~~~~~~~~~~~~~~~~ +%Error-UNSUPPORTED: t/t_cover_sys_unsup.v:27:9: Unsupported: IEEE 1800-2005 reserved word not implemented: '$get_coverage' + 27 | r = $get_coverage(); + | ^~~~~~~~~~~~~ +%Error-UNSUPPORTED: t/t_cover_sys_unsup.v:29:5: Unsupported: IEEE 1800-2005 reserved word not implemented: '$set_coverage_db_name' + 29 | $set_coverage_db_name("filename"); + | ^~~~~~~~~~~~~~~~~~~~~ +%Error-UNSUPPORTED: t/t_cover_sys_unsup.v:31:9: Unsupported: IEEE 1800-2005 reserved word not implemented: '$coverage_save' + 31 | i = $coverage_save(coverage_type, "filename"); + | ^~~~~~~~~~~~~~ +%Error-UNSUPPORTED: t/t_cover_sys_unsup.v:34:5: Unsupported: IEEE 1800-2005 reserved word not implemented: '$load_coverage_db' + 34 | $load_coverage_db("filename"); + | ^~~~~~~~~~~~~~~~~ +%Error-UNSUPPORTED: t/t_cover_sys_unsup.v:36:9: Unsupported: IEEE 1800-2005 reserved word not implemented: '$coverage_merge' + 36 | i = $coverage_merge(coverage_type, "filename"); + | ^~~~~~~~~~~~~~~ +%Error: Exiting due to diff --git a/test_regress/t/t_cover_sys_unsup.py b/test_regress/t/t_cover_sys_unsup.py new file mode 100755 index 000000000..f41d93235 --- /dev/null +++ b/test_regress/t/t_cover_sys_unsup.py @@ -0,0 +1,16 @@ +#!/usr/bin/env python3 +# DESCRIPTION: Verilator: Verilog Test driver/expect definition +# +# Copyright 2024 by Wilson Snyder. This program is free software; you can +# redistribute it and/or modify it under the terms of either the GNU +# Lesser General Public License Version 3 or the Perl Artistic License +# Version 2.0. +# SPDX-License-Identifier: LGPL-3.0-only OR Artistic-2.0 + +import vltest_bootstrap + +test.scenarios('vlt') + +test.lint(fails=test.vlt_all, expect_filename=test.golden_filename) + +test.passes() diff --git a/test_regress/t/t_cover_sys_unsup.v b/test_regress/t/t_cover_sys_unsup.v new file mode 100644 index 000000000..7a192a78e --- /dev/null +++ b/test_regress/t/t_cover_sys_unsup.v @@ -0,0 +1,42 @@ +// DESCRIPTION: Verilator: Verilog Test module for SystemVerilog 'alias' +// +// Simple bi-directional alias test. +// +// This file ONLY is placed under the Creative Commons Public Domain, for +// any use, without warranty, 2025 by Wilson Snyder. +// SPDX-License-Identifier: CC0-1.0 + +module t; + real r; + int i; + initial begin + + // control_constant = `SV_COV_START, `SV_COV_STOP, `SV_COV_RESET, `SV_COV_CHECK + // coverage_type = `SV_COV_ASSERTION, `SV_COV_FSM_STATE, `SV_COV_STATEMENT,`SV_COV_TOGGLE + // scope_def = [`SV_COV_MODULE, "unique module def name"], [`SV_COV_HIER, "module name"], + // [`SV_COV_MODULE, instance_name], [`SV_COV_HIER, instance_name] + i = $coverage_control(`SV_COV_START, `SV_COV_TOGGLE, `SV_COV_MODULE, t); + // returns `SV_COV_OK, `SV_COV_ERROR, `SV_COV_NOCOV, `SV_COV_PARTIAL + + i = $coverage_get(`SV_COV_TOGGLE, `SV_COV_MODULE, t); + // returns number or `SC_COV_OVERFLOW, `SC_COV_ERROR, `SV_COV_NOCOV + + i = $coverage_get_max(`SV_COV_TOGGLE, `SV_COV_MODULE, t); + // returns number or `SC_COV_OVERFLOW, `SC_COV_ERROR, `SV_COV_NOCOV + + r = $get_coverage(); + + $set_coverage_db_name("filename"); + + i = $coverage_save(coverage_type, "filename"); + // returns `SV_COV_OK, `SC_COV_NOCOV, `SC_COV_ERROR + + $load_coverage_db("filename"); + + i = $coverage_merge(coverage_type, "filename"); + // returns `SV_COV_OK, `SC_COV_NOCOV, `SC_COV_ERROR + + $finish; + end + +endmodule diff --git a/test_regress/t/t_dump_json.out b/test_regress/t/t_dump_json.out index 954284773..ea1094c3c 100644 --- a/test_regress/t/t_dump_json.out +++ b/test_regress/t/t_dump_json.out @@ -488,34 +488,52 @@ "lhsp": [ {"type":"PARSEREF","name":"out","addr":"(XH)","loc":"e,83:7,83:10","dtypep":"UNLINKED","expect":"TEXT","lhsp": [],"ftaskrefp": []} ],"timingControlp": []}, - {"type":"ASSERTCTL","name":"","addr":"(YH)","loc":"e,86:7,86:17","ctlType":"$assertoff", + {"type":"ASSERTCTL","name":"","addr":"(YH)","loc":"e,86:7,86:17","ctlType":"", "controlTypep": [ {"type":"CONST","name":"32'h4","addr":"(ZH)","loc":"e,86:7,86:17","dtypep":"(OC)"} - ],"assertTypesp": [],"directiveTypesp": []}, - {"type":"ASSERTCTL","name":"","addr":"(AI)","loc":"e,87:7,87:18","ctlType":"$assertkill", - "controlTypep": [ - {"type":"CONST","name":"32'h5","addr":"(BI)","loc":"e,87:7,87:18","dtypep":"(OC)"} - ],"assertTypesp": [],"directiveTypesp": []}, - {"type":"ASSERT","name":"","addr":"(CI)","loc":"e,88:7,88:13","type":"[SIMPLE_IMMEDIATE]", - "propp": [ - {"type":"CONST","name":"?32?sh0","addr":"(DI)","loc":"e,88:14,88:15","dtypep":"(N)"} - ],"sentreep": [],"failsp": [],"passsp": []}, - {"type":"ASSERTCTL","name":"","addr":"(EI)","loc":"e,89:7,89:16","ctlType":"$asserton", - "controlTypep": [ - {"type":"CONST","name":"32'h3","addr":"(FI)","loc":"e,89:7,89:16","dtypep":"(OC)"} - ],"assertTypesp": [],"directiveTypesp": []}, - {"type":"ASSERTCTL","name":"","addr":"(GI)","loc":"e,90:7,90:21","ctlType":"", - "controlTypep": [ - {"type":"CONST","name":"?32?sh3","addr":"(HI)","loc":"e,90:22,90:23","dtypep":"(SD)"} ], "assertTypesp": [ - {"type":"CONST","name":"?32?sh8","addr":"(II)","loc":"e,90:25,90:26","dtypep":"(LF)"} + {"type":"CONST","name":"32'hf","addr":"(AI)","loc":"e,86:7,86:17","dtypep":"(OC)"} + ], + "directiveTypesp": [ + {"type":"CONST","name":"32'h7","addr":"(BI)","loc":"e,86:7,86:17","dtypep":"(OC)"} + ]}, + {"type":"ASSERTCTL","name":"","addr":"(CI)","loc":"e,87:7,87:18","ctlType":"", + "controlTypep": [ + {"type":"CONST","name":"32'h5","addr":"(DI)","loc":"e,87:7,87:18","dtypep":"(OC)"} + ], + "assertTypesp": [ + {"type":"CONST","name":"32'hf","addr":"(EI)","loc":"e,87:7,87:18","dtypep":"(OC)"} + ], + "directiveTypesp": [ + {"type":"CONST","name":"32'h7","addr":"(FI)","loc":"e,87:7,87:18","dtypep":"(OC)"} + ]}, + {"type":"ASSERT","name":"","addr":"(GI)","loc":"e,88:7,88:13","type":"[SIMPLE_IMMEDIATE]", + "propp": [ + {"type":"CONST","name":"?32?sh0","addr":"(HI)","loc":"e,88:14,88:15","dtypep":"(N)"} + ],"sentreep": [],"failsp": [],"passsp": []}, + {"type":"ASSERTCTL","name":"","addr":"(II)","loc":"e,89:7,89:16","ctlType":"", + "controlTypep": [ + {"type":"CONST","name":"32'h3","addr":"(JI)","loc":"e,89:7,89:16","dtypep":"(OC)"} + ], + "assertTypesp": [ + {"type":"CONST","name":"32'hf","addr":"(KI)","loc":"e,89:7,89:16","dtypep":"(OC)"} + ], + "directiveTypesp": [ + {"type":"CONST","name":"32'h7","addr":"(LI)","loc":"e,89:7,89:16","dtypep":"(OC)"} + ]}, + {"type":"ASSERTCTL","name":"","addr":"(MI)","loc":"e,90:7,90:21","ctlType":"", + "controlTypep": [ + {"type":"CONST","name":"?32?sh3","addr":"(NI)","loc":"e,90:22,90:23","dtypep":"(SD)"} + ], + "assertTypesp": [ + {"type":"CONST","name":"?32?sh8","addr":"(OI)","loc":"e,90:25,90:26","dtypep":"(LF)"} ],"directiveTypesp": []}, - {"type":"BEGIN","name":"blk","addr":"(JI)","loc":"e,91:15,91:18","generate":false,"genfor":false,"implied":false,"needProcess":false,"unnamed":false,"genforp": [], + {"type":"BEGIN","name":"blk","addr":"(PI)","loc":"e,91:15,91:18","generate":false,"genfor":false,"implied":false,"needProcess":false,"unnamed":false,"genforp": [], "stmtsp": [ - {"type":"DISABLE","name":"","addr":"(KI)","loc":"e,92:10,92:17", + {"type":"DISABLE","name":"","addr":"(QI)","loc":"e,92:10,92:17", "targetRefp": [ - {"type":"PARSEREF","name":"blk","addr":"(LI)","loc":"e,92:18,92:21","dtypep":"UNLINKED","expect":"TEXT","lhsp": [],"ftaskrefp": []} + {"type":"PARSEREF","name":"blk","addr":"(RI)","loc":"e,92:18,92:21","dtypep":"UNLINKED","expect":"TEXT","lhsp": [],"ftaskrefp": []} ]} ]} ]} @@ -524,550 +542,550 @@ ]}, {"type":"PACKAGE","name":"$unit","addr":"(E)","loc":"a,0:0,0:0","origName":"__024unit","level":3,"modPublic":false,"inLibrary":true,"dead":false,"recursiveClone":false,"recursive":false,"timeunit":"1ps","inlinesp": [], "stmtsp": [ - {"type":"PACKAGEIMPORT","name":"*","addr":"(MI)","loc":"d,31:9,31:12","packagep":"(F)"} + {"type":"PACKAGEIMPORT","name":"*","addr":"(SI)","loc":"d,31:9,31:12","packagep":"(F)"} ]}, {"type":"PACKAGE","name":"std","addr":"(F)","loc":"d,31:9,31:12","origName":"std","level":4,"modPublic":false,"inLibrary":true,"dead":false,"recursiveClone":false,"recursive":false,"timeunit":"1ps","inlinesp": [], "stmtsp": [ - {"type":"CLASS","name":"mailbox","addr":"(NI)","loc":"d,32:4,32:9","isExtended":false,"isInterfaceClass":false,"isVirtual":false,"origName":"mailbox","level":5,"modPublic":false,"inLibrary":false,"dead":false,"recursiveClone":false,"recursive":false,"timeunit":"NONE","classOrPackagep":"UNLINKED","inlinesp": [], + {"type":"CLASS","name":"mailbox","addr":"(TI)","loc":"d,32:4,32:9","isExtended":false,"isInterfaceClass":false,"isVirtual":false,"origName":"mailbox","level":5,"modPublic":false,"inLibrary":false,"dead":false,"recursiveClone":false,"recursive":false,"timeunit":"NONE","classOrPackagep":"UNLINKED","inlinesp": [], "stmtsp": [ - {"type":"VAR","name":"T","addr":"(OI)","loc":"d,32:25,32:26","dtypep":"UNLINKED","origName":"T","isSc":false,"isPrimaryIO":false,"direction":"NONE","isConst":false,"isPullup":false,"isPulldown":false,"isUsedClock":false,"isSigPublic":false,"isLatched":false,"isUsedLoopIdx":false,"noReset":false,"attrIsolateAssign":false,"attrFileDescr":false,"isDpiOpenArray":false,"isFuncReturn":false,"isFuncLocal":false,"attrClocker":"UNKNOWN","lifetime":"NONE","varType":"GPARAM","isSigUserRdPublic":false,"isSigUserRWPublic":false,"isGParam":true,"isParam":true,"attrScBv":false,"attrSFormat":false,"ignorePostWrite":false,"ignoreSchedWrite":false,"sensIfacep":"UNLINKED", + {"type":"VAR","name":"T","addr":"(UI)","loc":"d,32:25,32:26","dtypep":"UNLINKED","origName":"T","isSc":false,"isPrimaryIO":false,"direction":"NONE","isConst":false,"isPullup":false,"isPulldown":false,"isUsedClock":false,"isSigPublic":false,"isLatched":false,"isUsedLoopIdx":false,"noReset":false,"attrIsolateAssign":false,"attrFileDescr":false,"isDpiOpenArray":false,"isFuncReturn":false,"isFuncLocal":false,"attrClocker":"UNKNOWN","lifetime":"NONE","varType":"GPARAM","isSigUserRdPublic":false,"isSigUserRWPublic":false,"isGParam":true,"isParam":true,"attrScBv":false,"attrSFormat":false,"ignorePostWrite":false,"ignoreSchedWrite":false,"sensIfacep":"UNLINKED", "childDTypep": [ - {"type":"PARSETYPEDTYPE","name":"","addr":"(PI)","loc":"d,32:20,32:24","dtypep":"UNLINKED","generic":false} + {"type":"PARSETYPEDTYPE","name":"","addr":"(VI)","loc":"d,32:20,32:24","dtypep":"UNLINKED","generic":false} ],"delayp": [],"valuep": [],"attrsp": []}, - {"type":"TYPEDEFFWD","name":"T","addr":"(QI)","loc":"d,32:25,32:26","fwdType":"none"}, - {"type":"VAR","name":"m_bound","addr":"(RI)","loc":"d,33:21,33:28","dtypep":"UNLINKED","origName":"m_bound","isSc":false,"isPrimaryIO":false,"direction":"NONE","isConst":false,"isPullup":false,"isPulldown":false,"isUsedClock":false,"isSigPublic":false,"isLatched":false,"isUsedLoopIdx":false,"noReset":false,"attrIsolateAssign":false,"attrFileDescr":false,"isDpiOpenArray":false,"isFuncReturn":false,"isFuncLocal":false,"attrClocker":"UNKNOWN","lifetime":"NONE","varType":"VAR","isSigUserRdPublic":false,"isSigUserRWPublic":false,"isGParam":false,"isParam":false,"attrScBv":false,"attrSFormat":false,"ignorePostWrite":false,"ignoreSchedWrite":false,"sensIfacep":"UNLINKED", + {"type":"TYPEDEFFWD","name":"T","addr":"(WI)","loc":"d,32:25,32:26","fwdType":"none"}, + {"type":"VAR","name":"m_bound","addr":"(XI)","loc":"d,33:21,33:28","dtypep":"UNLINKED","origName":"m_bound","isSc":false,"isPrimaryIO":false,"direction":"NONE","isConst":false,"isPullup":false,"isPulldown":false,"isUsedClock":false,"isSigPublic":false,"isLatched":false,"isUsedLoopIdx":false,"noReset":false,"attrIsolateAssign":false,"attrFileDescr":false,"isDpiOpenArray":false,"isFuncReturn":false,"isFuncLocal":false,"attrClocker":"UNKNOWN","lifetime":"NONE","varType":"VAR","isSigUserRdPublic":false,"isSigUserRWPublic":false,"isGParam":false,"isParam":false,"attrScBv":false,"attrSFormat":false,"ignorePostWrite":false,"ignoreSchedWrite":false,"sensIfacep":"UNLINKED", "childDTypep": [ - {"type":"BASICDTYPE","name":"int","addr":"(SI)","loc":"d,33:17,33:20","dtypep":"(SI)","keyword":"int","range":"31:0","generic":false,"rangep": []} + {"type":"BASICDTYPE","name":"int","addr":"(YI)","loc":"d,33:17,33:20","dtypep":"(YI)","keyword":"int","range":"31:0","generic":false,"rangep": []} ],"delayp": [],"valuep": [],"attrsp": []}, - {"type":"VAR","name":"m_queue","addr":"(TI)","loc":"d,34:19,34:26","dtypep":"UNLINKED","origName":"m_queue","isSc":false,"isPrimaryIO":false,"direction":"NONE","isConst":false,"isPullup":false,"isPulldown":false,"isUsedClock":false,"isSigPublic":false,"isLatched":false,"isUsedLoopIdx":false,"noReset":false,"attrIsolateAssign":false,"attrFileDescr":false,"isDpiOpenArray":false,"isFuncReturn":false,"isFuncLocal":false,"attrClocker":"UNKNOWN","lifetime":"NONE","varType":"VAR","isSigUserRdPublic":false,"isSigUserRWPublic":false,"isGParam":false,"isParam":false,"attrScBv":false,"attrSFormat":false,"ignorePostWrite":false,"ignoreSchedWrite":false,"sensIfacep":"UNLINKED", + {"type":"VAR","name":"m_queue","addr":"(ZI)","loc":"d,34:19,34:26","dtypep":"UNLINKED","origName":"m_queue","isSc":false,"isPrimaryIO":false,"direction":"NONE","isConst":false,"isPullup":false,"isPulldown":false,"isUsedClock":false,"isSigPublic":false,"isLatched":false,"isUsedLoopIdx":false,"noReset":false,"attrIsolateAssign":false,"attrFileDescr":false,"isDpiOpenArray":false,"isFuncReturn":false,"isFuncLocal":false,"attrClocker":"UNKNOWN","lifetime":"NONE","varType":"VAR","isSigUserRdPublic":false,"isSigUserRWPublic":false,"isGParam":false,"isParam":false,"attrScBv":false,"attrSFormat":false,"ignorePostWrite":false,"ignoreSchedWrite":false,"sensIfacep":"UNLINKED", "childDTypep": [ - {"type":"BRACKETARRAYDTYPE","name":"","addr":"(UI)","loc":"d,34:26,34:27","dtypep":"UNLINKED","generic":false, + {"type":"BRACKETARRAYDTYPE","name":"","addr":"(AJ)","loc":"d,34:26,34:27","dtypep":"UNLINKED","generic":false, "childDTypep": [ - {"type":"REFDTYPE","name":"T","addr":"(VI)","loc":"d,34:17,34:18","dtypep":"UNLINKED","generic":false,"typedefp":"UNLINKED","refDTypep":"UNLINKED","classOrPackagep":"UNLINKED","typeofp": [],"classOrPackageOpp": [],"paramsp": []} + {"type":"REFDTYPE","name":"T","addr":"(BJ)","loc":"d,34:17,34:18","dtypep":"UNLINKED","generic":false,"typedefp":"UNLINKED","refDTypep":"UNLINKED","classOrPackagep":"UNLINKED","typeofp": [],"classOrPackageOpp": [],"paramsp": []} ], "elementsp": [ - {"type":"UNBOUNDED","name":"","addr":"(WI)","loc":"d,34:27,34:28","dtypep":"(XI)"} + {"type":"UNBOUNDED","name":"","addr":"(CJ)","loc":"d,34:27,34:28","dtypep":"(DJ)"} ]} ],"delayp": [],"valuep": [],"attrsp": []}, - {"type":"FUNC","name":"new","addr":"(YI)","loc":"d,36:16,36:19","dtypep":"UNLINKED","method":false,"dpiExport":false,"dpiImport":false,"dpiOpenChild":false,"dpiOpenParent":false,"isExternDef":false,"isExternProto":false,"prototype":false,"recursive":false,"taskPublic":false,"cname":"new","fvarp": [],"classOrPackagep": [], + {"type":"FUNC","name":"new","addr":"(EJ)","loc":"d,36:16,36:19","dtypep":"UNLINKED","method":false,"dpiExport":false,"dpiImport":false,"dpiOpenChild":false,"dpiOpenParent":false,"isExternDef":false,"isExternProto":false,"prototype":false,"recursive":false,"taskPublic":false,"cname":"new","fvarp": [],"classOrPackagep": [], "stmtsp": [ - {"type":"VAR","name":"bound","addr":"(ZI)","loc":"d,36:24,36:29","dtypep":"UNLINKED","origName":"bound","isSc":false,"isPrimaryIO":false,"direction":"INPUT","isConst":false,"isPullup":false,"isPulldown":false,"isUsedClock":false,"isSigPublic":false,"isLatched":false,"isUsedLoopIdx":false,"noReset":false,"attrIsolateAssign":false,"attrFileDescr":false,"isDpiOpenArray":false,"isFuncReturn":false,"isFuncLocal":false,"attrClocker":"UNKNOWN","lifetime":"NONE","varType":"PORT","isSigUserRdPublic":false,"isSigUserRWPublic":false,"isGParam":false,"isParam":false,"attrScBv":false,"attrSFormat":false,"ignorePostWrite":false,"ignoreSchedWrite":false,"sensIfacep":"UNLINKED", + {"type":"VAR","name":"bound","addr":"(FJ)","loc":"d,36:24,36:29","dtypep":"UNLINKED","origName":"bound","isSc":false,"isPrimaryIO":false,"direction":"INPUT","isConst":false,"isPullup":false,"isPulldown":false,"isUsedClock":false,"isSigPublic":false,"isLatched":false,"isUsedLoopIdx":false,"noReset":false,"attrIsolateAssign":false,"attrFileDescr":false,"isDpiOpenArray":false,"isFuncReturn":false,"isFuncLocal":false,"attrClocker":"UNKNOWN","lifetime":"NONE","varType":"PORT","isSigUserRdPublic":false,"isSigUserRWPublic":false,"isGParam":false,"isParam":false,"attrScBv":false,"attrSFormat":false,"ignorePostWrite":false,"ignoreSchedWrite":false,"sensIfacep":"UNLINKED", "childDTypep": [ - {"type":"BASICDTYPE","name":"int","addr":"(AJ)","loc":"d,36:20,36:23","dtypep":"(AJ)","keyword":"int","range":"31:0","generic":false,"rangep": []} + {"type":"BASICDTYPE","name":"int","addr":"(GJ)","loc":"d,36:20,36:23","dtypep":"(GJ)","keyword":"int","range":"31:0","generic":false,"rangep": []} ],"delayp": [], "valuep": [ - {"type":"CONST","name":"?32?sh0","addr":"(BJ)","loc":"d,36:32,36:33","dtypep":"(N)"} + {"type":"CONST","name":"?32?sh0","addr":"(HJ)","loc":"d,36:32,36:33","dtypep":"(N)"} ],"attrsp": []}, - {"type":"ASSIGN","name":"","addr":"(CJ)","loc":"d,37:18,37:19","dtypep":"UNLINKED", + {"type":"ASSIGN","name":"","addr":"(IJ)","loc":"d,37:18,37:19","dtypep":"UNLINKED", "rhsp": [ - {"type":"PARSEREF","name":"bound","addr":"(DJ)","loc":"d,37:20,37:25","dtypep":"UNLINKED","expect":"TEXT","lhsp": [],"ftaskrefp": []} + {"type":"PARSEREF","name":"bound","addr":"(JJ)","loc":"d,37:20,37:25","dtypep":"UNLINKED","expect":"TEXT","lhsp": [],"ftaskrefp": []} ], "lhsp": [ - {"type":"PARSEREF","name":"m_bound","addr":"(EJ)","loc":"d,37:10,37:17","dtypep":"UNLINKED","expect":"TEXT","lhsp": [],"ftaskrefp": []} + {"type":"PARSEREF","name":"m_bound","addr":"(KJ)","loc":"d,37:10,37:17","dtypep":"UNLINKED","expect":"TEXT","lhsp": [],"ftaskrefp": []} ],"timingControlp": []} ],"scopeNamep": []}, - {"type":"FUNC","name":"num","addr":"(FJ)","loc":"d,40:20,40:23","dtypep":"UNLINKED","method":false,"dpiExport":false,"dpiImport":false,"dpiOpenChild":false,"dpiOpenParent":false,"isExternDef":false,"isExternProto":false,"prototype":false,"recursive":false,"taskPublic":false,"cname":"num", + {"type":"FUNC","name":"num","addr":"(LJ)","loc":"d,40:20,40:23","dtypep":"UNLINKED","method":false,"dpiExport":false,"dpiImport":false,"dpiOpenChild":false,"dpiOpenParent":false,"isExternDef":false,"isExternProto":false,"prototype":false,"recursive":false,"taskPublic":false,"cname":"num", "fvarp": [ - {"type":"BASICDTYPE","name":"int","addr":"(GJ)","loc":"d,40:16,40:19","dtypep":"(GJ)","keyword":"int","range":"31:0","generic":false,"rangep": []} + {"type":"BASICDTYPE","name":"int","addr":"(MJ)","loc":"d,40:16,40:19","dtypep":"(MJ)","keyword":"int","range":"31:0","generic":false,"rangep": []} ],"classOrPackagep": [], "stmtsp": [ - {"type":"RETURN","name":"","addr":"(HJ)","loc":"d,41:10,41:16", + {"type":"RETURN","name":"","addr":"(NJ)","loc":"d,41:10,41:16", "lhsp": [ - {"type":"DOT","name":"","addr":"(IJ)","loc":"d,41:24,41:25","dtypep":"UNLINKED","colon":false, + {"type":"DOT","name":"","addr":"(OJ)","loc":"d,41:24,41:25","dtypep":"UNLINKED","colon":false, "lhsp": [ - {"type":"PARSEREF","name":"m_queue","addr":"(JJ)","loc":"d,41:17,41:24","dtypep":"UNLINKED","expect":"TEXT","lhsp": [],"ftaskrefp": []} + {"type":"PARSEREF","name":"m_queue","addr":"(PJ)","loc":"d,41:17,41:24","dtypep":"UNLINKED","expect":"TEXT","lhsp": [],"ftaskrefp": []} ], "rhsp": [ - {"type":"FUNCREF","name":"size","addr":"(KJ)","loc":"d,41:25,41:29","dtypep":"UNLINKED","dotted":"","taskp":"UNLINKED","classOrPackagep":"UNLINKED","namep": [],"pinsp": [],"scopeNamep": []} + {"type":"FUNCREF","name":"size","addr":"(QJ)","loc":"d,41:25,41:29","dtypep":"UNLINKED","dotted":"","taskp":"UNLINKED","classOrPackagep":"UNLINKED","namep": [],"pinsp": [],"scopeNamep": []} ]} ]} ],"scopeNamep": []}, - {"type":"TASK","name":"put","addr":"(LJ)","loc":"d,44:12,44:15","method":false,"dpiExport":false,"dpiImport":false,"dpiOpenChild":false,"dpiOpenParent":false,"isExternDef":false,"isExternProto":false,"prototype":false,"recursive":false,"taskPublic":false,"cname":"put","fvarp": [],"classOrPackagep": [], + {"type":"TASK","name":"put","addr":"(RJ)","loc":"d,44:12,44:15","method":false,"dpiExport":false,"dpiImport":false,"dpiOpenChild":false,"dpiOpenParent":false,"isExternDef":false,"isExternProto":false,"prototype":false,"recursive":false,"taskPublic":false,"cname":"put","fvarp": [],"classOrPackagep": [], "stmtsp": [ - {"type":"VAR","name":"message","addr":"(MJ)","loc":"d,44:18,44:25","dtypep":"UNLINKED","origName":"message","isSc":false,"isPrimaryIO":false,"direction":"INPUT","isConst":false,"isPullup":false,"isPulldown":false,"isUsedClock":false,"isSigPublic":false,"isLatched":false,"isUsedLoopIdx":false,"noReset":false,"attrIsolateAssign":false,"attrFileDescr":false,"isDpiOpenArray":false,"isFuncReturn":false,"isFuncLocal":false,"attrClocker":"UNKNOWN","lifetime":"NONE","varType":"PORT","isSigUserRdPublic":false,"isSigUserRWPublic":false,"isGParam":false,"isParam":false,"attrScBv":false,"attrSFormat":false,"ignorePostWrite":false,"ignoreSchedWrite":false,"sensIfacep":"UNLINKED", + {"type":"VAR","name":"message","addr":"(SJ)","loc":"d,44:18,44:25","dtypep":"UNLINKED","origName":"message","isSc":false,"isPrimaryIO":false,"direction":"INPUT","isConst":false,"isPullup":false,"isPulldown":false,"isUsedClock":false,"isSigPublic":false,"isLatched":false,"isUsedLoopIdx":false,"noReset":false,"attrIsolateAssign":false,"attrFileDescr":false,"isDpiOpenArray":false,"isFuncReturn":false,"isFuncLocal":false,"attrClocker":"UNKNOWN","lifetime":"NONE","varType":"PORT","isSigUserRdPublic":false,"isSigUserRWPublic":false,"isGParam":false,"isParam":false,"attrScBv":false,"attrSFormat":false,"ignorePostWrite":false,"ignoreSchedWrite":false,"sensIfacep":"UNLINKED", "childDTypep": [ - {"type":"REFDTYPE","name":"T","addr":"(NJ)","loc":"d,44:16,44:17","dtypep":"UNLINKED","generic":false,"typedefp":"UNLINKED","refDTypep":"UNLINKED","classOrPackagep":"UNLINKED","typeofp": [],"classOrPackageOpp": [],"paramsp": []} + {"type":"REFDTYPE","name":"T","addr":"(TJ)","loc":"d,44:16,44:17","dtypep":"UNLINKED","generic":false,"typedefp":"UNLINKED","refDTypep":"UNLINKED","classOrPackagep":"UNLINKED","typeofp": [],"classOrPackageOpp": [],"paramsp": []} ],"delayp": [],"valuep": [],"attrsp": []} ],"scopeNamep": []}, - {"type":"FUNC","name":"try_put","addr":"(OJ)","loc":"d,52:20,52:27","dtypep":"UNLINKED","method":false,"dpiExport":false,"dpiImport":false,"dpiOpenChild":false,"dpiOpenParent":false,"isExternDef":false,"isExternProto":false,"prototype":false,"recursive":false,"taskPublic":false,"cname":"try_put", + {"type":"FUNC","name":"try_put","addr":"(UJ)","loc":"d,52:20,52:27","dtypep":"UNLINKED","method":false,"dpiExport":false,"dpiImport":false,"dpiOpenChild":false,"dpiOpenParent":false,"isExternDef":false,"isExternProto":false,"prototype":false,"recursive":false,"taskPublic":false,"cname":"try_put", "fvarp": [ - {"type":"BASICDTYPE","name":"int","addr":"(PJ)","loc":"d,52:16,52:19","dtypep":"(PJ)","keyword":"int","range":"31:0","generic":false,"rangep": []} + {"type":"BASICDTYPE","name":"int","addr":"(VJ)","loc":"d,52:16,52:19","dtypep":"(VJ)","keyword":"int","range":"31:0","generic":false,"rangep": []} ],"classOrPackagep": [], "stmtsp": [ - {"type":"VAR","name":"message","addr":"(QJ)","loc":"d,52:30,52:37","dtypep":"UNLINKED","origName":"message","isSc":false,"isPrimaryIO":false,"direction":"INPUT","isConst":false,"isPullup":false,"isPulldown":false,"isUsedClock":false,"isSigPublic":false,"isLatched":false,"isUsedLoopIdx":false,"noReset":false,"attrIsolateAssign":false,"attrFileDescr":false,"isDpiOpenArray":false,"isFuncReturn":false,"isFuncLocal":false,"attrClocker":"UNKNOWN","lifetime":"NONE","varType":"PORT","isSigUserRdPublic":false,"isSigUserRWPublic":false,"isGParam":false,"isParam":false,"attrScBv":false,"attrSFormat":false,"ignorePostWrite":false,"ignoreSchedWrite":false,"sensIfacep":"UNLINKED", + {"type":"VAR","name":"message","addr":"(WJ)","loc":"d,52:30,52:37","dtypep":"UNLINKED","origName":"message","isSc":false,"isPrimaryIO":false,"direction":"INPUT","isConst":false,"isPullup":false,"isPulldown":false,"isUsedClock":false,"isSigPublic":false,"isLatched":false,"isUsedLoopIdx":false,"noReset":false,"attrIsolateAssign":false,"attrFileDescr":false,"isDpiOpenArray":false,"isFuncReturn":false,"isFuncLocal":false,"attrClocker":"UNKNOWN","lifetime":"NONE","varType":"PORT","isSigUserRdPublic":false,"isSigUserRWPublic":false,"isGParam":false,"isParam":false,"attrScBv":false,"attrSFormat":false,"ignorePostWrite":false,"ignoreSchedWrite":false,"sensIfacep":"UNLINKED", "childDTypep": [ - {"type":"REFDTYPE","name":"T","addr":"(RJ)","loc":"d,52:28,52:29","dtypep":"UNLINKED","generic":false,"typedefp":"UNLINKED","refDTypep":"UNLINKED","classOrPackagep":"UNLINKED","typeofp": [],"classOrPackageOpp": [],"paramsp": []} + {"type":"REFDTYPE","name":"T","addr":"(XJ)","loc":"d,52:28,52:29","dtypep":"UNLINKED","generic":false,"typedefp":"UNLINKED","refDTypep":"UNLINKED","classOrPackagep":"UNLINKED","typeofp": [],"classOrPackageOpp": [],"paramsp": []} ],"delayp": [],"valuep": [],"attrsp": []}, - {"type":"IF","name":"","addr":"(SJ)","loc":"d,53:10,53:12", + {"type":"IF","name":"","addr":"(YJ)","loc":"d,53:10,53:12", "condp": [ - {"type":"LOGOR","name":"","addr":"(TJ)","loc":"d,53:27,53:29","dtypep":"(WE)", + {"type":"LOGOR","name":"","addr":"(ZJ)","loc":"d,53:27,53:29","dtypep":"(WE)", "lhsp": [ - {"type":"EQ","name":"","addr":"(UJ)","loc":"d,53:22,53:24","dtypep":"(WE)", + {"type":"EQ","name":"","addr":"(AK)","loc":"d,53:22,53:24","dtypep":"(WE)", "lhsp": [ - {"type":"PARSEREF","name":"m_bound","addr":"(VJ)","loc":"d,53:14,53:21","dtypep":"UNLINKED","expect":"TEXT","lhsp": [],"ftaskrefp": []} + {"type":"PARSEREF","name":"m_bound","addr":"(BK)","loc":"d,53:14,53:21","dtypep":"UNLINKED","expect":"TEXT","lhsp": [],"ftaskrefp": []} ], "rhsp": [ - {"type":"CONST","name":"?32?sh0","addr":"(WJ)","loc":"d,53:25,53:26","dtypep":"(N)"} + {"type":"CONST","name":"?32?sh0","addr":"(CK)","loc":"d,53:25,53:26","dtypep":"(N)"} ]} ], "rhsp": [ - {"type":"LT","name":"","addr":"(XJ)","loc":"d,53:36,53:37","dtypep":"(WE)", + {"type":"LT","name":"","addr":"(DK)","loc":"d,53:36,53:37","dtypep":"(WE)", "lhsp": [ - {"type":"FUNCREF","name":"num","addr":"(YJ)","loc":"d,53:30,53:33","dtypep":"UNLINKED","dotted":"","taskp":"UNLINKED","classOrPackagep":"UNLINKED","namep": [],"pinsp": [],"scopeNamep": []} + {"type":"FUNCREF","name":"num","addr":"(EK)","loc":"d,53:30,53:33","dtypep":"UNLINKED","dotted":"","taskp":"UNLINKED","classOrPackagep":"UNLINKED","namep": [],"pinsp": [],"scopeNamep": []} ], "rhsp": [ - {"type":"PARSEREF","name":"m_bound","addr":"(ZJ)","loc":"d,53:38,53:45","dtypep":"UNLINKED","expect":"TEXT","lhsp": [],"ftaskrefp": []} + {"type":"PARSEREF","name":"m_bound","addr":"(FK)","loc":"d,53:38,53:45","dtypep":"UNLINKED","expect":"TEXT","lhsp": [],"ftaskrefp": []} ]} ]} ], "thensp": [ - {"type":"BEGIN","name":"","addr":"(AK)","loc":"d,53:47,53:52","generate":false,"genfor":false,"implied":false,"needProcess":false,"unnamed":true,"genforp": [], + {"type":"BEGIN","name":"","addr":"(GK)","loc":"d,53:47,53:52","generate":false,"genfor":false,"implied":false,"needProcess":false,"unnamed":true,"genforp": [], "stmtsp": [ - {"type":"STMTEXPR","name":"","addr":"(BK)","loc":"d,54:20,54:21", + {"type":"STMTEXPR","name":"","addr":"(HK)","loc":"d,54:20,54:21", "exprp": [ - {"type":"DOT","name":"","addr":"(CK)","loc":"d,54:20,54:21","dtypep":"UNLINKED","colon":false, + {"type":"DOT","name":"","addr":"(IK)","loc":"d,54:20,54:21","dtypep":"UNLINKED","colon":false, "lhsp": [ - {"type":"PARSEREF","name":"m_queue","addr":"(DK)","loc":"d,54:13,54:20","dtypep":"UNLINKED","expect":"TEXT","lhsp": [],"ftaskrefp": []} + {"type":"PARSEREF","name":"m_queue","addr":"(JK)","loc":"d,54:13,54:20","dtypep":"UNLINKED","expect":"TEXT","lhsp": [],"ftaskrefp": []} ], "rhsp": [ - {"type":"TASKREF","name":"push_back","addr":"(EK)","loc":"d,54:21,54:30","dtypep":"(FK)","dotted":"","taskp":"UNLINKED","classOrPackagep":"UNLINKED","namep": [], + {"type":"TASKREF","name":"push_back","addr":"(KK)","loc":"d,54:21,54:30","dtypep":"(LK)","dotted":"","taskp":"UNLINKED","classOrPackagep":"UNLINKED","namep": [], "pinsp": [ - {"type":"ARG","name":"","addr":"(GK)","loc":"d,54:31,54:38", + {"type":"ARG","name":"","addr":"(MK)","loc":"d,54:31,54:38", "exprp": [ - {"type":"PARSEREF","name":"message","addr":"(HK)","loc":"d,54:31,54:38","dtypep":"UNLINKED","expect":"TEXT","lhsp": [],"ftaskrefp": []} + {"type":"PARSEREF","name":"message","addr":"(NK)","loc":"d,54:31,54:38","dtypep":"UNLINKED","expect":"TEXT","lhsp": [],"ftaskrefp": []} ]} ],"scopeNamep": []} ]} ]}, - {"type":"RETURN","name":"","addr":"(IK)","loc":"d,55:13,55:19", + {"type":"RETURN","name":"","addr":"(OK)","loc":"d,55:13,55:19", "lhsp": [ - {"type":"CONST","name":"?32?sh1","addr":"(JK)","loc":"d,55:20,55:21","dtypep":"(N)"} + {"type":"CONST","name":"?32?sh1","addr":"(PK)","loc":"d,55:20,55:21","dtypep":"(N)"} ]} ]} ],"elsesp": []}, - {"type":"RETURN","name":"","addr":"(KK)","loc":"d,57:10,57:16", + {"type":"RETURN","name":"","addr":"(QK)","loc":"d,57:10,57:16", "lhsp": [ - {"type":"CONST","name":"?32?sh0","addr":"(LK)","loc":"d,57:17,57:18","dtypep":"(N)"} + {"type":"CONST","name":"?32?sh0","addr":"(RK)","loc":"d,57:17,57:18","dtypep":"(N)"} ]} ],"scopeNamep": []}, - {"type":"TASK","name":"get","addr":"(MK)","loc":"d,60:12,60:15","method":false,"dpiExport":false,"dpiImport":false,"dpiOpenChild":false,"dpiOpenParent":false,"isExternDef":false,"isExternProto":false,"prototype":false,"recursive":false,"taskPublic":false,"cname":"get","fvarp": [],"classOrPackagep": [], + {"type":"TASK","name":"get","addr":"(SK)","loc":"d,60:12,60:15","method":false,"dpiExport":false,"dpiImport":false,"dpiOpenChild":false,"dpiOpenParent":false,"isExternDef":false,"isExternProto":false,"prototype":false,"recursive":false,"taskPublic":false,"cname":"get","fvarp": [],"classOrPackagep": [], "stmtsp": [ - {"type":"VAR","name":"message","addr":"(NK)","loc":"d,60:22,60:29","dtypep":"UNLINKED","origName":"message","isSc":false,"isPrimaryIO":false,"direction":"REF","isConst":false,"isPullup":false,"isPulldown":false,"isUsedClock":false,"isSigPublic":false,"isLatched":false,"isUsedLoopIdx":false,"noReset":false,"attrIsolateAssign":false,"attrFileDescr":false,"isDpiOpenArray":false,"isFuncReturn":false,"isFuncLocal":false,"attrClocker":"UNKNOWN","lifetime":"NONE","varType":"PORT","isSigUserRdPublic":false,"isSigUserRWPublic":false,"isGParam":false,"isParam":false,"attrScBv":false,"attrSFormat":false,"ignorePostWrite":false,"ignoreSchedWrite":false,"sensIfacep":"UNLINKED", + {"type":"VAR","name":"message","addr":"(TK)","loc":"d,60:22,60:29","dtypep":"UNLINKED","origName":"message","isSc":false,"isPrimaryIO":false,"direction":"REF","isConst":false,"isPullup":false,"isPulldown":false,"isUsedClock":false,"isSigPublic":false,"isLatched":false,"isUsedLoopIdx":false,"noReset":false,"attrIsolateAssign":false,"attrFileDescr":false,"isDpiOpenArray":false,"isFuncReturn":false,"isFuncLocal":false,"attrClocker":"UNKNOWN","lifetime":"NONE","varType":"PORT","isSigUserRdPublic":false,"isSigUserRWPublic":false,"isGParam":false,"isParam":false,"attrScBv":false,"attrSFormat":false,"ignorePostWrite":false,"ignoreSchedWrite":false,"sensIfacep":"UNLINKED", "childDTypep": [ - {"type":"REFDTYPE","name":"T","addr":"(OK)","loc":"d,60:20,60:21","dtypep":"UNLINKED","generic":false,"typedefp":"UNLINKED","refDTypep":"UNLINKED","classOrPackagep":"UNLINKED","typeofp": [],"classOrPackageOpp": [],"paramsp": []} + {"type":"REFDTYPE","name":"T","addr":"(UK)","loc":"d,60:20,60:21","dtypep":"UNLINKED","generic":false,"typedefp":"UNLINKED","refDTypep":"UNLINKED","classOrPackagep":"UNLINKED","typeofp": [],"classOrPackageOpp": [],"paramsp": []} ],"delayp": [],"valuep": [],"attrsp": []} ],"scopeNamep": []}, - {"type":"FUNC","name":"try_get","addr":"(PK)","loc":"d,69:20,69:27","dtypep":"UNLINKED","method":false,"dpiExport":false,"dpiImport":false,"dpiOpenChild":false,"dpiOpenParent":false,"isExternDef":false,"isExternProto":false,"prototype":false,"recursive":false,"taskPublic":false,"cname":"try_get", + {"type":"FUNC","name":"try_get","addr":"(VK)","loc":"d,69:20,69:27","dtypep":"UNLINKED","method":false,"dpiExport":false,"dpiImport":false,"dpiOpenChild":false,"dpiOpenParent":false,"isExternDef":false,"isExternProto":false,"prototype":false,"recursive":false,"taskPublic":false,"cname":"try_get", "fvarp": [ - {"type":"BASICDTYPE","name":"int","addr":"(QK)","loc":"d,69:16,69:19","dtypep":"(QK)","keyword":"int","range":"31:0","generic":false,"rangep": []} + {"type":"BASICDTYPE","name":"int","addr":"(WK)","loc":"d,69:16,69:19","dtypep":"(WK)","keyword":"int","range":"31:0","generic":false,"rangep": []} ],"classOrPackagep": [], "stmtsp": [ - {"type":"VAR","name":"message","addr":"(RK)","loc":"d,69:34,69:41","dtypep":"UNLINKED","origName":"message","isSc":false,"isPrimaryIO":false,"direction":"REF","isConst":false,"isPullup":false,"isPulldown":false,"isUsedClock":false,"isSigPublic":false,"isLatched":false,"isUsedLoopIdx":false,"noReset":false,"attrIsolateAssign":false,"attrFileDescr":false,"isDpiOpenArray":false,"isFuncReturn":false,"isFuncLocal":false,"attrClocker":"UNKNOWN","lifetime":"NONE","varType":"PORT","isSigUserRdPublic":false,"isSigUserRWPublic":false,"isGParam":false,"isParam":false,"attrScBv":false,"attrSFormat":false,"ignorePostWrite":false,"ignoreSchedWrite":false,"sensIfacep":"UNLINKED", + {"type":"VAR","name":"message","addr":"(XK)","loc":"d,69:34,69:41","dtypep":"UNLINKED","origName":"message","isSc":false,"isPrimaryIO":false,"direction":"REF","isConst":false,"isPullup":false,"isPulldown":false,"isUsedClock":false,"isSigPublic":false,"isLatched":false,"isUsedLoopIdx":false,"noReset":false,"attrIsolateAssign":false,"attrFileDescr":false,"isDpiOpenArray":false,"isFuncReturn":false,"isFuncLocal":false,"attrClocker":"UNKNOWN","lifetime":"NONE","varType":"PORT","isSigUserRdPublic":false,"isSigUserRWPublic":false,"isGParam":false,"isParam":false,"attrScBv":false,"attrSFormat":false,"ignorePostWrite":false,"ignoreSchedWrite":false,"sensIfacep":"UNLINKED", "childDTypep": [ - {"type":"REFDTYPE","name":"T","addr":"(SK)","loc":"d,69:32,69:33","dtypep":"UNLINKED","generic":false,"typedefp":"UNLINKED","refDTypep":"UNLINKED","classOrPackagep":"UNLINKED","typeofp": [],"classOrPackageOpp": [],"paramsp": []} + {"type":"REFDTYPE","name":"T","addr":"(YK)","loc":"d,69:32,69:33","dtypep":"UNLINKED","generic":false,"typedefp":"UNLINKED","refDTypep":"UNLINKED","classOrPackagep":"UNLINKED","typeofp": [],"classOrPackageOpp": [],"paramsp": []} ],"delayp": [],"valuep": [],"attrsp": []}, - {"type":"IF","name":"","addr":"(TK)","loc":"d,70:10,70:12", + {"type":"IF","name":"","addr":"(ZK)","loc":"d,70:10,70:12", "condp": [ - {"type":"GT","name":"","addr":"(UK)","loc":"d,70:20,70:21","dtypep":"(WE)", + {"type":"GT","name":"","addr":"(AL)","loc":"d,70:20,70:21","dtypep":"(WE)", "lhsp": [ - {"type":"FUNCREF","name":"num","addr":"(VK)","loc":"d,70:14,70:17","dtypep":"UNLINKED","dotted":"","taskp":"UNLINKED","classOrPackagep":"UNLINKED","namep": [],"pinsp": [],"scopeNamep": []} + {"type":"FUNCREF","name":"num","addr":"(BL)","loc":"d,70:14,70:17","dtypep":"UNLINKED","dotted":"","taskp":"UNLINKED","classOrPackagep":"UNLINKED","namep": [],"pinsp": [],"scopeNamep": []} ], "rhsp": [ - {"type":"CONST","name":"?32?sh0","addr":"(WK)","loc":"d,70:22,70:23","dtypep":"(N)"} + {"type":"CONST","name":"?32?sh0","addr":"(CL)","loc":"d,70:22,70:23","dtypep":"(N)"} ]} ], "thensp": [ - {"type":"BEGIN","name":"","addr":"(XK)","loc":"d,70:25,70:30","generate":false,"genfor":false,"implied":false,"needProcess":false,"unnamed":true,"genforp": [], + {"type":"BEGIN","name":"","addr":"(DL)","loc":"d,70:25,70:30","generate":false,"genfor":false,"implied":false,"needProcess":false,"unnamed":true,"genforp": [], "stmtsp": [ - {"type":"ASSIGN","name":"","addr":"(YK)","loc":"d,71:21,71:22","dtypep":"UNLINKED", + {"type":"ASSIGN","name":"","addr":"(EL)","loc":"d,71:21,71:22","dtypep":"UNLINKED", "rhsp": [ - {"type":"DOT","name":"","addr":"(ZK)","loc":"d,71:30,71:31","dtypep":"UNLINKED","colon":false, + {"type":"DOT","name":"","addr":"(FL)","loc":"d,71:30,71:31","dtypep":"UNLINKED","colon":false, "lhsp": [ - {"type":"PARSEREF","name":"m_queue","addr":"(AL)","loc":"d,71:23,71:30","dtypep":"UNLINKED","expect":"TEXT","lhsp": [],"ftaskrefp": []} + {"type":"PARSEREF","name":"m_queue","addr":"(GL)","loc":"d,71:23,71:30","dtypep":"UNLINKED","expect":"TEXT","lhsp": [],"ftaskrefp": []} ], "rhsp": [ - {"type":"FUNCREF","name":"pop_front","addr":"(BL)","loc":"d,71:31,71:40","dtypep":"UNLINKED","dotted":"","taskp":"UNLINKED","classOrPackagep":"UNLINKED","namep": [],"pinsp": [],"scopeNamep": []} + {"type":"FUNCREF","name":"pop_front","addr":"(HL)","loc":"d,71:31,71:40","dtypep":"UNLINKED","dotted":"","taskp":"UNLINKED","classOrPackagep":"UNLINKED","namep": [],"pinsp": [],"scopeNamep": []} ]} ], "lhsp": [ - {"type":"PARSEREF","name":"message","addr":"(CL)","loc":"d,71:13,71:20","dtypep":"UNLINKED","expect":"TEXT","lhsp": [],"ftaskrefp": []} + {"type":"PARSEREF","name":"message","addr":"(IL)","loc":"d,71:13,71:20","dtypep":"UNLINKED","expect":"TEXT","lhsp": [],"ftaskrefp": []} ],"timingControlp": []}, - {"type":"RETURN","name":"","addr":"(DL)","loc":"d,72:13,72:19", + {"type":"RETURN","name":"","addr":"(JL)","loc":"d,72:13,72:19", "lhsp": [ - {"type":"CONST","name":"?32?sh1","addr":"(EL)","loc":"d,72:20,72:21","dtypep":"(N)"} + {"type":"CONST","name":"?32?sh1","addr":"(KL)","loc":"d,72:20,72:21","dtypep":"(N)"} ]} ]} ],"elsesp": []}, - {"type":"RETURN","name":"","addr":"(FL)","loc":"d,74:10,74:16", + {"type":"RETURN","name":"","addr":"(LL)","loc":"d,74:10,74:16", "lhsp": [ - {"type":"CONST","name":"?32?sh0","addr":"(GL)","loc":"d,74:17,74:18","dtypep":"(N)"} + {"type":"CONST","name":"?32?sh0","addr":"(ML)","loc":"d,74:17,74:18","dtypep":"(N)"} ]} ],"scopeNamep": []}, - {"type":"TASK","name":"peek","addr":"(HL)","loc":"d,77:12,77:16","method":false,"dpiExport":false,"dpiImport":false,"dpiOpenChild":false,"dpiOpenParent":false,"isExternDef":false,"isExternProto":false,"prototype":false,"recursive":false,"taskPublic":false,"cname":"peek","fvarp": [],"classOrPackagep": [], + {"type":"TASK","name":"peek","addr":"(NL)","loc":"d,77:12,77:16","method":false,"dpiExport":false,"dpiImport":false,"dpiOpenChild":false,"dpiOpenParent":false,"isExternDef":false,"isExternProto":false,"prototype":false,"recursive":false,"taskPublic":false,"cname":"peek","fvarp": [],"classOrPackagep": [], "stmtsp": [ - {"type":"VAR","name":"message","addr":"(IL)","loc":"d,77:23,77:30","dtypep":"UNLINKED","origName":"message","isSc":false,"isPrimaryIO":false,"direction":"REF","isConst":false,"isPullup":false,"isPulldown":false,"isUsedClock":false,"isSigPublic":false,"isLatched":false,"isUsedLoopIdx":false,"noReset":false,"attrIsolateAssign":false,"attrFileDescr":false,"isDpiOpenArray":false,"isFuncReturn":false,"isFuncLocal":false,"attrClocker":"UNKNOWN","lifetime":"NONE","varType":"PORT","isSigUserRdPublic":false,"isSigUserRWPublic":false,"isGParam":false,"isParam":false,"attrScBv":false,"attrSFormat":false,"ignorePostWrite":false,"ignoreSchedWrite":false,"sensIfacep":"UNLINKED", + {"type":"VAR","name":"message","addr":"(OL)","loc":"d,77:23,77:30","dtypep":"UNLINKED","origName":"message","isSc":false,"isPrimaryIO":false,"direction":"REF","isConst":false,"isPullup":false,"isPulldown":false,"isUsedClock":false,"isSigPublic":false,"isLatched":false,"isUsedLoopIdx":false,"noReset":false,"attrIsolateAssign":false,"attrFileDescr":false,"isDpiOpenArray":false,"isFuncReturn":false,"isFuncLocal":false,"attrClocker":"UNKNOWN","lifetime":"NONE","varType":"PORT","isSigUserRdPublic":false,"isSigUserRWPublic":false,"isGParam":false,"isParam":false,"attrScBv":false,"attrSFormat":false,"ignorePostWrite":false,"ignoreSchedWrite":false,"sensIfacep":"UNLINKED", "childDTypep": [ - {"type":"REFDTYPE","name":"T","addr":"(JL)","loc":"d,77:21,77:22","dtypep":"UNLINKED","generic":false,"typedefp":"UNLINKED","refDTypep":"UNLINKED","classOrPackagep":"UNLINKED","typeofp": [],"classOrPackageOpp": [],"paramsp": []} + {"type":"REFDTYPE","name":"T","addr":"(PL)","loc":"d,77:21,77:22","dtypep":"UNLINKED","generic":false,"typedefp":"UNLINKED","refDTypep":"UNLINKED","classOrPackagep":"UNLINKED","typeofp": [],"classOrPackageOpp": [],"paramsp": []} ],"delayp": [],"valuep": [],"attrsp": []} ],"scopeNamep": []}, - {"type":"FUNC","name":"try_peek","addr":"(KL)","loc":"d,86:20,86:28","dtypep":"UNLINKED","method":false,"dpiExport":false,"dpiImport":false,"dpiOpenChild":false,"dpiOpenParent":false,"isExternDef":false,"isExternProto":false,"prototype":false,"recursive":false,"taskPublic":false,"cname":"try_peek", + {"type":"FUNC","name":"try_peek","addr":"(QL)","loc":"d,86:20,86:28","dtypep":"UNLINKED","method":false,"dpiExport":false,"dpiImport":false,"dpiOpenChild":false,"dpiOpenParent":false,"isExternDef":false,"isExternProto":false,"prototype":false,"recursive":false,"taskPublic":false,"cname":"try_peek", "fvarp": [ - {"type":"BASICDTYPE","name":"int","addr":"(LL)","loc":"d,86:16,86:19","dtypep":"(LL)","keyword":"int","range":"31:0","generic":false,"rangep": []} + {"type":"BASICDTYPE","name":"int","addr":"(RL)","loc":"d,86:16,86:19","dtypep":"(RL)","keyword":"int","range":"31:0","generic":false,"rangep": []} ],"classOrPackagep": [], "stmtsp": [ - {"type":"VAR","name":"message","addr":"(ML)","loc":"d,86:35,86:42","dtypep":"UNLINKED","origName":"message","isSc":false,"isPrimaryIO":false,"direction":"REF","isConst":false,"isPullup":false,"isPulldown":false,"isUsedClock":false,"isSigPublic":false,"isLatched":false,"isUsedLoopIdx":false,"noReset":false,"attrIsolateAssign":false,"attrFileDescr":false,"isDpiOpenArray":false,"isFuncReturn":false,"isFuncLocal":false,"attrClocker":"UNKNOWN","lifetime":"NONE","varType":"PORT","isSigUserRdPublic":false,"isSigUserRWPublic":false,"isGParam":false,"isParam":false,"attrScBv":false,"attrSFormat":false,"ignorePostWrite":false,"ignoreSchedWrite":false,"sensIfacep":"UNLINKED", + {"type":"VAR","name":"message","addr":"(SL)","loc":"d,86:35,86:42","dtypep":"UNLINKED","origName":"message","isSc":false,"isPrimaryIO":false,"direction":"REF","isConst":false,"isPullup":false,"isPulldown":false,"isUsedClock":false,"isSigPublic":false,"isLatched":false,"isUsedLoopIdx":false,"noReset":false,"attrIsolateAssign":false,"attrFileDescr":false,"isDpiOpenArray":false,"isFuncReturn":false,"isFuncLocal":false,"attrClocker":"UNKNOWN","lifetime":"NONE","varType":"PORT","isSigUserRdPublic":false,"isSigUserRWPublic":false,"isGParam":false,"isParam":false,"attrScBv":false,"attrSFormat":false,"ignorePostWrite":false,"ignoreSchedWrite":false,"sensIfacep":"UNLINKED", "childDTypep": [ - {"type":"REFDTYPE","name":"T","addr":"(NL)","loc":"d,86:33,86:34","dtypep":"UNLINKED","generic":false,"typedefp":"UNLINKED","refDTypep":"UNLINKED","classOrPackagep":"UNLINKED","typeofp": [],"classOrPackageOpp": [],"paramsp": []} + {"type":"REFDTYPE","name":"T","addr":"(TL)","loc":"d,86:33,86:34","dtypep":"UNLINKED","generic":false,"typedefp":"UNLINKED","refDTypep":"UNLINKED","classOrPackagep":"UNLINKED","typeofp": [],"classOrPackageOpp": [],"paramsp": []} ],"delayp": [],"valuep": [],"attrsp": []}, - {"type":"IF","name":"","addr":"(OL)","loc":"d,87:10,87:12", + {"type":"IF","name":"","addr":"(UL)","loc":"d,87:10,87:12", "condp": [ - {"type":"GT","name":"","addr":"(PL)","loc":"d,87:20,87:21","dtypep":"(WE)", + {"type":"GT","name":"","addr":"(VL)","loc":"d,87:20,87:21","dtypep":"(WE)", "lhsp": [ - {"type":"FUNCREF","name":"num","addr":"(QL)","loc":"d,87:14,87:17","dtypep":"UNLINKED","dotted":"","taskp":"UNLINKED","classOrPackagep":"UNLINKED","namep": [],"pinsp": [],"scopeNamep": []} + {"type":"FUNCREF","name":"num","addr":"(WL)","loc":"d,87:14,87:17","dtypep":"UNLINKED","dotted":"","taskp":"UNLINKED","classOrPackagep":"UNLINKED","namep": [],"pinsp": [],"scopeNamep": []} ], "rhsp": [ - {"type":"CONST","name":"?32?sh0","addr":"(RL)","loc":"d,87:22,87:23","dtypep":"(N)"} + {"type":"CONST","name":"?32?sh0","addr":"(XL)","loc":"d,87:22,87:23","dtypep":"(N)"} ]} ], "thensp": [ - {"type":"BEGIN","name":"","addr":"(SL)","loc":"d,87:25,87:30","generate":false,"genfor":false,"implied":false,"needProcess":false,"unnamed":true,"genforp": [], + {"type":"BEGIN","name":"","addr":"(YL)","loc":"d,87:25,87:30","generate":false,"genfor":false,"implied":false,"needProcess":false,"unnamed":true,"genforp": [], "stmtsp": [ - {"type":"ASSIGN","name":"","addr":"(TL)","loc":"d,88:21,88:22","dtypep":"UNLINKED", + {"type":"ASSIGN","name":"","addr":"(ZL)","loc":"d,88:21,88:22","dtypep":"UNLINKED", "rhsp": [ - {"type":"SELBIT","name":"","addr":"(UL)","loc":"d,88:30,88:31","dtypep":"UNLINKED", + {"type":"SELBIT","name":"","addr":"(AM)","loc":"d,88:30,88:31","dtypep":"UNLINKED", "fromp": [ - {"type":"PARSEREF","name":"m_queue","addr":"(VL)","loc":"d,88:23,88:30","dtypep":"UNLINKED","expect":"TEXT","lhsp": [],"ftaskrefp": []} + {"type":"PARSEREF","name":"m_queue","addr":"(BM)","loc":"d,88:23,88:30","dtypep":"UNLINKED","expect":"TEXT","lhsp": [],"ftaskrefp": []} ], "bitp": [ - {"type":"CONST","name":"?32?sh0","addr":"(WL)","loc":"d,88:31,88:32","dtypep":"(N)"} + {"type":"CONST","name":"?32?sh0","addr":"(CM)","loc":"d,88:31,88:32","dtypep":"(N)"} ],"thsp": [],"attrp": []} ], "lhsp": [ - {"type":"PARSEREF","name":"message","addr":"(XL)","loc":"d,88:13,88:20","dtypep":"UNLINKED","expect":"TEXT","lhsp": [],"ftaskrefp": []} + {"type":"PARSEREF","name":"message","addr":"(DM)","loc":"d,88:13,88:20","dtypep":"UNLINKED","expect":"TEXT","lhsp": [],"ftaskrefp": []} ],"timingControlp": []}, - {"type":"RETURN","name":"","addr":"(YL)","loc":"d,89:13,89:19", + {"type":"RETURN","name":"","addr":"(EM)","loc":"d,89:13,89:19", "lhsp": [ - {"type":"CONST","name":"?32?sh1","addr":"(ZL)","loc":"d,89:20,89:21","dtypep":"(N)"} + {"type":"CONST","name":"?32?sh1","addr":"(FM)","loc":"d,89:20,89:21","dtypep":"(N)"} ]} ]} ],"elsesp": []}, - {"type":"RETURN","name":"","addr":"(AM)","loc":"d,91:10,91:16", + {"type":"RETURN","name":"","addr":"(GM)","loc":"d,91:10,91:16", "lhsp": [ - {"type":"CONST","name":"?32?sh0","addr":"(BM)","loc":"d,91:17,91:18","dtypep":"(N)"} + {"type":"CONST","name":"?32?sh0","addr":"(HM)","loc":"d,91:17,91:18","dtypep":"(N)"} ]} ],"scopeNamep": []} ],"extendsp": []}, - {"type":"CLASS","name":"semaphore","addr":"(CM)","loc":"d,95:4,95:9","isExtended":false,"isInterfaceClass":false,"isVirtual":false,"origName":"semaphore","level":5,"modPublic":false,"inLibrary":false,"dead":false,"recursiveClone":false,"recursive":false,"timeunit":"NONE","classOrPackagep":"UNLINKED","inlinesp": [], + {"type":"CLASS","name":"semaphore","addr":"(IM)","loc":"d,95:4,95:9","isExtended":false,"isInterfaceClass":false,"isVirtual":false,"origName":"semaphore","level":5,"modPublic":false,"inLibrary":false,"dead":false,"recursiveClone":false,"recursive":false,"timeunit":"NONE","classOrPackagep":"UNLINKED","inlinesp": [], "stmtsp": [ - {"type":"VAR","name":"m_keyCount","addr":"(DM)","loc":"d,96:21,96:31","dtypep":"UNLINKED","origName":"m_keyCount","isSc":false,"isPrimaryIO":false,"direction":"NONE","isConst":false,"isPullup":false,"isPulldown":false,"isUsedClock":false,"isSigPublic":false,"isLatched":false,"isUsedLoopIdx":false,"noReset":false,"attrIsolateAssign":false,"attrFileDescr":false,"isDpiOpenArray":false,"isFuncReturn":false,"isFuncLocal":false,"attrClocker":"UNKNOWN","lifetime":"NONE","varType":"VAR","isSigUserRdPublic":false,"isSigUserRWPublic":false,"isGParam":false,"isParam":false,"attrScBv":false,"attrSFormat":false,"ignorePostWrite":false,"ignoreSchedWrite":false,"sensIfacep":"UNLINKED", + {"type":"VAR","name":"m_keyCount","addr":"(JM)","loc":"d,96:21,96:31","dtypep":"UNLINKED","origName":"m_keyCount","isSc":false,"isPrimaryIO":false,"direction":"NONE","isConst":false,"isPullup":false,"isPulldown":false,"isUsedClock":false,"isSigPublic":false,"isLatched":false,"isUsedLoopIdx":false,"noReset":false,"attrIsolateAssign":false,"attrFileDescr":false,"isDpiOpenArray":false,"isFuncReturn":false,"isFuncLocal":false,"attrClocker":"UNKNOWN","lifetime":"NONE","varType":"VAR","isSigUserRdPublic":false,"isSigUserRWPublic":false,"isGParam":false,"isParam":false,"attrScBv":false,"attrSFormat":false,"ignorePostWrite":false,"ignoreSchedWrite":false,"sensIfacep":"UNLINKED", "childDTypep": [ - {"type":"BASICDTYPE","name":"int","addr":"(EM)","loc":"d,96:17,96:20","dtypep":"(EM)","keyword":"int","range":"31:0","generic":false,"rangep": []} + {"type":"BASICDTYPE","name":"int","addr":"(KM)","loc":"d,96:17,96:20","dtypep":"(KM)","keyword":"int","range":"31:0","generic":false,"rangep": []} ],"delayp": [],"valuep": [],"attrsp": []}, - {"type":"FUNC","name":"new","addr":"(FM)","loc":"d,98:16,98:19","dtypep":"UNLINKED","method":false,"dpiExport":false,"dpiImport":false,"dpiOpenChild":false,"dpiOpenParent":false,"isExternDef":false,"isExternProto":false,"prototype":false,"recursive":false,"taskPublic":false,"cname":"new","fvarp": [],"classOrPackagep": [], + {"type":"FUNC","name":"new","addr":"(LM)","loc":"d,98:16,98:19","dtypep":"UNLINKED","method":false,"dpiExport":false,"dpiImport":false,"dpiOpenChild":false,"dpiOpenParent":false,"isExternDef":false,"isExternProto":false,"prototype":false,"recursive":false,"taskPublic":false,"cname":"new","fvarp": [],"classOrPackagep": [], "stmtsp": [ - {"type":"VAR","name":"keyCount","addr":"(GM)","loc":"d,98:24,98:32","dtypep":"UNLINKED","origName":"keyCount","isSc":false,"isPrimaryIO":false,"direction":"INPUT","isConst":false,"isPullup":false,"isPulldown":false,"isUsedClock":false,"isSigPublic":false,"isLatched":false,"isUsedLoopIdx":false,"noReset":false,"attrIsolateAssign":false,"attrFileDescr":false,"isDpiOpenArray":false,"isFuncReturn":false,"isFuncLocal":false,"attrClocker":"UNKNOWN","lifetime":"NONE","varType":"PORT","isSigUserRdPublic":false,"isSigUserRWPublic":false,"isGParam":false,"isParam":false,"attrScBv":false,"attrSFormat":false,"ignorePostWrite":false,"ignoreSchedWrite":false,"sensIfacep":"UNLINKED", + {"type":"VAR","name":"keyCount","addr":"(MM)","loc":"d,98:24,98:32","dtypep":"UNLINKED","origName":"keyCount","isSc":false,"isPrimaryIO":false,"direction":"INPUT","isConst":false,"isPullup":false,"isPulldown":false,"isUsedClock":false,"isSigPublic":false,"isLatched":false,"isUsedLoopIdx":false,"noReset":false,"attrIsolateAssign":false,"attrFileDescr":false,"isDpiOpenArray":false,"isFuncReturn":false,"isFuncLocal":false,"attrClocker":"UNKNOWN","lifetime":"NONE","varType":"PORT","isSigUserRdPublic":false,"isSigUserRWPublic":false,"isGParam":false,"isParam":false,"attrScBv":false,"attrSFormat":false,"ignorePostWrite":false,"ignoreSchedWrite":false,"sensIfacep":"UNLINKED", "childDTypep": [ - {"type":"BASICDTYPE","name":"int","addr":"(HM)","loc":"d,98:20,98:23","dtypep":"(HM)","keyword":"int","range":"31:0","generic":false,"rangep": []} + {"type":"BASICDTYPE","name":"int","addr":"(NM)","loc":"d,98:20,98:23","dtypep":"(NM)","keyword":"int","range":"31:0","generic":false,"rangep": []} ],"delayp": [], "valuep": [ - {"type":"CONST","name":"?32?sh0","addr":"(IM)","loc":"d,98:35,98:36","dtypep":"(N)"} + {"type":"CONST","name":"?32?sh0","addr":"(OM)","loc":"d,98:35,98:36","dtypep":"(N)"} ],"attrsp": []}, - {"type":"ASSIGN","name":"","addr":"(JM)","loc":"d,99:21,99:22","dtypep":"UNLINKED", + {"type":"ASSIGN","name":"","addr":"(PM)","loc":"d,99:21,99:22","dtypep":"UNLINKED", "rhsp": [ - {"type":"PARSEREF","name":"keyCount","addr":"(KM)","loc":"d,99:23,99:31","dtypep":"UNLINKED","expect":"TEXT","lhsp": [],"ftaskrefp": []} + {"type":"PARSEREF","name":"keyCount","addr":"(QM)","loc":"d,99:23,99:31","dtypep":"UNLINKED","expect":"TEXT","lhsp": [],"ftaskrefp": []} ], "lhsp": [ - {"type":"PARSEREF","name":"m_keyCount","addr":"(LM)","loc":"d,99:10,99:20","dtypep":"UNLINKED","expect":"TEXT","lhsp": [],"ftaskrefp": []} + {"type":"PARSEREF","name":"m_keyCount","addr":"(RM)","loc":"d,99:10,99:20","dtypep":"UNLINKED","expect":"TEXT","lhsp": [],"ftaskrefp": []} ],"timingControlp": []} ],"scopeNamep": []}, - {"type":"TASK","name":"put","addr":"(MM)","loc":"d,102:21,102:24","method":false,"dpiExport":false,"dpiImport":false,"dpiOpenChild":false,"dpiOpenParent":false,"isExternDef":false,"isExternProto":false,"prototype":false,"recursive":false,"taskPublic":false,"cname":"put","fvarp": [],"classOrPackagep": [], + {"type":"TASK","name":"put","addr":"(SM)","loc":"d,102:21,102:24","method":false,"dpiExport":false,"dpiImport":false,"dpiOpenChild":false,"dpiOpenParent":false,"isExternDef":false,"isExternProto":false,"prototype":false,"recursive":false,"taskPublic":false,"cname":"put","fvarp": [],"classOrPackagep": [], "stmtsp": [ - {"type":"VAR","name":"keyCount","addr":"(NM)","loc":"d,102:29,102:37","dtypep":"UNLINKED","origName":"keyCount","isSc":false,"isPrimaryIO":false,"direction":"INPUT","isConst":false,"isPullup":false,"isPulldown":false,"isUsedClock":false,"isSigPublic":false,"isLatched":false,"isUsedLoopIdx":false,"noReset":false,"attrIsolateAssign":false,"attrFileDescr":false,"isDpiOpenArray":false,"isFuncReturn":false,"isFuncLocal":false,"attrClocker":"UNKNOWN","lifetime":"NONE","varType":"PORT","isSigUserRdPublic":false,"isSigUserRWPublic":false,"isGParam":false,"isParam":false,"attrScBv":false,"attrSFormat":false,"ignorePostWrite":false,"ignoreSchedWrite":false,"sensIfacep":"UNLINKED", + {"type":"VAR","name":"keyCount","addr":"(TM)","loc":"d,102:29,102:37","dtypep":"UNLINKED","origName":"keyCount","isSc":false,"isPrimaryIO":false,"direction":"INPUT","isConst":false,"isPullup":false,"isPulldown":false,"isUsedClock":false,"isSigPublic":false,"isLatched":false,"isUsedLoopIdx":false,"noReset":false,"attrIsolateAssign":false,"attrFileDescr":false,"isDpiOpenArray":false,"isFuncReturn":false,"isFuncLocal":false,"attrClocker":"UNKNOWN","lifetime":"NONE","varType":"PORT","isSigUserRdPublic":false,"isSigUserRWPublic":false,"isGParam":false,"isParam":false,"attrScBv":false,"attrSFormat":false,"ignorePostWrite":false,"ignoreSchedWrite":false,"sensIfacep":"UNLINKED", "childDTypep": [ - {"type":"BASICDTYPE","name":"int","addr":"(OM)","loc":"d,102:25,102:28","dtypep":"(OM)","keyword":"int","range":"31:0","generic":false,"rangep": []} + {"type":"BASICDTYPE","name":"int","addr":"(UM)","loc":"d,102:25,102:28","dtypep":"(UM)","keyword":"int","range":"31:0","generic":false,"rangep": []} ],"delayp": [], "valuep": [ - {"type":"CONST","name":"?32?sh1","addr":"(PM)","loc":"d,102:40,102:41","dtypep":"(N)"} + {"type":"CONST","name":"?32?sh1","addr":"(VM)","loc":"d,102:40,102:41","dtypep":"(N)"} ],"attrsp": []}, - {"type":"ASSIGN","name":"","addr":"(QM)","loc":"d,103:21,103:23","dtypep":"UNLINKED", + {"type":"ASSIGN","name":"","addr":"(WM)","loc":"d,103:21,103:23","dtypep":"UNLINKED", "rhsp": [ - {"type":"ADD","name":"","addr":"(RM)","loc":"d,103:21,103:23","dtypep":"UNLINKED", + {"type":"ADD","name":"","addr":"(XM)","loc":"d,103:21,103:23","dtypep":"UNLINKED", "lhsp": [ - {"type":"PARSEREF","name":"m_keyCount","addr":"(SM)","loc":"d,103:10,103:20","dtypep":"UNLINKED","expect":"TEXT","lhsp": [],"ftaskrefp": []} + {"type":"PARSEREF","name":"m_keyCount","addr":"(YM)","loc":"d,103:10,103:20","dtypep":"UNLINKED","expect":"TEXT","lhsp": [],"ftaskrefp": []} ], "rhsp": [ - {"type":"PARSEREF","name":"keyCount","addr":"(TM)","loc":"d,103:24,103:32","dtypep":"UNLINKED","expect":"TEXT","lhsp": [],"ftaskrefp": []} + {"type":"PARSEREF","name":"keyCount","addr":"(ZM)","loc":"d,103:24,103:32","dtypep":"UNLINKED","expect":"TEXT","lhsp": [],"ftaskrefp": []} ]} ], "lhsp": [ - {"type":"PARSEREF","name":"m_keyCount","addr":"(UM)","loc":"d,103:10,103:20","dtypep":"UNLINKED","expect":"TEXT","lhsp": [],"ftaskrefp": []} + {"type":"PARSEREF","name":"m_keyCount","addr":"(AN)","loc":"d,103:10,103:20","dtypep":"UNLINKED","expect":"TEXT","lhsp": [],"ftaskrefp": []} ],"timingControlp": []} ],"scopeNamep": []}, - {"type":"TASK","name":"get","addr":"(VM)","loc":"d,106:12,106:15","method":false,"dpiExport":false,"dpiImport":false,"dpiOpenChild":false,"dpiOpenParent":false,"isExternDef":false,"isExternProto":false,"prototype":false,"recursive":false,"taskPublic":false,"cname":"get","fvarp": [],"classOrPackagep": [], + {"type":"TASK","name":"get","addr":"(BN)","loc":"d,106:12,106:15","method":false,"dpiExport":false,"dpiImport":false,"dpiOpenChild":false,"dpiOpenParent":false,"isExternDef":false,"isExternProto":false,"prototype":false,"recursive":false,"taskPublic":false,"cname":"get","fvarp": [],"classOrPackagep": [], "stmtsp": [ - {"type":"VAR","name":"keyCount","addr":"(WM)","loc":"d,106:20,106:28","dtypep":"UNLINKED","origName":"keyCount","isSc":false,"isPrimaryIO":false,"direction":"INPUT","isConst":false,"isPullup":false,"isPulldown":false,"isUsedClock":false,"isSigPublic":false,"isLatched":false,"isUsedLoopIdx":false,"noReset":false,"attrIsolateAssign":false,"attrFileDescr":false,"isDpiOpenArray":false,"isFuncReturn":false,"isFuncLocal":false,"attrClocker":"UNKNOWN","lifetime":"NONE","varType":"PORT","isSigUserRdPublic":false,"isSigUserRWPublic":false,"isGParam":false,"isParam":false,"attrScBv":false,"attrSFormat":false,"ignorePostWrite":false,"ignoreSchedWrite":false,"sensIfacep":"UNLINKED", + {"type":"VAR","name":"keyCount","addr":"(CN)","loc":"d,106:20,106:28","dtypep":"UNLINKED","origName":"keyCount","isSc":false,"isPrimaryIO":false,"direction":"INPUT","isConst":false,"isPullup":false,"isPulldown":false,"isUsedClock":false,"isSigPublic":false,"isLatched":false,"isUsedLoopIdx":false,"noReset":false,"attrIsolateAssign":false,"attrFileDescr":false,"isDpiOpenArray":false,"isFuncReturn":false,"isFuncLocal":false,"attrClocker":"UNKNOWN","lifetime":"NONE","varType":"PORT","isSigUserRdPublic":false,"isSigUserRWPublic":false,"isGParam":false,"isParam":false,"attrScBv":false,"attrSFormat":false,"ignorePostWrite":false,"ignoreSchedWrite":false,"sensIfacep":"UNLINKED", "childDTypep": [ - {"type":"BASICDTYPE","name":"int","addr":"(XM)","loc":"d,106:16,106:19","dtypep":"(XM)","keyword":"int","range":"31:0","generic":false,"rangep": []} + {"type":"BASICDTYPE","name":"int","addr":"(DN)","loc":"d,106:16,106:19","dtypep":"(DN)","keyword":"int","range":"31:0","generic":false,"rangep": []} ],"delayp": [], "valuep": [ - {"type":"CONST","name":"?32?sh1","addr":"(YM)","loc":"d,106:31,106:32","dtypep":"(N)"} + {"type":"CONST","name":"?32?sh1","addr":"(EN)","loc":"d,106:31,106:32","dtypep":"(N)"} ],"attrsp": []} ],"scopeNamep": []}, - {"type":"FUNC","name":"try_get","addr":"(ZM)","loc":"d,115:20,115:27","dtypep":"UNLINKED","method":false,"dpiExport":false,"dpiImport":false,"dpiOpenChild":false,"dpiOpenParent":false,"isExternDef":false,"isExternProto":false,"prototype":false,"recursive":false,"taskPublic":false,"cname":"try_get", + {"type":"FUNC","name":"try_get","addr":"(FN)","loc":"d,115:20,115:27","dtypep":"UNLINKED","method":false,"dpiExport":false,"dpiImport":false,"dpiOpenChild":false,"dpiOpenParent":false,"isExternDef":false,"isExternProto":false,"prototype":false,"recursive":false,"taskPublic":false,"cname":"try_get", "fvarp": [ - {"type":"BASICDTYPE","name":"int","addr":"(AN)","loc":"d,115:16,115:19","dtypep":"(AN)","keyword":"int","range":"31:0","generic":false,"rangep": []} + {"type":"BASICDTYPE","name":"int","addr":"(GN)","loc":"d,115:16,115:19","dtypep":"(GN)","keyword":"int","range":"31:0","generic":false,"rangep": []} ],"classOrPackagep": [], "stmtsp": [ - {"type":"VAR","name":"keyCount","addr":"(BN)","loc":"d,115:32,115:40","dtypep":"UNLINKED","origName":"keyCount","isSc":false,"isPrimaryIO":false,"direction":"INPUT","isConst":false,"isPullup":false,"isPulldown":false,"isUsedClock":false,"isSigPublic":false,"isLatched":false,"isUsedLoopIdx":false,"noReset":false,"attrIsolateAssign":false,"attrFileDescr":false,"isDpiOpenArray":false,"isFuncReturn":false,"isFuncLocal":false,"attrClocker":"UNKNOWN","lifetime":"NONE","varType":"PORT","isSigUserRdPublic":false,"isSigUserRWPublic":false,"isGParam":false,"isParam":false,"attrScBv":false,"attrSFormat":false,"ignorePostWrite":false,"ignoreSchedWrite":false,"sensIfacep":"UNLINKED", + {"type":"VAR","name":"keyCount","addr":"(HN)","loc":"d,115:32,115:40","dtypep":"UNLINKED","origName":"keyCount","isSc":false,"isPrimaryIO":false,"direction":"INPUT","isConst":false,"isPullup":false,"isPulldown":false,"isUsedClock":false,"isSigPublic":false,"isLatched":false,"isUsedLoopIdx":false,"noReset":false,"attrIsolateAssign":false,"attrFileDescr":false,"isDpiOpenArray":false,"isFuncReturn":false,"isFuncLocal":false,"attrClocker":"UNKNOWN","lifetime":"NONE","varType":"PORT","isSigUserRdPublic":false,"isSigUserRWPublic":false,"isGParam":false,"isParam":false,"attrScBv":false,"attrSFormat":false,"ignorePostWrite":false,"ignoreSchedWrite":false,"sensIfacep":"UNLINKED", "childDTypep": [ - {"type":"BASICDTYPE","name":"int","addr":"(CN)","loc":"d,115:28,115:31","dtypep":"(CN)","keyword":"int","range":"31:0","generic":false,"rangep": []} + {"type":"BASICDTYPE","name":"int","addr":"(IN)","loc":"d,115:28,115:31","dtypep":"(IN)","keyword":"int","range":"31:0","generic":false,"rangep": []} ],"delayp": [], "valuep": [ - {"type":"CONST","name":"?32?sh1","addr":"(DN)","loc":"d,115:43,115:44","dtypep":"(N)"} + {"type":"CONST","name":"?32?sh1","addr":"(JN)","loc":"d,115:43,115:44","dtypep":"(N)"} ],"attrsp": []}, - {"type":"IF","name":"","addr":"(EN)","loc":"d,116:10,116:12", + {"type":"IF","name":"","addr":"(KN)","loc":"d,116:10,116:12", "condp": [ - {"type":"GTE","name":"","addr":"(FN)","loc":"d,116:25,116:27","dtypep":"(WE)", + {"type":"GTE","name":"","addr":"(LN)","loc":"d,116:25,116:27","dtypep":"(WE)", "lhsp": [ - {"type":"PARSEREF","name":"m_keyCount","addr":"(GN)","loc":"d,116:14,116:24","dtypep":"UNLINKED","expect":"TEXT","lhsp": [],"ftaskrefp": []} + {"type":"PARSEREF","name":"m_keyCount","addr":"(MN)","loc":"d,116:14,116:24","dtypep":"UNLINKED","expect":"TEXT","lhsp": [],"ftaskrefp": []} ], "rhsp": [ - {"type":"PARSEREF","name":"keyCount","addr":"(HN)","loc":"d,116:28,116:36","dtypep":"UNLINKED","expect":"TEXT","lhsp": [],"ftaskrefp": []} + {"type":"PARSEREF","name":"keyCount","addr":"(NN)","loc":"d,116:28,116:36","dtypep":"UNLINKED","expect":"TEXT","lhsp": [],"ftaskrefp": []} ]} ], "thensp": [ - {"type":"BEGIN","name":"","addr":"(IN)","loc":"d,116:38,116:43","generate":false,"genfor":false,"implied":false,"needProcess":false,"unnamed":true,"genforp": [], + {"type":"BEGIN","name":"","addr":"(ON)","loc":"d,116:38,116:43","generate":false,"genfor":false,"implied":false,"needProcess":false,"unnamed":true,"genforp": [], "stmtsp": [ - {"type":"ASSIGN","name":"","addr":"(JN)","loc":"d,117:24,117:26","dtypep":"UNLINKED", + {"type":"ASSIGN","name":"","addr":"(PN)","loc":"d,117:24,117:26","dtypep":"UNLINKED", "rhsp": [ - {"type":"SUB","name":"","addr":"(KN)","loc":"d,117:24,117:26","dtypep":"UNLINKED", + {"type":"SUB","name":"","addr":"(QN)","loc":"d,117:24,117:26","dtypep":"UNLINKED", "lhsp": [ - {"type":"PARSEREF","name":"m_keyCount","addr":"(LN)","loc":"d,117:13,117:23","dtypep":"UNLINKED","expect":"TEXT","lhsp": [],"ftaskrefp": []} + {"type":"PARSEREF","name":"m_keyCount","addr":"(RN)","loc":"d,117:13,117:23","dtypep":"UNLINKED","expect":"TEXT","lhsp": [],"ftaskrefp": []} ], "rhsp": [ - {"type":"PARSEREF","name":"keyCount","addr":"(MN)","loc":"d,117:27,117:35","dtypep":"UNLINKED","expect":"TEXT","lhsp": [],"ftaskrefp": []} + {"type":"PARSEREF","name":"keyCount","addr":"(SN)","loc":"d,117:27,117:35","dtypep":"UNLINKED","expect":"TEXT","lhsp": [],"ftaskrefp": []} ]} ], "lhsp": [ - {"type":"PARSEREF","name":"m_keyCount","addr":"(NN)","loc":"d,117:13,117:23","dtypep":"UNLINKED","expect":"TEXT","lhsp": [],"ftaskrefp": []} + {"type":"PARSEREF","name":"m_keyCount","addr":"(TN)","loc":"d,117:13,117:23","dtypep":"UNLINKED","expect":"TEXT","lhsp": [],"ftaskrefp": []} ],"timingControlp": []}, - {"type":"RETURN","name":"","addr":"(ON)","loc":"d,118:13,118:19", + {"type":"RETURN","name":"","addr":"(UN)","loc":"d,118:13,118:19", "lhsp": [ - {"type":"CONST","name":"?32?sh1","addr":"(PN)","loc":"d,118:20,118:21","dtypep":"(N)"} + {"type":"CONST","name":"?32?sh1","addr":"(VN)","loc":"d,118:20,118:21","dtypep":"(N)"} ]} ]} ],"elsesp": []}, - {"type":"RETURN","name":"","addr":"(QN)","loc":"d,120:10,120:16", + {"type":"RETURN","name":"","addr":"(WN)","loc":"d,120:10,120:16", "lhsp": [ - {"type":"CONST","name":"?32?sh0","addr":"(RN)","loc":"d,120:17,120:18","dtypep":"(N)"} + {"type":"CONST","name":"?32?sh0","addr":"(XN)","loc":"d,120:17,120:18","dtypep":"(N)"} ]} ],"scopeNamep": []} ],"extendsp": []}, - {"type":"CLASS","name":"process","addr":"(SN)","loc":"d,124:4,124:9","isExtended":false,"isInterfaceClass":false,"isVirtual":false,"origName":"process","level":5,"modPublic":false,"inLibrary":false,"dead":false,"recursiveClone":false,"recursive":false,"timeunit":"NONE","classOrPackagep":"UNLINKED","inlinesp": [], + {"type":"CLASS","name":"process","addr":"(YN)","loc":"d,124:4,124:9","isExtended":false,"isInterfaceClass":false,"isVirtual":false,"origName":"process","level":5,"modPublic":false,"inLibrary":false,"dead":false,"recursiveClone":false,"recursive":false,"timeunit":"NONE","classOrPackagep":"UNLINKED","inlinesp": [], "stmtsp": [ - {"type":"TYPEDEF","name":"state","addr":"(TN)","loc":"d,131:9,131:14","dtypep":"UNLINKED","attrPublic":false,"isUnderClass":false, + {"type":"TYPEDEF","name":"state","addr":"(ZN)","loc":"d,131:9,131:14","dtypep":"UNLINKED","attrPublic":false,"isUnderClass":false, "childDTypep": [ - {"type":"DEFIMPLICITDTYPE","name":"__typeimpenum0","addr":"(UN)","loc":"d,125:15,125:19","dtypep":"UNLINKED","generic":false, + {"type":"DEFIMPLICITDTYPE","name":"__typeimpenum0","addr":"(AO)","loc":"d,125:15,125:19","dtypep":"UNLINKED","generic":false, "childDTypep": [ - {"type":"ENUMDTYPE","name":"","addr":"(VN)","loc":"d,125:15,125:19","dtypep":"UNLINKED","enum":true,"generic":false,"refDTypep":"UNLINKED", + {"type":"ENUMDTYPE","name":"","addr":"(BO)","loc":"d,125:15,125:19","dtypep":"UNLINKED","enum":true,"generic":false,"refDTypep":"UNLINKED", "childDTypep": [ - {"type":"BASICDTYPE","name":"int","addr":"(WN)","loc":"d,125:20,125:21","dtypep":"(WN)","keyword":"int","range":"31:0","generic":false,"rangep": []} + {"type":"BASICDTYPE","name":"int","addr":"(CO)","loc":"d,125:20,125:21","dtypep":"(CO)","keyword":"int","range":"31:0","generic":false,"rangep": []} ], "itemsp": [ - {"type":"ENUMITEM","name":"FINISHED","addr":"(XN)","loc":"d,126:10,126:18","dtypep":"UNLINKED","rangep": [], + {"type":"ENUMITEM","name":"FINISHED","addr":"(DO)","loc":"d,126:10,126:18","dtypep":"UNLINKED","rangep": [], "valuep": [ - {"type":"CONST","name":"?32?sh0","addr":"(YN)","loc":"d,126:22,126:23","dtypep":"(N)"} + {"type":"CONST","name":"?32?sh0","addr":"(EO)","loc":"d,126:22,126:23","dtypep":"(N)"} ]}, - {"type":"ENUMITEM","name":"RUNNING","addr":"(ZN)","loc":"d,127:10,127:17","dtypep":"UNLINKED","rangep": [], + {"type":"ENUMITEM","name":"RUNNING","addr":"(FO)","loc":"d,127:10,127:17","dtypep":"UNLINKED","rangep": [], "valuep": [ - {"type":"CONST","name":"?32?sh1","addr":"(AO)","loc":"d,127:22,127:23","dtypep":"(N)"} + {"type":"CONST","name":"?32?sh1","addr":"(GO)","loc":"d,127:22,127:23","dtypep":"(N)"} ]}, - {"type":"ENUMITEM","name":"WAITING","addr":"(BO)","loc":"d,128:10,128:17","dtypep":"UNLINKED","rangep": [], + {"type":"ENUMITEM","name":"WAITING","addr":"(HO)","loc":"d,128:10,128:17","dtypep":"UNLINKED","rangep": [], "valuep": [ - {"type":"CONST","name":"?32?sh2","addr":"(CO)","loc":"d,128:22,128:23","dtypep":"(SD)"} + {"type":"CONST","name":"?32?sh2","addr":"(IO)","loc":"d,128:22,128:23","dtypep":"(SD)"} ]}, - {"type":"ENUMITEM","name":"SUSPENDED","addr":"(DO)","loc":"d,129:10,129:19","dtypep":"UNLINKED","rangep": [], + {"type":"ENUMITEM","name":"SUSPENDED","addr":"(JO)","loc":"d,129:10,129:19","dtypep":"UNLINKED","rangep": [], "valuep": [ - {"type":"CONST","name":"?32?sh3","addr":"(EO)","loc":"d,129:22,129:23","dtypep":"(SD)"} + {"type":"CONST","name":"?32?sh3","addr":"(KO)","loc":"d,129:22,129:23","dtypep":"(SD)"} ]}, - {"type":"ENUMITEM","name":"KILLED","addr":"(FO)","loc":"d,130:10,130:16","dtypep":"UNLINKED","rangep": [], + {"type":"ENUMITEM","name":"KILLED","addr":"(LO)","loc":"d,130:10,130:16","dtypep":"UNLINKED","rangep": [], "valuep": [ - {"type":"CONST","name":"?32?sh4","addr":"(GO)","loc":"d,130:22,130:23","dtypep":"(HO)"} + {"type":"CONST","name":"?32?sh4","addr":"(MO)","loc":"d,130:22,130:23","dtypep":"(NO)"} ]} ]} ]} ],"attrsp": []}, - {"type":"FUNC","name":"self","addr":"(IO)","loc":"d,138:31,138:35","dtypep":"UNLINKED","method":false,"dpiExport":false,"dpiImport":false,"dpiOpenChild":false,"dpiOpenParent":false,"isExternDef":false,"isExternProto":false,"prototype":false,"recursive":false,"taskPublic":false,"cname":"self", + {"type":"FUNC","name":"self","addr":"(OO)","loc":"d,138:31,138:35","dtypep":"UNLINKED","method":false,"dpiExport":false,"dpiImport":false,"dpiOpenChild":false,"dpiOpenParent":false,"isExternDef":false,"isExternProto":false,"prototype":false,"recursive":false,"taskPublic":false,"cname":"self", "fvarp": [ - {"type":"REFDTYPE","name":"process","addr":"(JO)","loc":"d,138:23,138:30","dtypep":"UNLINKED","generic":false,"typedefp":"UNLINKED","refDTypep":"UNLINKED","classOrPackagep":"UNLINKED","typeofp": [],"classOrPackageOpp": [],"paramsp": []} + {"type":"REFDTYPE","name":"process","addr":"(PO)","loc":"d,138:23,138:30","dtypep":"UNLINKED","generic":false,"typedefp":"UNLINKED","refDTypep":"UNLINKED","classOrPackagep":"UNLINKED","typeofp": [],"classOrPackageOpp": [],"paramsp": []} ],"classOrPackagep": [], "stmtsp": [ - {"type":"VAR","name":"p","addr":"(KO)","loc":"d,139:18,139:19","dtypep":"UNLINKED","origName":"p","isSc":false,"isPrimaryIO":false,"direction":"NONE","isConst":false,"isPullup":false,"isPulldown":false,"isUsedClock":false,"isSigPublic":false,"isLatched":false,"isUsedLoopIdx":false,"noReset":false,"attrIsolateAssign":false,"attrFileDescr":false,"isDpiOpenArray":false,"isFuncReturn":false,"isFuncLocal":false,"attrClocker":"UNKNOWN","lifetime":"NONE","varType":"VAR","isSigUserRdPublic":false,"isSigUserRWPublic":false,"isGParam":false,"isParam":false,"attrScBv":false,"attrSFormat":false,"ignorePostWrite":false,"ignoreSchedWrite":false,"sensIfacep":"UNLINKED", + {"type":"VAR","name":"p","addr":"(QO)","loc":"d,139:18,139:19","dtypep":"UNLINKED","origName":"p","isSc":false,"isPrimaryIO":false,"direction":"NONE","isConst":false,"isPullup":false,"isPulldown":false,"isUsedClock":false,"isSigPublic":false,"isLatched":false,"isUsedLoopIdx":false,"noReset":false,"attrIsolateAssign":false,"attrFileDescr":false,"isDpiOpenArray":false,"isFuncReturn":false,"isFuncLocal":false,"attrClocker":"UNKNOWN","lifetime":"NONE","varType":"VAR","isSigUserRdPublic":false,"isSigUserRWPublic":false,"isGParam":false,"isParam":false,"attrScBv":false,"attrSFormat":false,"ignorePostWrite":false,"ignoreSchedWrite":false,"sensIfacep":"UNLINKED", "childDTypep": [ - {"type":"REFDTYPE","name":"process","addr":"(LO)","loc":"d,139:10,139:17","dtypep":"UNLINKED","generic":false,"typedefp":"UNLINKED","refDTypep":"UNLINKED","classOrPackagep":"UNLINKED","typeofp": [],"classOrPackageOpp": [],"paramsp": []} + {"type":"REFDTYPE","name":"process","addr":"(RO)","loc":"d,139:10,139:17","dtypep":"UNLINKED","generic":false,"typedefp":"UNLINKED","refDTypep":"UNLINKED","classOrPackagep":"UNLINKED","typeofp": [],"classOrPackageOpp": [],"paramsp": []} ],"delayp": [], "valuep": [ - {"type":"NEW","name":"new","addr":"(MO)","loc":"d,139:22,139:25","dtypep":"UNLINKED","isImplicit":false,"isScoped":false,"dotted":"","taskp":"UNLINKED","classOrPackagep":"UNLINKED","namep": [],"pinsp": [],"scopeNamep": []} + {"type":"NEW","name":"new","addr":"(SO)","loc":"d,139:22,139:25","dtypep":"UNLINKED","isImplicit":false,"isScoped":false,"dotted":"","taskp":"UNLINKED","classOrPackagep":"UNLINKED","namep": [],"pinsp": [],"scopeNamep": []} ],"attrsp": []}, - {"type":"RETURN","name":"","addr":"(NO)","loc":"d,143:10,143:16", + {"type":"RETURN","name":"","addr":"(TO)","loc":"d,143:10,143:16", "lhsp": [ - {"type":"PARSEREF","name":"p","addr":"(OO)","loc":"d,143:17,143:18","dtypep":"UNLINKED","expect":"TEXT","lhsp": [],"ftaskrefp": []} + {"type":"PARSEREF","name":"p","addr":"(UO)","loc":"d,143:17,143:18","dtypep":"UNLINKED","expect":"TEXT","lhsp": [],"ftaskrefp": []} ]} ],"scopeNamep": []}, - {"type":"TASK","name":"set_status","addr":"(PO)","loc":"d,146:31,146:41","method":false,"dpiExport":false,"dpiImport":false,"dpiOpenChild":false,"dpiOpenParent":false,"isExternDef":false,"isExternProto":false,"prototype":false,"recursive":false,"taskPublic":false,"cname":"set_status","fvarp": [],"classOrPackagep": [], + {"type":"TASK","name":"set_status","addr":"(VO)","loc":"d,146:31,146:41","method":false,"dpiExport":false,"dpiImport":false,"dpiOpenChild":false,"dpiOpenParent":false,"isExternDef":false,"isExternProto":false,"prototype":false,"recursive":false,"taskPublic":false,"cname":"set_status","fvarp": [],"classOrPackagep": [], "stmtsp": [ - {"type":"VAR","name":"s","addr":"(QO)","loc":"d,146:48,146:49","dtypep":"UNLINKED","origName":"s","isSc":false,"isPrimaryIO":false,"direction":"INPUT","isConst":false,"isPullup":false,"isPulldown":false,"isUsedClock":false,"isSigPublic":false,"isLatched":false,"isUsedLoopIdx":false,"noReset":false,"attrIsolateAssign":false,"attrFileDescr":false,"isDpiOpenArray":false,"isFuncReturn":false,"isFuncLocal":false,"attrClocker":"UNKNOWN","lifetime":"NONE","varType":"PORT","isSigUserRdPublic":false,"isSigUserRWPublic":false,"isGParam":false,"isParam":false,"attrScBv":false,"attrSFormat":false,"ignorePostWrite":false,"ignoreSchedWrite":false,"sensIfacep":"UNLINKED", + {"type":"VAR","name":"s","addr":"(WO)","loc":"d,146:48,146:49","dtypep":"UNLINKED","origName":"s","isSc":false,"isPrimaryIO":false,"direction":"INPUT","isConst":false,"isPullup":false,"isPulldown":false,"isUsedClock":false,"isSigPublic":false,"isLatched":false,"isUsedLoopIdx":false,"noReset":false,"attrIsolateAssign":false,"attrFileDescr":false,"isDpiOpenArray":false,"isFuncReturn":false,"isFuncLocal":false,"attrClocker":"UNKNOWN","lifetime":"NONE","varType":"PORT","isSigUserRdPublic":false,"isSigUserRWPublic":false,"isGParam":false,"isParam":false,"attrScBv":false,"attrSFormat":false,"ignorePostWrite":false,"ignoreSchedWrite":false,"sensIfacep":"UNLINKED", "childDTypep": [ - {"type":"REFDTYPE","name":"state","addr":"(RO)","loc":"d,146:42,146:47","dtypep":"UNLINKED","generic":false,"typedefp":"UNLINKED","refDTypep":"UNLINKED","classOrPackagep":"UNLINKED","typeofp": [],"classOrPackageOpp": [],"paramsp": []} + {"type":"REFDTYPE","name":"state","addr":"(XO)","loc":"d,146:42,146:47","dtypep":"UNLINKED","generic":false,"typedefp":"UNLINKED","refDTypep":"UNLINKED","classOrPackagep":"UNLINKED","typeofp": [],"classOrPackageOpp": [],"paramsp": []} ],"delayp": [],"valuep": [],"attrsp": []} ],"scopeNamep": []}, - {"type":"FUNC","name":"status","addr":"(SO)","loc":"d,152:22,152:28","dtypep":"UNLINKED","method":false,"dpiExport":false,"dpiImport":false,"dpiOpenChild":false,"dpiOpenParent":false,"isExternDef":false,"isExternProto":false,"prototype":false,"recursive":false,"taskPublic":false,"cname":"status", + {"type":"FUNC","name":"status","addr":"(YO)","loc":"d,152:22,152:28","dtypep":"UNLINKED","method":false,"dpiExport":false,"dpiImport":false,"dpiOpenChild":false,"dpiOpenParent":false,"isExternDef":false,"isExternProto":false,"prototype":false,"recursive":false,"taskPublic":false,"cname":"status", "fvarp": [ - {"type":"REFDTYPE","name":"state","addr":"(TO)","loc":"d,152:16,152:21","dtypep":"UNLINKED","generic":false,"typedefp":"UNLINKED","refDTypep":"UNLINKED","classOrPackagep":"UNLINKED","typeofp": [],"classOrPackageOpp": [],"paramsp": []} + {"type":"REFDTYPE","name":"state","addr":"(ZO)","loc":"d,152:16,152:21","dtypep":"UNLINKED","generic":false,"typedefp":"UNLINKED","refDTypep":"UNLINKED","classOrPackagep":"UNLINKED","typeofp": [],"classOrPackageOpp": [],"paramsp": []} ],"classOrPackagep": [], "stmtsp": [ - {"type":"RETURN","name":"","addr":"(UO)","loc":"d,156:10,156:16", + {"type":"RETURN","name":"","addr":"(AP)","loc":"d,156:10,156:16", "lhsp": [ - {"type":"PARSEREF","name":"RUNNING","addr":"(VO)","loc":"d,156:17,156:24","dtypep":"UNLINKED","expect":"TEXT","lhsp": [],"ftaskrefp": []} + {"type":"PARSEREF","name":"RUNNING","addr":"(BP)","loc":"d,156:17,156:24","dtypep":"UNLINKED","expect":"TEXT","lhsp": [],"ftaskrefp": []} ]} ],"scopeNamep": []}, - {"type":"TASK","name":"kill","addr":"(WO)","loc":"d,160:21,160:25","method":false,"dpiExport":false,"dpiImport":false,"dpiOpenChild":false,"dpiOpenParent":false,"isExternDef":false,"isExternProto":false,"prototype":false,"recursive":false,"taskPublic":false,"cname":"kill","fvarp": [],"classOrPackagep": [], + {"type":"TASK","name":"kill","addr":"(CP)","loc":"d,160:21,160:25","method":false,"dpiExport":false,"dpiImport":false,"dpiOpenChild":false,"dpiOpenParent":false,"isExternDef":false,"isExternProto":false,"prototype":false,"recursive":false,"taskPublic":false,"cname":"kill","fvarp": [],"classOrPackagep": [], "stmtsp": [ - {"type":"STMTEXPR","name":"","addr":"(XO)","loc":"d,161:10,161:20", + {"type":"STMTEXPR","name":"","addr":"(DP)","loc":"d,161:10,161:20", "exprp": [ - {"type":"TASKREF","name":"set_status","addr":"(YO)","loc":"d,161:10,161:20","dtypep":"(FK)","dotted":"","taskp":"UNLINKED","classOrPackagep":"UNLINKED","namep": [], + {"type":"TASKREF","name":"set_status","addr":"(EP)","loc":"d,161:10,161:20","dtypep":"(LK)","dotted":"","taskp":"UNLINKED","classOrPackagep":"UNLINKED","namep": [], "pinsp": [ - {"type":"ARG","name":"","addr":"(ZO)","loc":"d,161:21,161:27", + {"type":"ARG","name":"","addr":"(FP)","loc":"d,161:21,161:27", "exprp": [ - {"type":"PARSEREF","name":"KILLED","addr":"(AP)","loc":"d,161:21,161:27","dtypep":"UNLINKED","expect":"TEXT","lhsp": [],"ftaskrefp": []} + {"type":"PARSEREF","name":"KILLED","addr":"(GP)","loc":"d,161:21,161:27","dtypep":"UNLINKED","expect":"TEXT","lhsp": [],"ftaskrefp": []} ]} ],"scopeNamep": []} ]} ],"scopeNamep": []}, - {"type":"TASK","name":"suspend","addr":"(BP)","loc":"d,164:21,164:28","method":false,"dpiExport":false,"dpiImport":false,"dpiOpenChild":false,"dpiOpenParent":false,"isExternDef":false,"isExternProto":false,"prototype":false,"recursive":false,"taskPublic":false,"cname":"suspend","fvarp": [],"classOrPackagep": [], + {"type":"TASK","name":"suspend","addr":"(HP)","loc":"d,164:21,164:28","method":false,"dpiExport":false,"dpiImport":false,"dpiOpenChild":false,"dpiOpenParent":false,"isExternDef":false,"isExternProto":false,"prototype":false,"recursive":false,"taskPublic":false,"cname":"suspend","fvarp": [],"classOrPackagep": [], "stmtsp": [ - {"type":"DISPLAY","name":"","addr":"(CP)","loc":"d,165:10,165:16", + {"type":"DISPLAY","name":"","addr":"(IP)","loc":"d,165:10,165:16", "fmtp": [ - {"type":"SFORMATF","name":"","addr":"(DP)","loc":"d,165:10,165:16","dtypep":"(DG)", + {"type":"SFORMATF","name":"","addr":"(JP)","loc":"d,165:10,165:16","dtypep":"(DG)", "exprsp": [ - {"type":"CONST","name":"296'h7374643a3a70726f636573733a3a73757370656e642829206e6f7420737570706f72746564","addr":"(EP)","loc":"d,165:17,165:56","dtypep":"(FP)"} + {"type":"CONST","name":"296'h7374643a3a70726f636573733a3a73757370656e642829206e6f7420737570706f72746564","addr":"(KP)","loc":"d,165:17,165:56","dtypep":"(LP)"} ],"scopeNamep": []} ],"filep": []}, - {"type":"STOP","name":"","addr":"(GP)","loc":"d,165:10,165:16","isFatal":false} + {"type":"STOP","name":"","addr":"(MP)","loc":"d,165:10,165:16","isFatal":false} ],"scopeNamep": []}, - {"type":"TASK","name":"resume","addr":"(HP)","loc":"d,168:21,168:27","method":false,"dpiExport":false,"dpiImport":false,"dpiOpenChild":false,"dpiOpenParent":false,"isExternDef":false,"isExternProto":false,"prototype":false,"recursive":false,"taskPublic":false,"cname":"resume","fvarp": [],"classOrPackagep": [], + {"type":"TASK","name":"resume","addr":"(NP)","loc":"d,168:21,168:27","method":false,"dpiExport":false,"dpiImport":false,"dpiOpenChild":false,"dpiOpenParent":false,"isExternDef":false,"isExternProto":false,"prototype":false,"recursive":false,"taskPublic":false,"cname":"resume","fvarp": [],"classOrPackagep": [], "stmtsp": [ - {"type":"STMTEXPR","name":"","addr":"(IP)","loc":"d,169:10,169:20", + {"type":"STMTEXPR","name":"","addr":"(OP)","loc":"d,169:10,169:20", "exprp": [ - {"type":"TASKREF","name":"set_status","addr":"(JP)","loc":"d,169:10,169:20","dtypep":"(FK)","dotted":"","taskp":"UNLINKED","classOrPackagep":"UNLINKED","namep": [], + {"type":"TASKREF","name":"set_status","addr":"(PP)","loc":"d,169:10,169:20","dtypep":"(LK)","dotted":"","taskp":"UNLINKED","classOrPackagep":"UNLINKED","namep": [], "pinsp": [ - {"type":"ARG","name":"","addr":"(KP)","loc":"d,169:21,169:28", + {"type":"ARG","name":"","addr":"(QP)","loc":"d,169:21,169:28", "exprp": [ - {"type":"PARSEREF","name":"RUNNING","addr":"(LP)","loc":"d,169:21,169:28","dtypep":"UNLINKED","expect":"TEXT","lhsp": [],"ftaskrefp": []} + {"type":"PARSEREF","name":"RUNNING","addr":"(RP)","loc":"d,169:21,169:28","dtypep":"UNLINKED","expect":"TEXT","lhsp": [],"ftaskrefp": []} ]} ],"scopeNamep": []} ]} ],"scopeNamep": []}, - {"type":"TASK","name":"await","addr":"(MP)","loc":"d,172:12,172:17","method":false,"dpiExport":false,"dpiImport":false,"dpiOpenChild":false,"dpiOpenParent":false,"isExternDef":false,"isExternProto":false,"prototype":false,"recursive":false,"taskPublic":false,"cname":"await","fvarp": [],"classOrPackagep": [],"stmtsp": [],"scopeNamep": []}, - {"type":"TASK","name":"killQueue","addr":"(NP)","loc":"d,178:19,178:28","method":false,"dpiExport":false,"dpiImport":false,"dpiOpenChild":false,"dpiOpenParent":false,"isExternDef":false,"isExternProto":false,"prototype":false,"recursive":false,"taskPublic":false,"cname":"killQueue","fvarp": [],"classOrPackagep": [], + {"type":"TASK","name":"await","addr":"(SP)","loc":"d,172:12,172:17","method":false,"dpiExport":false,"dpiImport":false,"dpiOpenChild":false,"dpiOpenParent":false,"isExternDef":false,"isExternProto":false,"prototype":false,"recursive":false,"taskPublic":false,"cname":"await","fvarp": [],"classOrPackagep": [],"stmtsp": [],"scopeNamep": []}, + {"type":"TASK","name":"killQueue","addr":"(TP)","loc":"d,178:19,178:28","method":false,"dpiExport":false,"dpiImport":false,"dpiOpenChild":false,"dpiOpenParent":false,"isExternDef":false,"isExternProto":false,"prototype":false,"recursive":false,"taskPublic":false,"cname":"killQueue","fvarp": [],"classOrPackagep": [], "stmtsp": [ - {"type":"VAR","name":"processQueue","addr":"(OP)","loc":"d,178:41,178:53","dtypep":"UNLINKED","origName":"processQueue","isSc":false,"isPrimaryIO":false,"direction":"REF","isConst":false,"isPullup":false,"isPulldown":false,"isUsedClock":false,"isSigPublic":false,"isLatched":false,"isUsedLoopIdx":false,"noReset":false,"attrIsolateAssign":false,"attrFileDescr":false,"isDpiOpenArray":false,"isFuncReturn":false,"isFuncLocal":false,"attrClocker":"UNKNOWN","lifetime":"NONE","varType":"PORT","isSigUserRdPublic":false,"isSigUserRWPublic":false,"isGParam":false,"isParam":false,"attrScBv":false,"attrSFormat":false,"ignorePostWrite":false,"ignoreSchedWrite":false,"sensIfacep":"UNLINKED", + {"type":"VAR","name":"processQueue","addr":"(UP)","loc":"d,178:41,178:53","dtypep":"UNLINKED","origName":"processQueue","isSc":false,"isPrimaryIO":false,"direction":"REF","isConst":false,"isPullup":false,"isPulldown":false,"isUsedClock":false,"isSigPublic":false,"isLatched":false,"isUsedLoopIdx":false,"noReset":false,"attrIsolateAssign":false,"attrFileDescr":false,"isDpiOpenArray":false,"isFuncReturn":false,"isFuncLocal":false,"attrClocker":"UNKNOWN","lifetime":"NONE","varType":"PORT","isSigUserRdPublic":false,"isSigUserRWPublic":false,"isGParam":false,"isParam":false,"attrScBv":false,"attrSFormat":false,"ignorePostWrite":false,"ignoreSchedWrite":false,"sensIfacep":"UNLINKED", "childDTypep": [ - {"type":"BRACKETARRAYDTYPE","name":"","addr":"(PP)","loc":"d,178:53,178:54","dtypep":"UNLINKED","generic":false, + {"type":"BRACKETARRAYDTYPE","name":"","addr":"(VP)","loc":"d,178:53,178:54","dtypep":"UNLINKED","generic":false, "childDTypep": [ - {"type":"REFDTYPE","name":"process","addr":"(QP)","loc":"d,178:33,178:40","dtypep":"UNLINKED","generic":false,"typedefp":"UNLINKED","refDTypep":"UNLINKED","classOrPackagep":"UNLINKED","typeofp": [],"classOrPackageOpp": [],"paramsp": []} + {"type":"REFDTYPE","name":"process","addr":"(WP)","loc":"d,178:33,178:40","dtypep":"UNLINKED","generic":false,"typedefp":"UNLINKED","refDTypep":"UNLINKED","classOrPackagep":"UNLINKED","typeofp": [],"classOrPackageOpp": [],"paramsp": []} ], "elementsp": [ - {"type":"UNBOUNDED","name":"","addr":"(RP)","loc":"d,178:54,178:55","dtypep":"(XI)"} + {"type":"UNBOUNDED","name":"","addr":"(XP)","loc":"d,178:54,178:55","dtypep":"(DJ)"} ]} ],"delayp": [],"valuep": [],"attrsp": []} ],"scopeNamep": []}, - {"type":"FUNC","name":"get_randstate","addr":"(SP)","loc":"d,223:23,223:36","dtypep":"UNLINKED","method":false,"dpiExport":false,"dpiImport":false,"dpiOpenChild":false,"dpiOpenParent":false,"isExternDef":false,"isExternProto":false,"prototype":false,"recursive":false,"taskPublic":false,"cname":"get_randstate", + {"type":"FUNC","name":"get_randstate","addr":"(YP)","loc":"d,223:23,223:36","dtypep":"UNLINKED","method":false,"dpiExport":false,"dpiImport":false,"dpiOpenChild":false,"dpiOpenParent":false,"isExternDef":false,"isExternProto":false,"prototype":false,"recursive":false,"taskPublic":false,"cname":"get_randstate", "fvarp": [ - {"type":"BASICDTYPE","name":"string","addr":"(TP)","loc":"d,223:16,223:22","dtypep":"(TP)","keyword":"string","generic":false,"rangep": []} + {"type":"BASICDTYPE","name":"string","addr":"(ZP)","loc":"d,223:16,223:22","dtypep":"(ZP)","keyword":"string","generic":false,"rangep": []} ],"classOrPackagep": [], "stmtsp": [ - {"type":"VAR","name":"s","addr":"(UP)","loc":"d,224:17,224:18","dtypep":"UNLINKED","origName":"s","isSc":false,"isPrimaryIO":false,"direction":"NONE","isConst":false,"isPullup":false,"isPulldown":false,"isUsedClock":false,"isSigPublic":false,"isLatched":false,"isUsedLoopIdx":false,"noReset":false,"attrIsolateAssign":false,"attrFileDescr":false,"isDpiOpenArray":false,"isFuncReturn":false,"isFuncLocal":false,"attrClocker":"UNKNOWN","lifetime":"NONE","varType":"VAR","isSigUserRdPublic":false,"isSigUserRWPublic":false,"isGParam":false,"isParam":false,"attrScBv":false,"attrSFormat":false,"ignorePostWrite":false,"ignoreSchedWrite":false,"sensIfacep":"UNLINKED", + {"type":"VAR","name":"s","addr":"(AQ)","loc":"d,224:17,224:18","dtypep":"UNLINKED","origName":"s","isSc":false,"isPrimaryIO":false,"direction":"NONE","isConst":false,"isPullup":false,"isPulldown":false,"isUsedClock":false,"isSigPublic":false,"isLatched":false,"isUsedLoopIdx":false,"noReset":false,"attrIsolateAssign":false,"attrFileDescr":false,"isDpiOpenArray":false,"isFuncReturn":false,"isFuncLocal":false,"attrClocker":"UNKNOWN","lifetime":"NONE","varType":"VAR","isSigUserRdPublic":false,"isSigUserRWPublic":false,"isGParam":false,"isParam":false,"attrScBv":false,"attrSFormat":false,"ignorePostWrite":false,"ignoreSchedWrite":false,"sensIfacep":"UNLINKED", "childDTypep": [ - {"type":"BASICDTYPE","name":"string","addr":"(VP)","loc":"d,224:10,224:16","dtypep":"(VP)","keyword":"string","generic":false,"rangep": []} + {"type":"BASICDTYPE","name":"string","addr":"(BQ)","loc":"d,224:10,224:16","dtypep":"(BQ)","keyword":"string","generic":false,"rangep": []} ],"delayp": [],"valuep": [],"attrsp": []}, - {"type":"STMTEXPR","name":"","addr":"(WP)","loc":"d,226:11,226:12", + {"type":"STMTEXPR","name":"","addr":"(CQ)","loc":"d,226:11,226:12", "exprp": [ - {"type":"DOT","name":"","addr":"(XP)","loc":"d,226:11,226:12","dtypep":"UNLINKED","colon":false, + {"type":"DOT","name":"","addr":"(DQ)","loc":"d,226:11,226:12","dtypep":"UNLINKED","colon":false, "lhsp": [ - {"type":"PARSEREF","name":"s","addr":"(YP)","loc":"d,226:10,226:11","dtypep":"UNLINKED","expect":"TEXT","lhsp": [],"ftaskrefp": []} + {"type":"PARSEREF","name":"s","addr":"(EQ)","loc":"d,226:10,226:11","dtypep":"UNLINKED","expect":"TEXT","lhsp": [],"ftaskrefp": []} ], "rhsp": [ - {"type":"TASKREF","name":"itoa","addr":"(ZP)","loc":"d,226:12,226:16","dtypep":"(FK)","dotted":"","taskp":"UNLINKED","classOrPackagep":"UNLINKED","namep": [], + {"type":"TASKREF","name":"itoa","addr":"(FQ)","loc":"d,226:12,226:16","dtypep":"(LK)","dotted":"","taskp":"UNLINKED","classOrPackagep":"UNLINKED","namep": [], "pinsp": [ - {"type":"ARG","name":"","addr":"(AQ)","loc":"d,226:17,226:24", + {"type":"ARG","name":"","addr":"(GQ)","loc":"d,226:17,226:24", "exprp": [ - {"type":"RAND","name":"","addr":"(BQ)","loc":"d,226:17,226:24","dtypep":"UNLINKED","seedp": []} + {"type":"RAND","name":"","addr":"(HQ)","loc":"d,226:17,226:24","dtypep":"UNLINKED","seedp": []} ]} ],"scopeNamep": []} ]} ]}, - {"type":"STMTEXPR","name":"","addr":"(CQ)","loc":"d,227:10,227:23", + {"type":"STMTEXPR","name":"","addr":"(IQ)","loc":"d,227:10,227:23", "exprp": [ - {"type":"TASKREF","name":"set_randstate","addr":"(DQ)","loc":"d,227:10,227:23","dtypep":"(FK)","dotted":"","taskp":"UNLINKED","classOrPackagep":"UNLINKED","namep": [], + {"type":"TASKREF","name":"set_randstate","addr":"(JQ)","loc":"d,227:10,227:23","dtypep":"(LK)","dotted":"","taskp":"UNLINKED","classOrPackagep":"UNLINKED","namep": [], "pinsp": [ - {"type":"ARG","name":"","addr":"(EQ)","loc":"d,227:24,227:25", + {"type":"ARG","name":"","addr":"(KQ)","loc":"d,227:24,227:25", "exprp": [ - {"type":"PARSEREF","name":"s","addr":"(FQ)","loc":"d,227:24,227:25","dtypep":"UNLINKED","expect":"TEXT","lhsp": [],"ftaskrefp": []} + {"type":"PARSEREF","name":"s","addr":"(LQ)","loc":"d,227:24,227:25","dtypep":"UNLINKED","expect":"TEXT","lhsp": [],"ftaskrefp": []} ]} ],"scopeNamep": []} ]}, - {"type":"RETURN","name":"","addr":"(GQ)","loc":"d,228:10,228:16", + {"type":"RETURN","name":"","addr":"(MQ)","loc":"d,228:10,228:16", "lhsp": [ - {"type":"PARSEREF","name":"s","addr":"(HQ)","loc":"d,228:17,228:18","dtypep":"UNLINKED","expect":"TEXT","lhsp": [],"ftaskrefp": []} + {"type":"PARSEREF","name":"s","addr":"(NQ)","loc":"d,228:17,228:18","dtypep":"UNLINKED","expect":"TEXT","lhsp": [],"ftaskrefp": []} ]} ],"scopeNamep": []}, - {"type":"TASK","name":"set_randstate","addr":"(IQ)","loc":"d,231:21,231:34","method":false,"dpiExport":false,"dpiImport":false,"dpiOpenChild":false,"dpiOpenParent":false,"isExternDef":false,"isExternProto":false,"prototype":false,"recursive":false,"taskPublic":false,"cname":"set_randstate","fvarp": [],"classOrPackagep": [], + {"type":"TASK","name":"set_randstate","addr":"(OQ)","loc":"d,231:21,231:34","method":false,"dpiExport":false,"dpiImport":false,"dpiOpenChild":false,"dpiOpenParent":false,"isExternDef":false,"isExternProto":false,"prototype":false,"recursive":false,"taskPublic":false,"cname":"set_randstate","fvarp": [],"classOrPackagep": [], "stmtsp": [ - {"type":"VAR","name":"s","addr":"(JQ)","loc":"d,231:42,231:43","dtypep":"UNLINKED","origName":"s","isSc":false,"isPrimaryIO":false,"direction":"INPUT","isConst":false,"isPullup":false,"isPulldown":false,"isUsedClock":false,"isSigPublic":false,"isLatched":false,"isUsedLoopIdx":false,"noReset":false,"attrIsolateAssign":false,"attrFileDescr":false,"isDpiOpenArray":false,"isFuncReturn":false,"isFuncLocal":false,"attrClocker":"UNKNOWN","lifetime":"NONE","varType":"PORT","isSigUserRdPublic":false,"isSigUserRWPublic":false,"isGParam":false,"isParam":false,"attrScBv":false,"attrSFormat":false,"ignorePostWrite":false,"ignoreSchedWrite":false,"sensIfacep":"UNLINKED", + {"type":"VAR","name":"s","addr":"(PQ)","loc":"d,231:42,231:43","dtypep":"UNLINKED","origName":"s","isSc":false,"isPrimaryIO":false,"direction":"INPUT","isConst":false,"isPullup":false,"isPulldown":false,"isUsedClock":false,"isSigPublic":false,"isLatched":false,"isUsedLoopIdx":false,"noReset":false,"attrIsolateAssign":false,"attrFileDescr":false,"isDpiOpenArray":false,"isFuncReturn":false,"isFuncLocal":false,"attrClocker":"UNKNOWN","lifetime":"NONE","varType":"PORT","isSigUserRdPublic":false,"isSigUserRWPublic":false,"isGParam":false,"isParam":false,"attrScBv":false,"attrSFormat":false,"ignorePostWrite":false,"ignoreSchedWrite":false,"sensIfacep":"UNLINKED", "childDTypep": [ - {"type":"BASICDTYPE","name":"string","addr":"(KQ)","loc":"d,231:35,231:41","dtypep":"(KQ)","keyword":"string","generic":false,"rangep": []} + {"type":"BASICDTYPE","name":"string","addr":"(QQ)","loc":"d,231:35,231:41","dtypep":"(QQ)","keyword":"string","generic":false,"rangep": []} ],"delayp": [],"valuep": [],"attrsp": []}, - {"type":"STMTEXPR","name":"","addr":"(LQ)","loc":"d,232:10,232:18", + {"type":"STMTEXPR","name":"","addr":"(RQ)","loc":"d,232:10,232:18", "exprp": [ - {"type":"RAND","name":"","addr":"(MQ)","loc":"d,232:10,232:18","dtypep":"UNLINKED", + {"type":"RAND","name":"","addr":"(SQ)","loc":"d,232:10,232:18","dtypep":"UNLINKED", "seedp": [ - {"type":"DOT","name":"","addr":"(NQ)","loc":"d,232:20,232:21","dtypep":"UNLINKED","colon":false, + {"type":"DOT","name":"","addr":"(TQ)","loc":"d,232:20,232:21","dtypep":"UNLINKED","colon":false, "lhsp": [ - {"type":"PARSEREF","name":"s","addr":"(OQ)","loc":"d,232:19,232:20","dtypep":"UNLINKED","expect":"TEXT","lhsp": [],"ftaskrefp": []} + {"type":"PARSEREF","name":"s","addr":"(UQ)","loc":"d,232:19,232:20","dtypep":"UNLINKED","expect":"TEXT","lhsp": [],"ftaskrefp": []} ], "rhsp": [ - {"type":"FUNCREF","name":"atoi","addr":"(PQ)","loc":"d,232:21,232:25","dtypep":"UNLINKED","dotted":"","taskp":"UNLINKED","classOrPackagep":"UNLINKED","namep": [],"pinsp": [],"scopeNamep": []} + {"type":"FUNCREF","name":"atoi","addr":"(VQ)","loc":"d,232:21,232:25","dtypep":"UNLINKED","dotted":"","taskp":"UNLINKED","classOrPackagep":"UNLINKED","namep": [],"pinsp": [],"scopeNamep": []} ]} ]} ]} ],"scopeNamep": []} ],"extendsp": []}, - {"type":"FUNC","name":"randomize","addr":"(QQ)","loc":"d,235:17,235:26","dtypep":"UNLINKED","method":false,"dpiExport":false,"dpiImport":false,"dpiOpenChild":false,"dpiOpenParent":false,"isExternDef":false,"isExternProto":false,"prototype":false,"recursive":false,"taskPublic":false,"cname":"randomize", + {"type":"FUNC","name":"randomize","addr":"(WQ)","loc":"d,235:17,235:26","dtypep":"UNLINKED","method":false,"dpiExport":false,"dpiImport":false,"dpiOpenChild":false,"dpiOpenParent":false,"isExternDef":false,"isExternProto":false,"prototype":false,"recursive":false,"taskPublic":false,"cname":"randomize", "fvarp": [ - {"type":"BASICDTYPE","name":"int","addr":"(RQ)","loc":"d,235:13,235:16","dtypep":"(RQ)","keyword":"int","range":"31:0","generic":false,"rangep": []} + {"type":"BASICDTYPE","name":"int","addr":"(XQ)","loc":"d,235:13,235:16","dtypep":"(XQ)","keyword":"int","range":"31:0","generic":false,"rangep": []} ],"classOrPackagep": [], "stmtsp": [ - {"type":"ASSIGN","name":"","addr":"(SQ)","loc":"d,236:17,236:18","dtypep":"UNLINKED", + {"type":"ASSIGN","name":"","addr":"(YQ)","loc":"d,236:17,236:18","dtypep":"UNLINKED", "rhsp": [ - {"type":"CONST","name":"?32?sh0","addr":"(TQ)","loc":"d,236:19,236:20","dtypep":"(N)"} + {"type":"CONST","name":"?32?sh0","addr":"(ZQ)","loc":"d,236:19,236:20","dtypep":"(N)"} ], "lhsp": [ - {"type":"PARSEREF","name":"randomize","addr":"(UQ)","loc":"d,236:7,236:16","dtypep":"UNLINKED","expect":"TEXT","lhsp": [],"ftaskrefp": []} + {"type":"PARSEREF","name":"randomize","addr":"(AR)","loc":"d,236:7,236:16","dtypep":"UNLINKED","expect":"TEXT","lhsp": [],"ftaskrefp": []} ],"timingControlp": []} ],"scopeNamep": []} ]} ],"filesp": [], "miscsp": [ - {"type":"TYPETABLE","name":"","addr":"(C)","loc":"a,0:0,0:0","constraintRefp":"UNLINKED","emptyQueuep":"UNLINKED","queueIndexp":"UNLINKED","streamp":"UNLINKED","voidp":"(FK)", + {"type":"TYPETABLE","name":"","addr":"(C)","loc":"a,0:0,0:0","constraintRefp":"UNLINKED","emptyQueuep":"UNLINKED","queueIndexp":"UNLINKED","streamp":"UNLINKED","voidp":"(LK)", "typesp": [ - {"type":"BASICDTYPE","name":"integer","addr":"(XI)","loc":"d,34:27,34:28","dtypep":"(XI)","keyword":"integer","range":"31:0","generic":true,"rangep": []}, + {"type":"BASICDTYPE","name":"integer","addr":"(DJ)","loc":"d,34:27,34:28","dtypep":"(DJ)","keyword":"integer","range":"31:0","generic":true,"rangep": []}, {"type":"BASICDTYPE","name":"logic","addr":"(N)","loc":"d,36:32,36:33","dtypep":"(N)","keyword":"logic","range":"31:0","generic":true,"rangep": []}, {"type":"BASICDTYPE","name":"logic","addr":"(WE)","loc":"d,53:22,53:24","dtypep":"(WE)","keyword":"logic","generic":true,"rangep": []}, - {"type":"VOIDDTYPE","name":"","addr":"(FK)","loc":"d,54:21,54:30","dtypep":"(FK)","generic":false}, + {"type":"VOIDDTYPE","name":"","addr":"(LK)","loc":"d,54:21,54:30","dtypep":"(LK)","generic":false}, {"type":"BASICDTYPE","name":"logic","addr":"(SD)","loc":"d,128:22,128:23","dtypep":"(SD)","keyword":"logic","range":"31:0","generic":true,"rangep": []}, - {"type":"BASICDTYPE","name":"logic","addr":"(HO)","loc":"d,130:22,130:23","dtypep":"(HO)","keyword":"logic","range":"31:0","generic":true,"rangep": []}, - {"type":"BASICDTYPE","name":"logic","addr":"(FP)","loc":"d,165:17,165:56","dtypep":"(FP)","keyword":"logic","range":"295:0","generic":true,"rangep": []}, + {"type":"BASICDTYPE","name":"logic","addr":"(NO)","loc":"d,130:22,130:23","dtypep":"(NO)","keyword":"logic","range":"31:0","generic":true,"rangep": []}, + {"type":"BASICDTYPE","name":"logic","addr":"(LP)","loc":"d,165:17,165:56","dtypep":"(LP)","keyword":"logic","range":"295:0","generic":true,"rangep": []}, {"type":"BASICDTYPE","name":"string","addr":"(DG)","loc":"d,165:10,165:16","dtypep":"(DG)","keyword":"string","generic":true,"rangep": []}, {"type":"BASICDTYPE","name":"logic","addr":"(S)","loc":"e,14:9,14:11","dtypep":"(S)","keyword":"logic","range":"31:0","generic":true,"rangep": []}, {"type":"BASICDTYPE","name":"logic","addr":"(DB)","loc":"e,18:10,18:12","dtypep":"(DB)","keyword":"logic","range":"31:0","generic":true,"rangep": []}, @@ -1082,9 +1100,9 @@ ]}, {"type":"CONSTPOOL","name":"","addr":"(D)","loc":"a,0:0,0:0", "modulep": [ - {"type":"MODULE","name":"@CONST-POOL@","addr":"(VQ)","loc":"a,0:0,0:0","isChecker":false,"isProgram":false,"hasGenericIface":false,"origName":"@CONST-POOL@","level":0,"modPublic":false,"inLibrary":false,"dead":false,"recursiveClone":false,"recursive":false,"timeunit":"NONE","inlinesp": [], + {"type":"MODULE","name":"@CONST-POOL@","addr":"(BR)","loc":"a,0:0,0:0","isChecker":false,"isProgram":false,"hasGenericIface":false,"origName":"@CONST-POOL@","level":0,"modPublic":false,"inLibrary":false,"dead":false,"recursiveClone":false,"recursive":false,"timeunit":"NONE","inlinesp": [], "stmtsp": [ - {"type":"SCOPE","name":"@CONST-POOL@","addr":"(WQ)","loc":"a,0:0,0:0","aboveScopep":"UNLINKED","aboveCellp":"UNLINKED","modp":"(VQ)","varsp": [],"blocksp": [],"inlinesp": []} + {"type":"SCOPE","name":"@CONST-POOL@","addr":"(CR)","loc":"a,0:0,0:0","aboveScopep":"UNLINKED","aboveCellp":"UNLINKED","modp":"(BR)","varsp": [],"blocksp": [],"inlinesp": []} ]} ]} ]} diff --git a/test_regress/t/t_sys_queue_unsup.out b/test_regress/t/t_sys_queue_unsup.out new file mode 100644 index 000000000..6dbe6d1ee --- /dev/null +++ b/test_regress/t/t_sys_queue_unsup.out @@ -0,0 +1,152 @@ +%Error-UNSUPPORTED: t/t_sys_queue_unsup.v:22:5: Unsupported: IEEE 1364-1995 reserved word not implemented: '$q_initialize' + 22 | $q_initialize(1, 1, 3, status); + | ^~~~~~~~~~~~~ + ... For error description see https://verilator.org/warn/UNSUPPORTED?v=latest +%Error-UNSUPPORTED: t/t_sys_queue_unsup.v:25:5: Unsupported: IEEE 1364-1995 reserved word not implemented: '$q_initialize' + 25 | $q_initialize(2, 2, 2, status); + | ^~~~~~~~~~~~~ +%Error-UNSUPPORTED: t/t_sys_queue_unsup.v:28:5: Unsupported: IEEE 1364-1995 reserved word not implemented: '$q_initialize' + 28 | $q_initialize(3, 0, 10, status); + | ^~~~~~~~~~~~~ +%Error-UNSUPPORTED: t/t_sys_queue_unsup.v:31:5: Unsupported: IEEE 1364-1995 reserved word not implemented: '$q_initialize' + 31 | $q_initialize(3, 3, 10, status); + | ^~~~~~~~~~~~~ +%Error-UNSUPPORTED: t/t_sys_queue_unsup.v:34:5: Unsupported: IEEE 1364-1995 reserved word not implemented: '$q_initialize' + 34 | $q_initialize(3, 1, 0, status); + | ^~~~~~~~~~~~~ +%Error-UNSUPPORTED: t/t_sys_queue_unsup.v:37:5: Unsupported: IEEE 1364-1995 reserved word not implemented: '$q_initialize' + 37 | $q_initialize(3, 1, -1, status); + | ^~~~~~~~~~~~~ +%Error-UNSUPPORTED: t/t_sys_queue_unsup.v:40:5: Unsupported: IEEE 1364-1995 reserved word not implemented: '$q_initialize' + 40 | $q_initialize(1, 2, 20, status); + | ^~~~~~~~~~~~~ +%Error-UNSUPPORTED: t/t_sys_queue_unsup.v:43:5: Unsupported: IEEE 1364-1995 reserved word not implemented: '$q_add' + 43 | $q_add(3, 0, 0, status); + | ^~~~~~ +%Error-UNSUPPORTED: t/t_sys_queue_unsup.v:46:5: Unsupported: IEEE 1364-1995 reserved word not implemented: '$q_remove' + 46 | $q_remove(3, job, value, status); + | ^~~~~~~~~ +%Error-UNSUPPORTED: t/t_sys_queue_unsup.v:49:11: Unsupported: IEEE 1364-1995 reserved word not implemented: '$q_full' + 49 | res = $q_full(3, status); + | ^~~~~~~ +%Error-UNSUPPORTED: t/t_sys_queue_unsup.v:52:5: Unsupported: IEEE 1364-1995 reserved word not implemented: '$q_exam' + 52 | $q_exam(3, 1, value, status); + | ^~~~~~~ +%Error-UNSUPPORTED: t/t_sys_queue_unsup.v:55:5: Unsupported: IEEE 1364-1995 reserved word not implemented: '$q_add' + 55 | $q_add(2, 1, 1, status); + | ^~~~~~ +%Error-UNSUPPORTED: t/t_sys_queue_unsup.v:58:11: Unsupported: IEEE 1364-1995 reserved word not implemented: '$q_full' + 58 | res = $q_full(2, status); + | ^~~~~~~ +%Error-UNSUPPORTED: t/t_sys_queue_unsup.v:62:5: Unsupported: IEEE 1364-1995 reserved word not implemented: '$q_add' + 62 | $q_add(2, 1, 2, status); + | ^~~~~~ +%Error-UNSUPPORTED: t/t_sys_queue_unsup.v:65:11: Unsupported: IEEE 1364-1995 reserved word not implemented: '$q_full' + 65 | res = $q_full(2, status); + | ^~~~~~~ +%Error-UNSUPPORTED: t/t_sys_queue_unsup.v:69:5: Unsupported: IEEE 1364-1995 reserved word not implemented: '$q_exam' + 69 | $q_exam(2, 1, value, status); + | ^~~~~~~ +%Error-UNSUPPORTED: t/t_sys_queue_unsup.v:72:5: Unsupported: IEEE 1364-1995 reserved word not implemented: '$q_exam' + 72 | $q_exam(2, 3, value, status); + | ^~~~~~~ +%Error-UNSUPPORTED: t/t_sys_queue_unsup.v:75:5: Unsupported: IEEE 1364-1995 reserved word not implemented: '$q_exam' + 75 | $q_exam(2, 5, value, status); + | ^~~~~~~ +%Error-UNSUPPORTED: t/t_sys_queue_unsup.v:79:5: Unsupported: IEEE 1364-1995 reserved word not implemented: '$q_add' + 79 | $q_add(2, 1, 3, status); + | ^~~~~~ +%Error-UNSUPPORTED: t/t_sys_queue_unsup.v:82:5: Unsupported: IEEE 1364-1995 reserved word not implemented: '$q_remove' + 82 | $q_remove(2, job, value, status); + | ^~~~~~~~~ +%Error-UNSUPPORTED: t/t_sys_queue_unsup.v:86:11: Unsupported: IEEE 1364-1995 reserved word not implemented: '$q_full' + 86 | res = $q_full(2, status); + | ^~~~~~~ +%Error-UNSUPPORTED: t/t_sys_queue_unsup.v:90:5: Unsupported: IEEE 1364-1995 reserved word not implemented: '$q_remove' + 90 | $q_remove(2, job, value, status); + | ^~~~~~~~~ +%Error-UNSUPPORTED: t/t_sys_queue_unsup.v:95:11: Unsupported: IEEE 1364-1995 reserved word not implemented: '$q_full' + 95 | res = $q_full(2, status); + | ^~~~~~~ +%Error-UNSUPPORTED: t/t_sys_queue_unsup.v:99:5: Unsupported: IEEE 1364-1995 reserved word not implemented: '$q_exam' + 99 | $q_exam(2, 1, value, status); + | ^~~~~~~ +%Error-UNSUPPORTED: t/t_sys_queue_unsup.v:102:5: Unsupported: IEEE 1364-1995 reserved word not implemented: '$q_exam' + 102 | $q_exam(2, 3, value, status); + | ^~~~~~~ +%Error-UNSUPPORTED: t/t_sys_queue_unsup.v:105:5: Unsupported: IEEE 1364-1995 reserved word not implemented: '$q_exam' + 105 | $q_exam(2, 4, value, status); + | ^~~~~~~ +%Error-UNSUPPORTED: t/t_sys_queue_unsup.v:109:5: Unsupported: IEEE 1364-1995 reserved word not implemented: '$q_remove' + 109 | $q_remove(2, job, value, status); + | ^~~~~~~~~ +%Error-UNSUPPORTED: t/t_sys_queue_unsup.v:113:5: Unsupported: IEEE 1364-1995 reserved word not implemented: '$q_add' + 113 | $q_add(1, 2, 1, status); + | ^~~~~~ +%Error-UNSUPPORTED: t/t_sys_queue_unsup.v:115:11: Unsupported: IEEE 1364-1995 reserved word not implemented: '$q_full' + 115 | res = $q_full(1, status); + | ^~~~~~~ +%Error-UNSUPPORTED: t/t_sys_queue_unsup.v:118:5: Unsupported: IEEE 1364-1995 reserved word not implemented: '$q_add' + 118 | $q_add(1, 2, 2, status); + | ^~~~~~ +%Error-UNSUPPORTED: t/t_sys_queue_unsup.v:120:11: Unsupported: IEEE 1364-1995 reserved word not implemented: '$q_full' + 120 | res = $q_full(1, status); + | ^~~~~~~ +%Error-UNSUPPORTED: t/t_sys_queue_unsup.v:123:5: Unsupported: IEEE 1364-1995 reserved word not implemented: '$q_add' + 123 | $q_add(1, 2, 3, status); + | ^~~~~~ +%Error-UNSUPPORTED: t/t_sys_queue_unsup.v:125:11: Unsupported: IEEE 1364-1995 reserved word not implemented: '$q_full' + 125 | res = $q_full(1, status); + | ^~~~~~~ +%Error-UNSUPPORTED: t/t_sys_queue_unsup.v:128:5: Unsupported: IEEE 1364-1995 reserved word not implemented: '$q_exam' + 128 | $q_exam(1, 1, value, status); + | ^~~~~~~ +%Error-UNSUPPORTED: t/t_sys_queue_unsup.v:131:5: Unsupported: IEEE 1364-1995 reserved word not implemented: '$q_exam' + 131 | $q_exam(1, 3, value, status); + | ^~~~~~~ +%Error-UNSUPPORTED: t/t_sys_queue_unsup.v:134:5: Unsupported: IEEE 1364-1995 reserved word not implemented: '$q_exam' + 134 | $q_exam(1, 5, value, status); + | ^~~~~~~ +%Error-UNSUPPORTED: t/t_sys_queue_unsup.v:138:5: Unsupported: IEEE 1364-1995 reserved word not implemented: '$q_add' + 138 | $q_add(1, 2, 4, status); + | ^~~~~~ +%Error-UNSUPPORTED: t/t_sys_queue_unsup.v:141:5: Unsupported: IEEE 1364-1995 reserved word not implemented: '$q_remove' + 141 | $q_remove(1, job, value, status); + | ^~~~~~~~~ +%Error-UNSUPPORTED: t/t_sys_queue_unsup.v:146:11: Unsupported: IEEE 1364-1995 reserved word not implemented: '$q_full' + 146 | res = $q_full(1, status); + | ^~~~~~~ +%Error-UNSUPPORTED: t/t_sys_queue_unsup.v:150:5: Unsupported: IEEE 1364-1995 reserved word not implemented: '$q_remove' + 150 | $q_remove(1, job, value, status); + | ^~~~~~~~~ +%Error-UNSUPPORTED: t/t_sys_queue_unsup.v:154:11: Unsupported: IEEE 1364-1995 reserved word not implemented: '$q_full' + 154 | res = $q_full(1, status); + | ^~~~~~~ +%Error-UNSUPPORTED: t/t_sys_queue_unsup.v:158:5: Unsupported: IEEE 1364-1995 reserved word not implemented: '$q_add' + 158 | $q_add(1, 2, 4, status); + | ^~~~~~ +%Error-UNSUPPORTED: t/t_sys_queue_unsup.v:160:11: Unsupported: IEEE 1364-1995 reserved word not implemented: '$q_full' + 160 | res = $q_full(1, status); + | ^~~~~~~ +%Error-UNSUPPORTED: t/t_sys_queue_unsup.v:164:5: Unsupported: IEEE 1364-1995 reserved word not implemented: '$q_remove' + 164 | $q_remove(1, job, value, status); + | ^~~~~~~~~ +%Error-UNSUPPORTED: t/t_sys_queue_unsup.v:168:11: Unsupported: IEEE 1364-1995 reserved word not implemented: '$q_full' + 168 | res = $q_full(1, status); + | ^~~~~~~ +%Error-UNSUPPORTED: t/t_sys_queue_unsup.v:171:5: Unsupported: IEEE 1364-1995 reserved word not implemented: '$q_remove' + 171 | $q_remove(1, job, value, status); + | ^~~~~~~~~ +%Error-UNSUPPORTED: t/t_sys_queue_unsup.v:175:11: Unsupported: IEEE 1364-1995 reserved word not implemented: '$q_full' + 175 | res = $q_full(1, status); + | ^~~~~~~ +%Error-UNSUPPORTED: t/t_sys_queue_unsup.v:178:5: Unsupported: IEEE 1364-1995 reserved word not implemented: '$q_exam' + 178 | $q_exam(1, 1, value, status); + | ^~~~~~~ +%Error-UNSUPPORTED: t/t_sys_queue_unsup.v:181:5: Unsupported: IEEE 1364-1995 reserved word not implemented: '$q_exam' + 181 | $q_exam(1, 3, value, status); + | ^~~~~~~ +%Error-UNSUPPORTED: t/t_sys_queue_unsup.v:184:5: Unsupported: IEEE 1364-1995 reserved word not implemented: '$q_exam' + 184 | $q_exam(1, 4, value, status); + | ^~~~~~~ +%Error: Exiting due to diff --git a/test_regress/t/t_sys_queue_unsup.py b/test_regress/t/t_sys_queue_unsup.py new file mode 100755 index 000000000..f41d93235 --- /dev/null +++ b/test_regress/t/t_sys_queue_unsup.py @@ -0,0 +1,16 @@ +#!/usr/bin/env python3 +# DESCRIPTION: Verilator: Verilog Test driver/expect definition +# +# Copyright 2024 by Wilson Snyder. This program is free software; you can +# redistribute it and/or modify it under the terms of either the GNU +# Lesser General Public License Version 3 or the Perl Artistic License +# Version 2.0. +# SPDX-License-Identifier: LGPL-3.0-only OR Artistic-2.0 + +import vltest_bootstrap + +test.scenarios('vlt') + +test.lint(fails=test.vlt_all, expect_filename=test.golden_filename) + +test.passes() diff --git a/test_regress/t/t_sys_queue_unsup.v b/test_regress/t/t_sys_queue_unsup.v new file mode 100644 index 000000000..1e194cf48 --- /dev/null +++ b/test_regress/t/t_sys_queue_unsup.v @@ -0,0 +1,195 @@ +// DESCRIPTION: Verilator: Verilog Test module for SystemVerilog 'alias' +// +// Simple bi-directional alias test. +// +// This file ONLY is placed under the Creative Commons Public Domain, for +// any use, without warranty, 2025 by Wilson Snyder. +// SPDX-License-Identifier: CC0-1.0 + +// Based on iverilog/ivtest/ivltests/queue.v + +// verilog_format: off +`define stop $stop +`define checkd(gotv,expv) do if ((gotv) !== (expv)) begin $write("%%Error: %s:%0d: got=%0d exp=%0d (%s !== %s)\n", `__FILE__,`__LINE__, (gotv), (expv), `"gotv`", `"expv`"); `stop; end while(0); +// verilog_format: on + +module top; + reg pass; + integer res, status, job, value; + + initial begin + pass = 1'b1; + $q_initialize(1, 1, 3, status); + `checkd(status, 0); + + $q_initialize(2, 2, 2, status); + `checkd(status, 0); + + $q_initialize(3, 0, 10, status); + `checkd(status, 4); + + $q_initialize(3, 3, 10, status); + `checkd(status, 4); + + $q_initialize(3, 1, 0, status); + `checkd(status, 5); + + $q_initialize(3, 1, -1, status); + `checkd(status, 5); + + $q_initialize(1, 2, 20, status); + `checkd(status, 6); + + $q_add(3, 0, 0, status); + `checkd(status, 2); + + $q_remove(3, job, value, status); + `checkd(status, 2); + + res = $q_full(3, status); + `checkd(status, 2); + + $q_exam(3, 1, value, status); + `checkd(status, 2); + + $q_add(2, 1, 1, status); + `checkd(status, 0); + + res = $q_full(2, status); + `checkd(status, 0); + `checkd(res, 0); + + $q_add(2, 1, 2, status); + `checkd(status, 0); + + res = $q_full(2, status); + `checkd(status, 0); + `checkd(res, 1); + + $q_exam(2, 1, value, status); + `checkd(status, 0); + `checkd(value, 2); + $q_exam(2, 3, value, status); + `checkd(status, 0); + `checkd(value, 2); + $q_exam(2, 5, value, status); + `checkd(status, 0); + `checkd(value, 0); + + $q_add(2, 1, 3, status); + `checkd(status, 1); + + $q_remove(2, job, value, status); + `checkd(status, 0); + `checkd(job, 1); + `checkd(value, 2); + res = $q_full(2, status); + `checkd(status, 0); + `checkd(res, 0); + + $q_remove(2, job, value, status); + `checkd(status, 0); + `checkd(job, 1); + `checkd(value, 1); + + res = $q_full(2, status); + `checkd(status, 0); + `checkd(res, 0); + + $q_exam(2, 1, value, status); + `checkd(status, 0); + `checkd(value, 0); + $q_exam(2, 3, value, status); + `checkd(status, 0); + `checkd(value, 2); + $q_exam(2, 4, value, status); + `checkd(status, 0); + `checkd(value, 0); + + $q_remove(2, job, value, status); + `checkd(status, 3); + + + $q_add(1, 2, 1, status); + `checkd(status, 0); + res = $q_full(1, status); + `checkd(status, 0); + `checkd(res, 0); + $q_add(1, 2, 2, status); + `checkd(status, 0); + res = $q_full(1, status); + `checkd(status, 0); + `checkd(res, 0); + $q_add(1, 2, 3, status); + `checkd(status, 0); + res = $q_full(1, status); + `checkd(status, 0); + `checkd(res, 1); + $q_exam(1, 1, value, status); + `checkd(status, 0); + `checkd(value, 3); + $q_exam(1, 3, value, status); + `checkd(status, 0); + `checkd(value, 3); + $q_exam(1, 5, value, status); + `checkd(status, 0); + `checkd(value, 0); + + $q_add(1, 2, 4, status); + `checkd(status, 1); + + $q_remove(1, job, value, status); + `checkd(status, 0); + `checkd(job, 2); + `checkd(value, 1); + + res = $q_full(1, status); + `checkd(status, 0); + `checkd(res, 0); + + $q_remove(1, job, value, status); + `checkd(status, 0); + `checkd(job, 2); + `checkd(value, 2); + res = $q_full(1, status); + `checkd(status, 0); + `checkd(res, 0); + + $q_add(1, 2, 4, status); + `checkd(status, 0); + res = $q_full(1, status); + `checkd(status, 0); + `checkd(res, 0); + + $q_remove(1, job, value, status); + `checkd(status, 0); + `checkd(job, 2); + `checkd(value, 3); + res = $q_full(1, status); + `checkd(status, 0); + `checkd(res, 0); + $q_remove(1, job, value, status); + `checkd(status, 0); + `checkd(job, 2); + `checkd(value, 4); + res = $q_full(1, status); + `checkd(status, 0); + `checkd(res, 0); + $q_exam(1, 1, value, status); + `checkd(status, 0); + `checkd(value, 0); + $q_exam(1, 3, value, status); + `checkd(status, 0); + `checkd(value, 3); + $q_exam(1, 4, value, status); + `checkd(status, 0); + `checkd(value, 0); + + $q_remove(1, job, value, status); + `checkd(status, 3); + + $write("*-* All Finished *-*\n"); + $finish; + end + +endmodule