diff options
author | Clifford Wolf <clifford@clifford.at> | 2019-06-07 13:39:46 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2019-06-07 13:39:46 +0200 |
commit | 6d49145497e48bb063ebbed5164b45569e91b5ca (patch) | |
tree | 151c2b9268fe7c2c42d94a601220de6c35efd9c8 /frontends/verilog | |
parent | f01a61f093528e5111e5dac8aedbf8c7c468be1c (diff) | |
parent | 211d85cfcc1ae701bb9392347bcbb9750e3045b0 (diff) | |
download | yosys-6d49145497e48bb063ebbed5164b45569e91b5ca.tar.gz yosys-6d49145497e48bb063ebbed5164b45569e91b5ca.tar.bz2 yosys-6d49145497e48bb063ebbed5164b45569e91b5ca.zip |
Merge pull request #1077 from YosysHQ/clifford/pr983
elaboration system tasks
Diffstat (limited to 'frontends/verilog')
-rw-r--r-- | frontends/verilog/verilog_lexer.l | 5 | ||||
-rw-r--r-- | frontends/verilog/verilog_parser.y | 11 |
2 files changed, 15 insertions, 1 deletions
diff --git a/frontends/verilog/verilog_lexer.l b/frontends/verilog/verilog_lexer.l index 9558bbfb9..3c612472d 100644 --- a/frontends/verilog/verilog_lexer.l +++ b/frontends/verilog/verilog_lexer.l @@ -311,6 +311,11 @@ supply1 { return TOK_SUPPLY1; } return TOK_ID; } +"$"(info|warning|error|fatal) { + frontend_verilog_yylval.string = new std::string(yytext); + return TOK_ELAB_TASK; +} + "$signed" { return TOK_TO_SIGNED; } "$unsigned" { return TOK_TO_UNSIGNED; } diff --git a/frontends/verilog/verilog_parser.y b/frontends/verilog/verilog_parser.y index 6d3afed0e..a034f9601 100644 --- a/frontends/verilog/verilog_parser.y +++ b/frontends/verilog/verilog_parser.y @@ -133,7 +133,7 @@ struct specify_rise_fall { } %token <string> TOK_STRING TOK_ID TOK_CONSTVAL TOK_REALVAL TOK_PRIMITIVE -%token <string> TOK_SVA_LABEL TOK_SPECIFY_OPER +%token <string> TOK_SVA_LABEL TOK_SPECIFY_OPER TOK_ELAB_TASK %token TOK_ASSERT TOK_ASSUME TOK_RESTRICT TOK_COVER TOK_FINAL %token ATTR_BEGIN ATTR_END DEFATTR_BEGIN DEFATTR_END %token TOK_MODULE TOK_ENDMODULE TOK_PARAMETER TOK_LOCALPARAM TOK_DEFPARAM @@ -2176,6 +2176,15 @@ gen_stmt: if ($6 != NULL) delete $6; ast_stack.pop_back(); + } | + TOK_ELAB_TASK { + AstNode *node = new AstNode(AST_TECALL); + node->str = *$1; + delete $1; + ast_stack.back()->children.push_back(node); + ast_stack.push_back(node); + } opt_arg_list ';'{ + ast_stack.pop_back(); }; gen_stmt_block: |