diff options
author | Lukasz Dalek <ldalek@antmicro.com> | 2020-05-18 21:01:16 +0200 |
---|---|---|
committer | Kamil Rakoczy <krakoczy@antmicro.com> | 2020-06-26 15:35:56 +0200 |
commit | 7cb56f34b06de666935fbda315ce7c7bd45048b3 (patch) | |
tree | 2f5d565b0cbbc530dae7cb44c738a4217285e60c /frontends | |
parent | 0835a86e30fc2a934f5e6c96b28c90b59654ed92 (diff) | |
download | yosys-7cb56f34b06de666935fbda315ce7c7bd45048b3.tar.gz yosys-7cb56f34b06de666935fbda315ce7c7bd45048b3.tar.bz2 yosys-7cb56f34b06de666935fbda315ce7c7bd45048b3.zip |
Fix integer signing grammar
This commit fixes signed/unsigned grammar in parameters as defined in SV
LRM A2.2.1. Example of correct parameters:
parameter integer signed i = 0;
parameter integer unsigned i = 0;
Example of incorrect parameters:
parameter signed integer i = 0;
parameter unsigned integer i = 0;
Signed-off-by: Lukasz Dalek <ldalek@antmicro.com>
Signed-off-by: Kamil Rakoczy <krakoczy@antmicro.com>
Diffstat (limited to 'frontends')
-rw-r--r-- | frontends/verilog/verilog_parser.y | 12 |
1 files changed, 9 insertions, 3 deletions
diff --git a/frontends/verilog/verilog_parser.y b/frontends/verilog/verilog_parser.y index 15c231f3b..18745e38e 100644 --- a/frontends/verilog/verilog_parser.y +++ b/frontends/verilog/verilog_parser.y @@ -1329,6 +1329,8 @@ ignspec_id: param_signed: TOK_SIGNED { astbuf1->is_signed = true; + } | TOK_UNSIGNED { + astbuf1->is_signed = false; } | /* empty */; param_integer: @@ -1339,14 +1341,14 @@ param_integer: astbuf1->children.back()->children.push_back(AstNode::mkconst_int(31, true)); astbuf1->children.back()->children.push_back(AstNode::mkconst_int(0, true)); astbuf1->is_signed = true; - } | /* empty */; + } param_real: TOK_REAL { if (astbuf1->children.size() != 1) frontend_verilog_yyerror("Parameter already declared as integer, cannot set to real."); astbuf1->children.push_back(new AstNode(AST_REALVALUE)); - } | /* empty */; + } param_range: range { @@ -1357,8 +1359,12 @@ param_range: } }; +param_integer_type: param_integer param_signed +param_range_type: type_vec param_signed param_range +param_implicit_type: param_signed param_range + param_type: - param_signed param_integer param_real param_range | + param_integer_type | param_real | param_range_type | param_implicit_type | hierarchical_type_id { astbuf1->is_custom_type = true; astbuf1->children.push_back(new AstNode(AST_WIRETYPE)); |