prjunnamed_generic/
lib.rs1use prjunnamed_netlist::Design;
2
3mod rewrite;
4mod unname;
5mod decision;
6mod simplify;
7mod merge;
8mod split;
9mod lower_arith;
10mod iobuf_insert;
11mod chain_rebalance;
12mod tree_rebalance;
13mod analysis;
14
15pub use unname::unname;
16pub use decision::decision;
17pub use lower_arith::lower_arith;
18pub use iobuf_insert::iobuf_insert;
19pub use analysis::level::LevelAnalysis;
20pub use rewrite::normalize::Normalize;
21pub use rewrite::aig::SimpleAigOpt;
22pub use rewrite::lower::{LowerMux, LowerEq, LowerLt, LowerMul, LowerShift};
23pub use chain_rebalance::chain_rebalance;
24pub use tree_rebalance::tree_rebalance;
25
26pub fn canonicalize(design: &mut Design) {
27 for iter in 1.. {
28 if cfg!(feature = "trace") {
29 eprintln!(">canonicalize #{}", iter);
30 }
31 let did_simplify = simplify::simplify(design);
32 let did_merge = merge::merge(design);
33 let did_split = split::split(design);
34 if !(did_simplify || did_merge || did_split) {
35 if cfg!(feature = "trace") {
36 eprintln!(">canonicalize done");
37 }
38 break;
39 }
40 }
41}