diff options
author | Eddie Hung <eddie@fpgeh.com> | 2020-03-06 10:20:30 -0800 |
---|---|---|
committer | Eddie Hung <eddie@fpgeh.com> | 2020-03-06 10:20:30 -0800 |
commit | 91a7a74ac438ba5b030d90fcfafeb1db03757d91 (patch) | |
tree | 91b62605ba778167dff37b4b2cc55ea13b83e29a /passes | |
parent | 2335c59e5bdd40c16ced821a27de7df00016963a (diff) | |
download | yosys-91a7a74ac438ba5b030d90fcfafeb1db03757d91.tar.gz yosys-91a7a74ac438ba5b030d90fcfafeb1db03757d91.tar.bz2 yosys-91a7a74ac438ba5b030d90fcfafeb1db03757d91.zip |
abc9: (* keep *) wires to be PO only, not PI as well; fix scc handling
Diffstat (limited to 'passes')
-rw-r--r-- | passes/techmap/abc9_ops.cc | 13 |
1 files changed, 5 insertions, 8 deletions
diff --git a/passes/techmap/abc9_ops.cc b/passes/techmap/abc9_ops.cc index b0bd81698..27e9fd239 100644 --- a/passes/techmap/abc9_ops.cc +++ b/passes/techmap/abc9_ops.cc @@ -110,14 +110,13 @@ void mark_scc(RTLIL::Module *module) if (c.second.is_fully_const()) continue; if (cell->output(c.first)) { SigBit b = c.second.as_bit(); + // TODO: Don't be as heavy handed as to + // mark the entire wire as part of the scc Wire *w = b.wire; - w->set_bool_attribute(ID::keep); - w->attributes[ID(abc9_scc_id)] = id.as_int(); + w->set_bool_attribute(ID(abc9_scc)); } } } - - module->fixup_ports(); } void prep_dff(RTLIL::Module *module) @@ -967,10 +966,8 @@ void reintegrate(RTLIL::Module *module) RTLIL::Wire *mapped_wire = mapped_mod->wire(port); RTLIL::Wire *wire = module->wire(port); log_assert(wire); - if (wire->attributes.erase(ID(abc9_scc_id))) { - auto r YS_ATTRIBUTE(unused) = wire->attributes.erase(ID::keep); - log_assert(r); - } + wire->attributes.erase(ID(abc9_scc)); + RTLIL::Wire *remap_wire = module->wire(remap_name(port)); RTLIL::SigSpec signal(wire, 0, GetSize(remap_wire)); log_assert(GetSize(signal) >= GetSize(remap_wire)); |