Added support for "keep" attribute to shregmap
authorClifford Wolf <clifford@clifford.at>
Sat, 7 May 2016 07:33:16 +0000 (09:33 +0200)
committerClifford Wolf <clifford@clifford.at>
Sat, 7 May 2016 07:33:16 +0000 (09:33 +0200)
passes/techmap/shregmap.cc

index 766c1c65ffd900f802c0d8f78342eb9498b52b0a..6936b499ef681381fe6d8d07e633d897dfba285c 100644 (file)
@@ -112,7 +112,7 @@ struct ShregmapWorker
        {
                for (auto wire : module->wires())
                {
-                       if (wire->port_output) {
+                       if (wire->port_output || wire->get_bool_attribute("\\keep")) {
                                for (auto bit : sigmap(wire))
                                        sigbit_with_non_chain_users.insert(bit);
                        }
@@ -130,7 +130,7 @@ struct ShregmapWorker
 
                for (auto cell : module->cells())
                {
-                       if (opts.ffcells.count(cell->type))
+                       if (opts.ffcells.count(cell->type) && !cell->get_bool_attribute("\\keep"))
                        {
                                IdString d_port = opts.ffcells.at(cell->type).first;
                                IdString q_port = opts.ffcells.at(cell->type).second;