3
0
Fork 0
mirror of https://github.com/YosysHQ/yosys synced 2025-04-23 09:05:32 +00:00

Improved opt_share for reduce cells

This commit is contained in:
Clifford Wolf 2013-03-29 11:19:21 +01:00
parent 0d48b846ac
commit 88af5b6a16
3 changed files with 32 additions and 3 deletions

View file

@ -76,6 +76,18 @@ struct OptShareWorker
alt_conn["\\B"] = conn->at("\\A");
}
conn = &alt_conn;
} else
if (cell->type == "$reduce_xor" || cell->type == "$reduce_xnor") {
alt_conn = *conn;
assign_map.apply(alt_conn.at("\\A"));
alt_conn.at("\\A").sort();
conn = &alt_conn;
} else
if (cell->type == "$reduce_and" || cell->type == "$reduce_or" || cell->type == "$reduce_bool") {
alt_conn = *conn;
assign_map.apply(alt_conn.at("\\A"));
alt_conn.at("\\A").sort_and_unify();
conn = &alt_conn;
}
for (auto &it : *conn) {
@ -151,6 +163,14 @@ struct OptShareWorker
conn2["\\A"] = conn2["\\B"];
conn2["\\B"] = tmp;
}
} else
if (cell1->type == "$reduce_xor" || cell1->type == "$reduce_xnor") {
conn1["\\A"].sort();
conn2["\\A"].sort();
} else
if (cell1->type == "$reduce_and" || cell1->type == "$reduce_or" || cell1->type == "$reduce_bool") {
conn1["\\A"].sort_and_unify();
conn2["\\A"].sort_and_unify();
}
if (conn1 != conn2) {