diff options
author | Eddie Hung <eddie@fpgeh.com> | 2019-11-21 16:19:28 -0800 |
---|---|---|
committer | Eddie Hung <eddie@fpgeh.com> | 2019-11-21 16:19:28 -0800 |
commit | 0ab1e496dc601f8e9d5efbcc5b2be7cf6b2d9673 (patch) | |
tree | b880f946a818019dc1bad255ab60a04e1c68e9f3 | |
parent | c4ec42ac38bd5678d9f3018d3921a3f0f4239986 (diff) | |
download | yosys-0ab1e496dc601f8e9d5efbcc5b2be7cf6b2d9673.tar.gz yosys-0ab1e496dc601f8e9d5efbcc5b2be7cf6b2d9673.tar.bz2 yosys-0ab1e496dc601f8e9d5efbcc5b2be7cf6b2d9673.zip |
write_xaiger to not use module POs but only write outputs if driven
-rw-r--r-- | backends/aiger/xaiger.cc | 34 |
1 files changed, 23 insertions, 11 deletions
diff --git a/backends/aiger/xaiger.cc b/backends/aiger/xaiger.cc index 5d125b653..c69b0fa85 100644 --- a/backends/aiger/xaiger.cc +++ b/backends/aiger/xaiger.cc @@ -542,18 +542,30 @@ struct XAigerWriter } for (auto bit : unused_bits) - undriven_bits.erase(bit); - - if (!undriven_bits.empty() && !holes_mode) { - bool whole_module = module->design->selected_whole_module(module->name); - undriven_bits.sort(); - for (auto bit : undriven_bits) { - if (whole_module) - log_warning("Treating undriven bit %s.%s like $anyseq.\n", log_id(module), log_signal(bit)); - input_bits.insert(bit); + if (holes_mode) + undriven_bits.erase(bit); + else if (!undriven_bits.count(bit)) + output_bits.insert(bit); + + if (!holes_mode) { + for (auto port : module->ports) { + auto wire = module->wire(port); + if (!wire->port_output) + continue; + for (int i = 0; i < GetSize(wire); i++) { + SigBit wirebit(wire, i); + SigBit bit = sigmap(wirebit); + if (bit == State::Sx) + continue; + if (!undriven_bits.count(bit)) { + output_bits.insert(wirebit); + } + } } - if (whole_module) - log_warning("Treating a total of %d undriven bits in %s like $anyseq.\n", GetSize(undriven_bits), log_id(module)); + + if (!undriven_bits.empty()) + for (auto bit : undriven_bits) + input_bits.insert(bit); } if (holes_mode) { |