summaryrefslogtreecommitdiff
path: root/passes
diff options
context:
space:
mode:
authorClifford Wolf <clifford@clifford.at>2013-12-19 13:21:57 +0100
committerClifford Wolf <clifford@clifford.at>2013-12-19 13:21:57 +0100
commitc904f5e197470b14ae7951010444edc8309b7807 (patch)
tree72e82cc60c3966eee2d389381cca60efe56602d5 /passes
parent994c83db0143f5d86e1442577e0efcf0c2c57cda (diff)
Prefer non-inverted clocks in dfflibmap
Diffstat (limited to 'passes')
-rw-r--r--passes/techmap/dfflibmap.cc14
1 files changed, 8 insertions, 6 deletions
diff --git a/passes/techmap/dfflibmap.cc b/passes/techmap/dfflibmap.cc
index 0324afa8..49b98059 100644
--- a/passes/techmap/dfflibmap.cc
+++ b/passes/techmap/dfflibmap.cc
@@ -473,17 +473,19 @@ struct DfflibmapPass : public Pass {
find_cell_sr(libparser.ast, "$_DFFSR_PPN_", true, true, false);
find_cell_sr(libparser.ast, "$_DFFSR_PPP_", true, true, true);
- bool keep_running = true;
- while (keep_running) {
+ bool keep_running;
+ do {
keep_running = false;
- keep_running |= expand_cellmap("$_DFF_*_", "C");
- keep_running |= expand_cellmap("$_DFF_*??_", "C");
keep_running |= expand_cellmap("$_DFF_?*?_", "R");
keep_running |= expand_cellmap("$_DFF_??*_", "DQ");
- keep_running |= expand_cellmap("$_DFFSR_*??_", "C");
keep_running |= expand_cellmap("$_DFFSR_?*?_", "S");
keep_running |= expand_cellmap("$_DFFSR_??*_", "R");
- }
+ } while (keep_running);
+ do {
+ keep_running |= expand_cellmap("$_DFF_*_", "C");
+ keep_running |= expand_cellmap("$_DFF_*??_", "C");
+ keep_running |= expand_cellmap("$_DFFSR_*??_", "C");
+ } while (keep_running);
map_sr_to_arst("$_DFFSR_NNN_", "$_DFF_NN0_");
map_sr_to_arst("$_DFFSR_NNN_", "$_DFF_NN1_");