mirror of
				https://github.com/YosysHQ/yosys
				synced 2025-11-03 21:09:12 +00:00 
			
		
		
		
	support using previously declared types/localparams/params in package
(parameters in systemverilog packages can't actually be overridden, so allowing parameters in addition to localparams doesn't actually add any new functionality, but it's useful to be able to use the parameter keyword also)
This commit is contained in:
		
							parent
							
								
									ebf23cd62e
								
							
						
					
					
						commit
						249876b614
					
				
					 3 changed files with 33 additions and 4 deletions
				
			
		| 
						 | 
				
			
			@ -441,6 +441,29 @@ bool AstNode::simplify(bool const_fold, bool at_zero, bool in_lvalue, int stage,
 | 
			
		|||
		}
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	// create name resolution entries for all objects with names
 | 
			
		||||
	if (type == AST_PACKAGE) {
 | 
			
		||||
		//add names to package scope
 | 
			
		||||
		for (size_t i = 0; i < children.size(); i++) {
 | 
			
		||||
			AstNode *node = children[i];
 | 
			
		||||
			// these nodes appear at the top level in a package and can define names
 | 
			
		||||
			if (node->type == AST_PARAMETER || node->type == AST_LOCALPARAM || node->type == AST_TYPEDEF) {
 | 
			
		||||
				current_scope[node->str] = node;
 | 
			
		||||
			}
 | 
			
		||||
			if (node->type == AST_ENUM) {
 | 
			
		||||
				current_scope[node->str] = node;
 | 
			
		||||
				for (auto enode : node->children) {
 | 
			
		||||
					log_assert(enode->type==AST_ENUM_ITEM);
 | 
			
		||||
					if (current_scope.count(enode->str) == 0)
 | 
			
		||||
						current_scope[enode->str] = enode;
 | 
			
		||||
					else
 | 
			
		||||
						log_file_error(filename, location.first_line, "enum item %s already exists in package\n", enode->str.c_str());
 | 
			
		||||
				}
 | 
			
		||||
			}
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
	auto backup_current_block = current_block;
 | 
			
		||||
	auto backup_current_block_child = current_block_child;
 | 
			
		||||
	auto backup_current_top_block = current_top_block;
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue