aboutsummaryrefslogtreecommitdiffstats
path: root/passes/techmap
diff options
context:
space:
mode:
authorEddie Hung <eddie@fpgeh.com>2020-03-06 10:20:30 -0800
committerEddie Hung <eddie@fpgeh.com>2020-03-06 10:20:30 -0800
commit91a7a74ac438ba5b030d90fcfafeb1db03757d91 (patch)
tree91b62605ba778167dff37b4b2cc55ea13b83e29a /passes/techmap
parent2335c59e5bdd40c16ced821a27de7df00016963a (diff)
downloadyosys-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/techmap')
-rw-r--r--passes/techmap/abc9_ops.cc13
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));