mirror of
				https://github.com/YosysHQ/yosys
				synced 2025-11-04 13:29:12 +00:00 
			
		
		
		
	pass metadata: added the machinery to write param and attributes
This commit is contained in:
		
							parent
							
								
									1876ed21e7
								
							
						
					
					
						commit
						bdf14557ca
					
				
					 1 changed files with 27 additions and 8 deletions
				
			
		| 
						 | 
				
			
			@ -172,6 +172,21 @@ struct MetadataWriter
 | 
			
		|||
        f << "          ]\n";
 | 
			
		||||
        f << "        }";
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    void write_param_val(const Const& v)
 | 
			
		||||
    {
 | 
			
		||||
        if ((v.flags & RTLIL::ConstFlags::CONST_FLAG_STRING) == RTLIL::ConstFlags::CONST_FLAG_STRING) {
 | 
			
		||||
            const auto str = v.decode_string();
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
            f << get_string(str);
 | 
			
		||||
        } else if ((v.flags & RTLIL::ConstFlags::CONST_FLAG_SIGNED) == RTLIL::ConstFlags::CONST_FLAG_SIGNED) {
 | 
			
		||||
            f << stringf("\"%dsd %d\"", v.size(), v.as_int());
 | 
			
		||||
        } else if ((v.flags & RTLIL::ConstFlags::CONST_FLAG_REAL) == RTLIL::ConstFlags::CONST_FLAG_REAL) {
 | 
			
		||||
 | 
			
		||||
        } else {
 | 
			
		||||
            f << get_string(v.as_string());
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    void write_cell(Cell* cell)
 | 
			
		||||
| 
						 | 
				
			
			@ -187,10 +202,12 @@ struct MetadataWriter
 | 
			
		|||
            if (!first_attr)
 | 
			
		||||
                f << stringf(",\n");
 | 
			
		||||
            const auto attr_val = attr.second;
 | 
			
		||||
            if (!attr_val.empty())
 | 
			
		||||
                f << stringf("                %s: \"%s\"\n", get_string(RTLIL::unescape_id(attr.first)).c_str(), attr_val.decode_string().c_str());
 | 
			
		||||
            else
 | 
			
		||||
                f << stringf("                %s: true\n", get_string(RTLIL::unescape_id(attr.first)).c_str());
 | 
			
		||||
            if (!attr_val.empty()) {
 | 
			
		||||
                f << stringf("                %s: ", get_string(RTLIL::unescape_id(attr.first)).c_str());
 | 
			
		||||
                write_param_val(attr_val);
 | 
			
		||||
            } else {
 | 
			
		||||
                f << stringf("                %s: true", get_string(RTLIL::unescape_id(attr.first)).c_str());
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            first_attr = false;
 | 
			
		||||
        }
 | 
			
		||||
| 
						 | 
				
			
			@ -204,10 +221,12 @@ struct MetadataWriter
 | 
			
		|||
            if (!first_param)
 | 
			
		||||
                f << stringf(",\n");
 | 
			
		||||
            const auto param_val = param.second;
 | 
			
		||||
            if (!param_val.empty())
 | 
			
		||||
                f << stringf("                %s: \"%s\"\n", get_string(RTLIL::unescape_id(param.first)).c_str(), param_val.decode_string().c_str());
 | 
			
		||||
            else
 | 
			
		||||
                f << stringf("                %s: true\n", get_string(RTLIL::unescape_id(param.first)).c_str());
 | 
			
		||||
            if (!param_val.empty()) {
 | 
			
		||||
                f << stringf("                %s: ", get_string(RTLIL::unescape_id(param.first)).c_str());
 | 
			
		||||
                write_param_val(param_val);
 | 
			
		||||
            } else {
 | 
			
		||||
                f << stringf("                %s: true", get_string(RTLIL::unescape_id(param.first)).c_str());
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            first_param = false;
 | 
			
		||||
        }
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue