mirror of
https://github.com/YosysHQ/yosys
synced 2025-04-13 04:28:18 +00:00
read_aiger: also parse abc9_mergeability
This commit is contained in:
parent
8eb5bb258c
commit
73526a6f10
|
@ -442,11 +442,13 @@ void AigerReader::parse_xaiger()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if (c == 'r') {
|
else if (c == 'r') {
|
||||||
uint32_t dataSize YS_ATTRIBUTE(unused) = parse_xaiger_literal(f);
|
uint32_t dataSize = parse_xaiger_literal(f);
|
||||||
flopNum = parse_xaiger_literal(f);
|
flopNum = parse_xaiger_literal(f);
|
||||||
log_debug("flopNum = %u\n", flopNum);
|
log_debug("flopNum = %u\n", flopNum);
|
||||||
log_assert(dataSize == (flopNum+1) * sizeof(uint32_t));
|
log_assert(dataSize == (flopNum+1) * sizeof(uint32_t));
|
||||||
f.ignore(flopNum * sizeof(uint32_t));
|
mergeability.reserve(flopNum);
|
||||||
|
for (unsigned i = 0; i < flopNum; i++)
|
||||||
|
mergeability.emplace_back(parse_xaiger_literal(f));
|
||||||
}
|
}
|
||||||
else if (c == 'n') {
|
else if (c == 'n') {
|
||||||
parse_xaiger_literal(f);
|
parse_xaiger_literal(f);
|
||||||
|
@ -774,6 +776,7 @@ void AigerReader::post_process()
|
||||||
auto ff = module->addCell(NEW_ID, "$__ABC9_FF_");
|
auto ff = module->addCell(NEW_ID, "$__ABC9_FF_");
|
||||||
ff->setPort("\\D", d);
|
ff->setPort("\\D", d);
|
||||||
ff->setPort("\\Q", q);
|
ff->setPort("\\Q", q);
|
||||||
|
ff->attributes["\\abc9_mergeability"] = mergeability[i];
|
||||||
}
|
}
|
||||||
|
|
||||||
dict<RTLIL::IdString, int> wideports_cache;
|
dict<RTLIL::IdString, int> wideports_cache;
|
||||||
|
|
|
@ -45,6 +45,7 @@ struct AigerReader
|
||||||
std::vector<RTLIL::Wire*> outputs;
|
std::vector<RTLIL::Wire*> outputs;
|
||||||
std::vector<RTLIL::Wire*> bad_properties;
|
std::vector<RTLIL::Wire*> bad_properties;
|
||||||
std::vector<RTLIL::Cell*> boxes;
|
std::vector<RTLIL::Cell*> boxes;
|
||||||
|
std::vector<int> mergeability;
|
||||||
|
|
||||||
AigerReader(RTLIL::Design *design, std::istream &f, RTLIL::IdString module_name, RTLIL::IdString clk_name, std::string map_filename, bool wideports);
|
AigerReader(RTLIL::Design *design, std::istream &f, RTLIL::IdString module_name, RTLIL::IdString clk_name, std::string map_filename, bool wideports);
|
||||||
void parse_aiger();
|
void parse_aiger();
|
||||||
|
|
Loading…
Reference in a new issue