Added support for simple gates with one constant input to opt_const
authorClifford Wolf <clifford@clifford.at>
Wed, 27 Feb 2013 17:00:01 +0000 (18:00 +0100)
committerClifford Wolf <clifford@clifford.at>
Wed, 27 Feb 2013 17:00:01 +0000 (18:00 +0100)
passes/opt/opt_const.cc

index 9edea670965cc9f92303c6626f1a0748fa9a1834..84b525449eb0d16664121ce0b46bed429d4db0c3 100644 (file)
@@ -76,6 +76,8 @@ void replace_const_cells(RTLIL::Module *module)
                        if (input.match("11")) ACTION_DO_Y(1);
                        if (input.match(" *")) ACTION_DO_Y(x);
                        if (input.match("* ")) ACTION_DO_Y(x);
+                       if (input.match(" 1")) ACTION_DO("\\Y", input.extract(1, 1));
+                       if (input.match("1 ")) ACTION_DO("\\Y", input.extract(0, 1));
                }
 
                if (cell->type == "$_OR_") {
@@ -88,6 +90,8 @@ void replace_const_cells(RTLIL::Module *module)
                        if (input.match("00")) ACTION_DO_Y(0);
                        if (input.match(" *")) ACTION_DO_Y(x);
                        if (input.match("* ")) ACTION_DO_Y(x);
+                       if (input.match(" 0")) ACTION_DO("\\Y", input.extract(1, 1));
+                       if (input.match("0 ")) ACTION_DO("\\Y", input.extract(0, 1));
                }
 
                if (cell->type == "$_XOR_") {
@@ -101,6 +105,8 @@ void replace_const_cells(RTLIL::Module *module)
                        if (input.match("11")) ACTION_DO_Y(0);
                        if (input.match(" *")) ACTION_DO_Y(x);
                        if (input.match("* ")) ACTION_DO_Y(x);
+                       if (input.match(" 0")) ACTION_DO("\\Y", input.extract(1, 1));
+                       if (input.match("0 ")) ACTION_DO("\\Y", input.extract(0, 1));
                }
 
                if (cell->type == "$_MUX_") {