mirror of https://github.com/YosysHQ/yosys.git
Merge pull request #2257 from antmicro/fix-conflicts
Restore #2203 and #2244 and fix parser conflicts
This commit is contained in:
commit
021ce8e596
|
@ -742,6 +742,7 @@ module_body:
|
||||||
module_body module_body_stmt |
|
module_body module_body_stmt |
|
||||||
/* the following line makes the generate..endgenrate keywords optional */
|
/* the following line makes the generate..endgenrate keywords optional */
|
||||||
module_body gen_stmt |
|
module_body gen_stmt |
|
||||||
|
module_body ';' |
|
||||||
/* empty */;
|
/* empty */;
|
||||||
|
|
||||||
module_body_stmt:
|
module_body_stmt:
|
||||||
|
@ -1331,36 +1332,36 @@ ignspec_id:
|
||||||
param_signed:
|
param_signed:
|
||||||
TOK_SIGNED {
|
TOK_SIGNED {
|
||||||
astbuf1->is_signed = true;
|
astbuf1->is_signed = true;
|
||||||
|
} | TOK_UNSIGNED {
|
||||||
|
astbuf1->is_signed = false;
|
||||||
} | /* empty */;
|
} | /* empty */;
|
||||||
|
|
||||||
param_integer:
|
param_integer:
|
||||||
TOK_INTEGER {
|
TOK_INTEGER {
|
||||||
if (astbuf1->children.size() != 1)
|
|
||||||
frontend_verilog_yyerror("Internal error in param_integer - should not happen?");
|
|
||||||
astbuf1->children.push_back(new AstNode(AST_RANGE));
|
astbuf1->children.push_back(new AstNode(AST_RANGE));
|
||||||
astbuf1->children.back()->children.push_back(AstNode::mkconst_int(31, true));
|
astbuf1->children.back()->children.push_back(AstNode::mkconst_int(31, true));
|
||||||
astbuf1->children.back()->children.push_back(AstNode::mkconst_int(0, true));
|
astbuf1->children.back()->children.push_back(AstNode::mkconst_int(0, true));
|
||||||
astbuf1->is_signed = true;
|
astbuf1->is_signed = true;
|
||||||
} | /* empty */;
|
};
|
||||||
|
|
||||||
param_real:
|
param_real:
|
||||||
TOK_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));
|
astbuf1->children.push_back(new AstNode(AST_REALVALUE));
|
||||||
} | /* empty */;
|
};
|
||||||
|
|
||||||
param_range:
|
param_range:
|
||||||
range {
|
range {
|
||||||
if ($1 != NULL) {
|
if ($1 != NULL) {
|
||||||
if (astbuf1->children.size() != 1)
|
|
||||||
frontend_verilog_yyerror("integer/real parameters should not have a range.");
|
|
||||||
astbuf1->children.push_back($1);
|
astbuf1->children.push_back($1);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
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_type:
|
||||||
param_signed param_integer param_real param_range |
|
param_integer_type | param_real | param_range_type | param_implicit_type |
|
||||||
hierarchical_type_id {
|
hierarchical_type_id {
|
||||||
astbuf1->is_custom_type = true;
|
astbuf1->is_custom_type = true;
|
||||||
astbuf1->children.push_back(new AstNode(AST_WIRETYPE));
|
astbuf1->children.push_back(new AstNode(AST_WIRETYPE));
|
||||||
|
|
|
@ -0,0 +1,6 @@
|
||||||
|
logger -expect error "syntax error, unexpected" 1
|
||||||
|
read_verilog -sv <<EOT
|
||||||
|
module test_integer_range();
|
||||||
|
parameter integer [31:0] a = 0;
|
||||||
|
endmodule
|
||||||
|
EOT
|
|
@ -0,0 +1,6 @@
|
||||||
|
logger -expect error "syntax error, unexpected TOK_REAL" 1
|
||||||
|
read_verilog -sv <<EOT
|
||||||
|
module test_integer_real();
|
||||||
|
parameter integer real a = 0;
|
||||||
|
endmodule
|
||||||
|
EOT
|
|
@ -0,0 +1,9 @@
|
||||||
|
read_verilog -sv <<EOT
|
||||||
|
module test_logic_param();
|
||||||
|
parameter logic a = 0;
|
||||||
|
parameter logic [31:0] e = 0;
|
||||||
|
parameter logic signed b = 0;
|
||||||
|
parameter logic unsigned c = 0;
|
||||||
|
parameter logic unsigned [31:0] d = 0;
|
||||||
|
endmodule
|
||||||
|
EOT
|
|
@ -0,0 +1,28 @@
|
||||||
|
# SV LRM A2.2.1
|
||||||
|
|
||||||
|
read_verilog -sv <<EOT
|
||||||
|
module test_signed();
|
||||||
|
parameter integer signed a = 0;
|
||||||
|
parameter integer unsigned b = 0;
|
||||||
|
|
||||||
|
endmodule
|
||||||
|
EOT
|
||||||
|
|
||||||
|
design -reset
|
||||||
|
read_verilog -sv <<EOT
|
||||||
|
module test_signed();
|
||||||
|
parameter logic signed [7:0] a = 0;
|
||||||
|
parameter logic unsigned [7:0] b = 0;
|
||||||
|
|
||||||
|
endmodule
|
||||||
|
EOT
|
||||||
|
|
||||||
|
design -reset
|
||||||
|
logger -expect error "syntax error, unexpected TOK_INTEGER" 1
|
||||||
|
read_verilog -sv <<EOT
|
||||||
|
module test_signed();
|
||||||
|
parameter signed integer a = 0;
|
||||||
|
parameter unsigned integer b = 0;
|
||||||
|
|
||||||
|
endmodule
|
||||||
|
EOT
|
Loading…
Reference in New Issue