In read_xaiger, do not construct ConstEval for every LUT
authorEddie Hung <eddieh@ece.ubc.ca>
Sun, 17 Feb 2019 06:22:29 +0000 (22:22 -0800)
committerEddie Hung <eddieh@ece.ubc.ca>
Sun, 17 Feb 2019 06:22:29 +0000 (22:22 -0800)
frontends/aiger/aigerparse.cc

index dffbd3590d77c31cae451020c4a40f2e8f8a22b0..8014dd3032a4b1eadd1671b362026f4e050c7547 100644 (file)
@@ -290,6 +290,7 @@ void AigerReader::parse_xaiger()
                 uint32_t lutNum = parse_xaiger_literal(f);
                 uint32_t lutSize = parse_xaiger_literal(f);
                 log_debug("m: dataSize=%u lutNum=%u lutSize=%u\n", dataSize, lutNum, lutSize);
+                ConstEval ce(module);
                 for (unsigned i = 0; i < lutNum; ++i) {
                     uint32_t rootNodeID = parse_xaiger_literal(f);
                     uint32_t cutLeavesM = parse_xaiger_literal(f);
@@ -305,7 +306,6 @@ void AigerReader::parse_xaiger()
                         input_sig.append(wire);
                     }
                     RTLIL::Const lut_mask(RTLIL::State::Sx, 1 << input_sig.size());
-                    ConstEval ce(module);
                     for (int j = 0; j < (1 << cutLeavesM); ++j) {
                         ce.push();
                         ce.set(input_sig, RTLIL::Const{j, static_cast<int>(cutLeavesM)});