31 #include "rapidjson/document.h"
36 #include <unordered_map>
60 const u32 HGL_FORMAT_VERSION = 4;
68 std::vector<std::string>
pins;
69 std::unordered_map<std::string, PinType> pin_to_type;
70 std::unordered_map<std::string, PinDirection> pin_to_direction;
71 std::unordered_map<std::string, std::string> boolean_functions;
79 std::vector<std::string>
pins;
84 std::unique_ptr<GateLibrary> m_gate_lib;
85 std::filesystem::path m_path;
87 std::set<std::string> m_cell_names;
89 Result<std::monostate> parse_gate_library(
const rapidjson::Document& document);
90 Result<std::monostate> parse_gate_type(
const rapidjson::Value& gate_type);
91 Result<std::monostate> parse_pin(PinCtx& pin_ctx,
const rapidjson::Value& pin);
92 Result<std::unique_ptr<GateTypeComponent>> parse_lut_config(
const rapidjson::Value& lut_config);
93 Result<std::unique_ptr<GateTypeComponent>> parse_ff_config(
const rapidjson::Value& ff_config);
94 Result<std::unique_ptr<GateTypeComponent>> parse_latch_config(
const rapidjson::Value& latch_config);
95 Result<std::unique_ptr<GateTypeComponent>> parse_ram_config(
const rapidjson::Value& ram_config);
std::unique_ptr< GateLibrary > parse(std::filesystem::path file_path)
std::vector< PinInformation > pins