31 #include "rapidjson/document.h"
36 #include <unordered_map>
58 const u32 HGL_FORMAT_VERSION = 4;
63 std::vector<std::string>
pins;
64 std::unordered_map<std::string, PinType> pin_to_type;
65 std::unordered_map<std::string, PinDirection> pin_to_direction;
66 std::unordered_map<std::string, std::string> boolean_functions;
71 std::vector<std::string>
pins;
76 std::unique_ptr<GateLibrary> m_gate_lib;
77 std::filesystem::path m_path;
79 std::set<std::string> m_cell_names;
81 Result<std::monostate> parse_gate_library(
const rapidjson::Document& document);
82 Result<std::monostate> parse_gate_type(
const rapidjson::Value& gate_type);
83 Result<std::monostate> parse_pin(PinCtx& pin_ctx,
const rapidjson::Value& pin);
84 Result<std::unique_ptr<GateTypeComponent>> parse_lut_config(
const rapidjson::Value& lut_config);
85 Result<std::unique_ptr<GateTypeComponent>> parse_ff_config(
const rapidjson::Value& ff_config);
86 Result<std::unique_ptr<GateTypeComponent>> parse_latch_config(
const rapidjson::Value& latch_config);
87 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