mirror of
				https://github.com/YosysHQ/yosys
				synced 2025-10-31 03:32:29 +00:00 
			
		
		
		
	Merge pull request #2257 from antmicro/fix-conflicts
Restore #2203 and #2244 and fix parser conflicts
This commit is contained in:
		
						commit
						021ce8e596
					
				
					 5 changed files with 59 additions and 9 deletions
				
			
		|  | @ -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)); | ||||||
|  |  | ||||||
							
								
								
									
										6
									
								
								tests/various/integer_range_bad_syntax.ys
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										6
									
								
								tests/various/integer_range_bad_syntax.ys
									
										
									
									
									
										Normal file
									
								
							|  | @ -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 | ||||||
							
								
								
									
										6
									
								
								tests/various/integer_real_bad_syntax.ys
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										6
									
								
								tests/various/integer_real_bad_syntax.ys
									
										
									
									
									
										Normal file
									
								
							|  | @ -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 | ||||||
							
								
								
									
										9
									
								
								tests/various/logic_param_simple.ys
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										9
									
								
								tests/various/logic_param_simple.ys
									
										
									
									
									
										Normal file
									
								
							|  | @ -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 | ||||||
							
								
								
									
										28
									
								
								tests/various/signed.ys
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										28
									
								
								tests/various/signed.ys
									
										
									
									
									
										Normal file
									
								
							|  | @ -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…
	
	Add table
		Add a link
		
	
		Reference in a new issue