From b5e4917405c3099bb1bd83add428490eca728ffe Mon Sep 17 00:00:00 2001 From: Wilson Snyder Date: Sun, 7 Jun 2020 12:08:12 -0400 Subject: [PATCH] Internals: Pass unconnected drive in parser token stream. --- src/verilog.l | 6 +++--- src/verilog.y | 6 ++++++ 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/src/verilog.l b/src/verilog.l index f2b25b9c4..fb95bb789 100644 --- a/src/verilog.l +++ b/src/verilog.l @@ -953,7 +953,7 @@ vnum {vnum1}|{vnum2}|{vnum3}|{vnum4}|{vnum5} "`noremove_gatenames" { FL_FWD; FL_BRK; } // Verilog-XL compatibility "`noremove_netnames" { FL_FWD; FL_BRK; } // Verilog-XL compatibility "`nosuppress_faults" { FL_FWD; FL_BRK; } // Verilog-XL compatibility - "`nounconnected_drive" { FL_FWD; PARSEP->unconnectedDrive(VOptionBool::OPT_DEFAULT_FALSE); FL_BRK; } + "`nounconnected_drive" { FL; return yaT_NOUNCONNECTED; } "`portcoerce" { FL_FWD; FL_BRK; } "`pragma"{ws}*[^\n\r]* { FL_FWD; FL_BRK; } // Verilog 2005 "`protect" { FL_FWD; FL_BRK; } @@ -965,8 +965,8 @@ vnum {vnum1}|{vnum2}|{vnum3}|{vnum4}|{vnum5} "`timescale"{ws}+[^\n\r]* { FL; PARSEP->timescalePreproc(yylval.fl, yytext + strlen("`timescale")); FL_BRK; } - "`unconnected_drive"{ws}+"pull0" { FL_FWD; PARSEP->unconnectedDrive(VOptionBool::OPT_FALSE); FL_BRK; } - "`unconnected_drive"{ws}+"pull1" { FL_FWD; PARSEP->unconnectedDrive(VOptionBool::OPT_TRUE); FL_BRK; } + "`unconnected_drive"{ws}+"pull0" { FL; return yaT_UNCONNECTED_PULL0; } + "`unconnected_drive"{ws}+"pull1" { FL; return yaT_UNCONNECTED_PULL1; } "`unconnected_drive" { FL; yylval.fl->v3error("Bad `unconnected_drive syntax"); FL_BRK; } "`uselib"{ws}+[^\n\r]* { FL_FWD; FL_BRK; } // Verilog-XL compatibility diff --git a/src/verilog.y b/src/verilog.y index 8773299ff..363300c51 100644 --- a/src/verilog.y +++ b/src/verilog.y @@ -401,7 +401,10 @@ class AstSenTree; %token yaD_PLI "${pli-system}" +%token yaT_NOUNCONNECTED "`nounconnecteddrive" %token yaT_RESETALL "`resetall" +%token yaT_UNCONNECTED_PULL0 "`unconnected_drive pull0" +%token yaT_UNCONNECTED_PULL1 "`unconnected_drive pull1" // is the fileline, abbreviated to shorten "$1" references %token '!' @@ -1018,6 +1021,9 @@ description: // ==IEEE: description // unsupported // IEEE: config_declaration // // Verilator only | yaT_RESETALL { } // Else, under design, and illegal based on IEEE 22.3 + | yaT_NOUNCONNECTED { PARSEP->unconnectedDrive(VOptionBool::OPT_DEFAULT_FALSE); } + | yaT_UNCONNECTED_PULL0 { PARSEP->unconnectedDrive(VOptionBool::OPT_FALSE); } + | yaT_UNCONNECTED_PULL1 { PARSEP->unconnectedDrive(VOptionBool::OPT_TRUE); } | vltItem { } | error { } ;