mirror of
				https://github.com/YosysHQ/yosys
				synced 2025-10-31 03:32:29 +00:00 
			
		
		
		
	Merge pull request #1918 from whitequark/simplify-improve_enum
ast/simplify: improve enum handling
This commit is contained in:
		
						commit
						2d436bc4f1
					
				
					 2 changed files with 5 additions and 7 deletions
				
			
		|  | @ -443,8 +443,8 @@ Verilog Attributes and non-standard features | |||
| - The ``wiretype`` attribute is added by the verilog parser for wires of a | ||||
|   typedef'd type to indicate the type identifier. | ||||
| 
 | ||||
| - Various ``enum_{width}_{value}`` attributes are added to wires of an | ||||
|   enumerated type to give a map of possible enum items to their values. | ||||
| - Various ``enum_value_{value}`` attributes are added to wires of an enumerated type | ||||
|   to give a map of possible enum items to their values. | ||||
| 
 | ||||
| - The ``enum_base_type`` attribute is added to enum items to indicate which | ||||
|   enum they belong to (enums -- anonymous and otherwise -- are | ||||
|  |  | |||
|  | @ -931,9 +931,7 @@ bool AstNode::simplify(bool const_fold, bool at_zero, bool in_lvalue, int stage, | |||
| 						); | ||||
| 					} | ||||
| 					//start building attribute string
 | ||||
| 					std::string enum_item_str = "\\enum_"; | ||||
| 					enum_item_str.append(std::to_string(width)); | ||||
| 					enum_item_str.append("_"); | ||||
| 					std::string enum_item_str = "\\enum_value_"; | ||||
| 					//get enum item value
 | ||||
| 					if(enum_item->children[0]->type != AST_CONSTANT){ | ||||
| 						log_error("expected const, got %s for %s (%s)\n", | ||||
|  | @ -941,8 +939,8 @@ bool AstNode::simplify(bool const_fold, bool at_zero, bool in_lvalue, int stage, | |||
| 								  enum_item->str.c_str(), enum_node->str.c_str() | ||||
|  								); | ||||
| 					} | ||||
| 					int val = enum_item->children[0]->asInt(is_signed); | ||||
| 					enum_item_str.append(std::to_string(val)); | ||||
| 					RTLIL::Const val = enum_item->children[0]->bitsAsConst(width, is_signed); | ||||
| 					enum_item_str.append(val.as_string()); | ||||
| 					//set attribute for available val to enum item name mappings
 | ||||
| 					attributes[enum_item_str.c_str()] = mkconst_str(enum_item->str); | ||||
| 				} | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue