diff options
author | Eddie Hung <eddie@fpgeh.com> | 2019-04-18 17:39:36 -0700 |
---|---|---|
committer | Eddie Hung <eddie@fpgeh.com> | 2019-04-18 17:39:36 -0700 |
commit | 21701cc1df461a77d39afaddf0f31ab78f307e32 (patch) | |
tree | d8b7c63fecb9c1239b7746e062aa688216489910 /frontends/aiger/aigerparse.cc | |
parent | b531efd6d9febe679571c897a8e22dbeaedeb96e (diff) | |
download | yosys-21701cc1df461a77d39afaddf0f31ab78f307e32.tar.gz yosys-21701cc1df461a77d39afaddf0f31ab78f307e32.tar.bz2 yosys-21701cc1df461a77d39afaddf0f31ab78f307e32.zip |
read_aiger to parse 'r' extension
Diffstat (limited to 'frontends/aiger/aigerparse.cc')
-rw-r--r-- | frontends/aiger/aigerparse.cc | 18 |
1 files changed, 18 insertions, 0 deletions
diff --git a/frontends/aiger/aigerparse.cc b/frontends/aiger/aigerparse.cc index 9c8cee63a..db5f9d2b9 100644 --- a/frontends/aiger/aigerparse.cc +++ b/frontends/aiger/aigerparse.cc @@ -363,6 +363,24 @@ void AigerReader::parse_xaiger() module->addLut(stringf("\\__%d__$lut", rootNodeID), input_sig, output_sig, std::move(lut_mask)); } } + else if (c == 'r') { + uint32_t dataSize = parse_xaiger_literal(f); + uint32_t flopNum = parse_xaiger_literal(f); + f.ignore(flopNum * sizeof(uint32_t)); + log_assert(inputs.size() >= flopNum); + for (auto it = inputs.end() - flopNum; it != inputs.end(); ++it) { + log_assert((*it)->port_input); + (*it)->port_input = false; + } + inputs.erase(inputs.end() - flopNum, inputs.end()); + log_assert(outputs.size() >= flopNum); + for (auto it = outputs.end() - flopNum; it != outputs.end(); ++it) { + log_assert((*it)->port_output); + (*it)->port_output = false; + } + outputs.erase(outputs.end() - flopNum, outputs.end()); + module->fixup_ports(); + } else if (c == 'n') { parse_xaiger_literal(f); f >> s; |