Fixed handling of inverters (aka 1-input luts) in nlutmap
authorClifford Wolf <clifford@clifford.at>
Wed, 23 Mar 2016 07:56:08 +0000 (08:56 +0100)
committerClifford Wolf <clifford@clifford.at>
Wed, 23 Mar 2016 07:56:08 +0000 (08:56 +0100)
passes/techmap/nlutmap.cc

index 7ece40059dcc56f5fd08d11134651fbd1188affd..f5e77722e4eee87e6a86b8c36d144718bdfa401c 100644 (file)
@@ -64,7 +64,7 @@ struct NlutmapWorker
        {
                vector<int> available_luts = config.luts;
 
-               while (!available_luts.empty())
+               while (GetSize(available_luts) > 1)
                {
                        int n_luts = available_luts.back();
                        int lut_size = GetSize(available_luts);
@@ -84,7 +84,7 @@ struct NlutmapWorker
                                if (cell->type != "$lut" || mapped_cells.count(cell))
                                        continue;
 
-                               if (GetSize(cell->getPort("\\A")) == lut_size)
+                               if (GetSize(cell->getPort("\\A")) == lut_size || lut_size == 2)
                                        candidate_ratings[cell] = 0;
 
                                for (auto &conn : cell->connections())