abc: Fix {I} and {P} substitution
authorAnton Blanchard <anton@linux.ibm.com>
Wed, 23 Feb 2022 07:54:28 +0000 (18:54 +1100)
committerAnton Blanchard <anton@ozlabs.org>
Wed, 23 Feb 2022 07:54:28 +0000 (18:54 +1100)
We were searching for {D} after the first match of {I} or {P}.

passes/techmap/abc.cc

index 80c6282c4077a7abf047f788dfefeb27fb659c16..2c91f3a48cea1e185d5d3151108f9a2340554043 100644 (file)
@@ -757,10 +757,10 @@ void abc_module(RTLIL::Design *design, RTLIL::Module *current_module, std::strin
        for (size_t pos = abc_script.find("{D}"); pos != std::string::npos; pos = abc_script.find("{D}", pos))
                abc_script = abc_script.substr(0, pos) + delay_target + abc_script.substr(pos+3);
 
-       for (size_t pos = abc_script.find("{I}"); pos != std::string::npos; pos = abc_script.find("{D}", pos))
+       for (size_t pos = abc_script.find("{I}"); pos != std::string::npos; pos = abc_script.find("{I}", pos))
                abc_script = abc_script.substr(0, pos) + sop_inputs + abc_script.substr(pos+3);
 
-       for (size_t pos = abc_script.find("{P}"); pos != std::string::npos; pos = abc_script.find("{D}", pos))
+       for (size_t pos = abc_script.find("{P}"); pos != std::string::npos; pos = abc_script.find("{P}", pos))
                abc_script = abc_script.substr(0, pos) + sop_products + abc_script.substr(pos+3);
 
        for (size_t pos = abc_script.find("{S}"); pos != std::string::npos; pos = abc_script.find("{S}", pos))