mirror of
				https://github.com/YosysHQ/yosys
				synced 2025-11-03 21:09:12 +00:00 
			
		
		
		
	
						commit
						38dbb44fa0
					
				
					 1 changed files with 12 additions and 0 deletions
				
			
		| 
						 | 
				
			
			@ -1336,6 +1336,7 @@ bool AstNode::simplify(bool const_fold, bool at_zero, bool in_lvalue, int stage,
 | 
			
		|||
			str.clear();
 | 
			
		||||
			type = AST_ASSIGN;
 | 
			
		||||
			children.push_back(children_list.at(0));
 | 
			
		||||
			children.back()->was_checked = true;
 | 
			
		||||
			children.push_back(node);
 | 
			
		||||
			did_something = true;
 | 
			
		||||
		}
 | 
			
		||||
| 
						 | 
				
			
			@ -1372,6 +1373,7 @@ bool AstNode::simplify(bool const_fold, bool at_zero, bool in_lvalue, int stage,
 | 
			
		|||
			str.clear();
 | 
			
		||||
			type = AST_ASSIGN;
 | 
			
		||||
			children.push_back(children_list[0]);
 | 
			
		||||
			children.back()->was_checked = true;
 | 
			
		||||
			children.push_back(node);
 | 
			
		||||
			did_something = true;
 | 
			
		||||
		}
 | 
			
		||||
| 
						 | 
				
			
			@ -1530,6 +1532,7 @@ skip_dynamic_range_lvalue_expansion:;
 | 
			
		|||
			wire_tmp_id->str = wire_tmp->str;
 | 
			
		||||
 | 
			
		||||
			newNode->children.push_back(new AstNode(AST_ASSIGN_EQ, wire_tmp_id, children[1]->clone()));
 | 
			
		||||
			newNode->children.back()->was_checked = true;
 | 
			
		||||
 | 
			
		||||
			int cursor = 0;
 | 
			
		||||
			for (auto child : children[0]->children)
 | 
			
		||||
| 
						 | 
				
			
			@ -1815,6 +1818,7 @@ skip_dynamic_range_lvalue_expansion:;
 | 
			
		|||
					AstNode *regid = new AstNode(AST_IDENTIFIER);
 | 
			
		||||
					regid->str = reg->str;
 | 
			
		||||
					regid->id2ast = reg;
 | 
			
		||||
					regid->was_checked = true;
 | 
			
		||||
 | 
			
		||||
					AstNode *rhs = nullptr;
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -2204,6 +2208,8 @@ skip_dynamic_range_lvalue_expansion:;
 | 
			
		|||
 | 
			
		||||
			AstNode *always = new AstNode(AST_ALWAYS, new AstNode(AST_BLOCK,
 | 
			
		||||
					new AstNode(AST_ASSIGN_EQ, lvalue, clone())));
 | 
			
		||||
			always->children[0]->children[0]->was_checked = true;
 | 
			
		||||
 | 
			
		||||
			current_ast_mod->children.push_back(always);
 | 
			
		||||
 | 
			
		||||
			goto replace_fcall_with_id;
 | 
			
		||||
| 
						 | 
				
			
			@ -2253,6 +2259,7 @@ skip_dynamic_range_lvalue_expansion:;
 | 
			
		|||
						AstNode *assign = child->is_input ?
 | 
			
		||||
								new AstNode(AST_ASSIGN_EQ, wire_id->clone(), arg) :
 | 
			
		||||
								new AstNode(AST_ASSIGN_EQ, arg, wire_id->clone());
 | 
			
		||||
						assign->children[0]->was_checked = true;
 | 
			
		||||
 | 
			
		||||
						for (auto it = current_block->children.begin(); it != current_block->children.end(); it++) {
 | 
			
		||||
							if (*it != current_block_child)
 | 
			
		||||
| 
						 | 
				
			
			@ -2323,6 +2330,7 @@ skip_dynamic_range_lvalue_expansion:;
 | 
			
		|||
					AstNode *assign = child->is_input ?
 | 
			
		||||
							new AstNode(AST_ASSIGN_EQ, wire_id, arg) :
 | 
			
		||||
							new AstNode(AST_ASSIGN_EQ, arg, wire_id);
 | 
			
		||||
					assign->children[0]->was_checked = true;
 | 
			
		||||
 | 
			
		||||
					for (auto it = current_block->children.begin(); it != current_block->children.end(); it++) {
 | 
			
		||||
						if (*it != current_block_child)
 | 
			
		||||
| 
						 | 
				
			
			@ -2762,6 +2770,7 @@ AstNode *AstNode::readmem(bool is_readmemh, std::string mem_filename, AstNode *m
 | 
			
		|||
				block->children.push_back(new AstNode(AST_ASSIGN_EQ, new AstNode(AST_IDENTIFIER, new AstNode(AST_RANGE, AstNode::mkconst_int(cursor, false))), value));
 | 
			
		||||
				block->children.back()->children[0]->str = memory->str;
 | 
			
		||||
				block->children.back()->children[0]->id2ast = memory;
 | 
			
		||||
				block->children.back()->children[0]->was_checked = true;
 | 
			
		||||
			}
 | 
			
		||||
 | 
			
		||||
			cursor += increment;
 | 
			
		||||
| 
						 | 
				
			
			@ -3022,6 +3031,7 @@ bool AstNode::mem2reg_as_needed_pass2(pool<AstNode*> &mem2reg_set, AstNode *mod,
 | 
			
		|||
 | 
			
		||||
		AstNode *newNode = clone();
 | 
			
		||||
		newNode->type = AST_ASSIGN_EQ;
 | 
			
		||||
		newNode->children[0]->was_checked = true;
 | 
			
		||||
		async_block->children[0]->children.push_back(newNode);
 | 
			
		||||
 | 
			
		||||
		newNode = new AstNode(AST_NONE);
 | 
			
		||||
| 
						 | 
				
			
			@ -3067,6 +3077,7 @@ bool AstNode::mem2reg_as_needed_pass2(pool<AstNode*> &mem2reg_set, AstNode *mod,
 | 
			
		|||
 | 
			
		||||
		AstNode *assign_addr = new AstNode(AST_ASSIGN_EQ, new AstNode(AST_IDENTIFIER), children[0]->children[0]->children[0]->clone());
 | 
			
		||||
		assign_addr->children[0]->str = id_addr;
 | 
			
		||||
		assign_addr->children[0]->was_checked = true;
 | 
			
		||||
		block->children.insert(block->children.begin()+assign_idx+1, assign_addr);
 | 
			
		||||
 | 
			
		||||
		AstNode *case_node = new AstNode(AST_CASE, new AstNode(AST_IDENTIFIER));
 | 
			
		||||
| 
						 | 
				
			
			@ -3090,6 +3101,7 @@ bool AstNode::mem2reg_as_needed_pass2(pool<AstNode*> &mem2reg_set, AstNode *mod,
 | 
			
		|||
		children[0]->id2ast = NULL;
 | 
			
		||||
		children[0]->str = id_data;
 | 
			
		||||
		type = AST_ASSIGN_EQ;
 | 
			
		||||
		children[0]->was_checked = true;
 | 
			
		||||
 | 
			
		||||
		did_something = true;
 | 
			
		||||
	}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue