-unwrap to create $lut not SB_LUT4 for opt_lut
authorEddie Hung <eddie@fpgeh.com>
Mon, 9 Dec 2019 21:27:09 +0000 (13:27 -0800)
committerEddie Hung <eddie@fpgeh.com>
Mon, 9 Dec 2019 21:27:09 +0000 (13:27 -0800)
passes/pmgen/ice40_wrapcarry.cc

index 8c953308add5458bfa392a29d76bac7c1432be98..4bddece30d3d703cd8a309da269bb81a8843f382 100644 (file)
@@ -115,13 +115,11 @@ struct Ice40WrapCarryPass : public Pass {
                                        carry->setPort(ID(CO), cell->getPort(ID(CO)));
                                        module->swap_names(carry, cell);
                                        auto lut_name = cell->attributes.at(ID(SB_LUT4.name), Const(NEW_ID.str())).decode_string();
-                                       auto lut = module->addCell(lut_name, ID(SB_LUT4));
-                                       lut->setParam(ID(LUT_INIT), cell->getParam(ID(LUT)));
-                                       lut->setPort(ID(I0), cell->getPort(ID(I0)));
-                                       lut->setPort(ID(I1), cell->getPort(ID(A)));
-                                       lut->setPort(ID(I2), cell->getPort(ID(B)));
-                                       lut->setPort(ID(I3), cell->getPort(ID(I3)));
-                                       lut->setPort(ID(O), cell->getPort(ID(O)));
+                                       auto lut = module->addCell(lut_name, ID($lut));
+                                       lut->setParam(ID(WIDTH), 4);
+                                       lut->setParam(ID(LUT), cell->getParam(ID(LUT)));
+                                       lut->setPort(ID(A), {cell->getPort(ID(I0)), cell->getPort(ID(A)), cell->getPort(ID(B)), cell->getPort(ID(I3)) });
+                                       lut->setPort(ID(Y), cell->getPort(ID(O)));
 
                                        for (const auto &a : cell->attributes)
                                                if (a.first.begins_with("\\SB_CARRY.\\"))