mirror of
				https://github.com/YosysHQ/yosys
				synced 2025-10-31 03:32:29 +00:00 
			
		
		
		
	Initial implementation of elaboration system tasks
(IEEE1800-2017 section 20.11) This PR allows us to use $info/$warning/$error/$fatal **at elaboration time** within a generate block. This is very useful to stop a synthesis of a parametrized block when an illegal combination of parameters is chosen.
This commit is contained in:
		
							parent
							
								
									98925f6c4b
								
							
						
					
					
						commit
						ac10e7d96d
					
				
					 10 changed files with 107 additions and 5 deletions
				
			
		|  | @ -301,6 +301,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; } | ||||
| 
 | ||||
|  |  | |||
|  | @ -105,7 +105,7 @@ static void free_attr(std::map<std::string, AstNode*> *al) | |||
| 	bool boolean; | ||||
| } | ||||
| 
 | ||||
| %token <string> TOK_STRING TOK_ID TOK_CONSTVAL TOK_REALVAL TOK_PRIMITIVE TOK_SVA_LABEL | ||||
| %token <string> TOK_STRING TOK_ID TOK_CONSTVAL TOK_REALVAL TOK_PRIMITIVE TOK_SVA_LABEL TOK_ELAB_TASK | ||||
| %token TOK_ASSERT TOK_ASSUME TOK_RESTRICT TOK_COVER | ||||
| %token ATTR_BEGIN ATTR_END DEFATTR_BEGIN DEFATTR_END | ||||
| %token TOK_MODULE TOK_ENDMODULE TOK_PARAMETER TOK_LOCALPARAM TOK_DEFPARAM | ||||
|  | @ -1869,6 +1869,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: | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue