mirror of
https://github.com/YosysHQ/yosys
synced 2025-08-04 10:20:24 +00:00
kernel: big fat patch to use more ID::*, otherwise ID(*)
This commit is contained in:
parent
2d86563bb2
commit
956ecd48f7
152 changed files with 4503 additions and 4391 deletions
|
@ -37,26 +37,26 @@ void create_ice40_wrapcarry(ice40_wrapcarry_pm &pm)
|
|||
|
||||
log(" replacing SB_LUT + SB_CARRY with $__ICE40_CARRY_WRAPPER cell.\n");
|
||||
|
||||
Cell *cell = pm.module->addCell(NEW_ID, "$__ICE40_CARRY_WRAPPER");
|
||||
Cell *cell = pm.module->addCell(NEW_ID, ID($__ICE40_CARRY_WRAPPER));
|
||||
pm.module->swap_names(cell, st.carry);
|
||||
|
||||
cell->setPort(ID::A, st.carry->getPort("\\I0"));
|
||||
cell->setPort(ID::B, st.carry->getPort("\\I1"));
|
||||
auto CI = st.carry->getPort("\\CI");
|
||||
cell->setPort("\\CI", CI);
|
||||
cell->setPort("\\CO", st.carry->getPort("\\CO"));
|
||||
cell->setPort(ID::A, st.carry->getPort(ID(I0)));
|
||||
cell->setPort(ID::B, st.carry->getPort(ID(I1)));
|
||||
auto CI = st.carry->getPort(ID::CI);
|
||||
cell->setPort(ID::CI, CI);
|
||||
cell->setPort(ID::CO, st.carry->getPort(ID::CO));
|
||||
|
||||
cell->setPort("\\I0", st.lut->getPort("\\I0"));
|
||||
auto I3 = st.lut->getPort("\\I3");
|
||||
cell->setPort(ID(I0), st.lut->getPort(ID(I0)));
|
||||
auto I3 = st.lut->getPort(ID(I3));
|
||||
if (pm.sigmap(CI) == pm.sigmap(I3)) {
|
||||
cell->setParam("\\I3_IS_CI", State::S1);
|
||||
cell->setParam(ID(I3_IS_CI), State::S1);
|
||||
I3 = State::Sx;
|
||||
}
|
||||
else
|
||||
cell->setParam("\\I3_IS_CI", State::S0);
|
||||
cell->setPort("\\I3", I3);
|
||||
cell->setPort("\\O", st.lut->getPort("\\O"));
|
||||
cell->setParam("\\LUT", st.lut->getParam("\\LUT_INIT"));
|
||||
cell->setParam(ID(I3_IS_CI), State::S0);
|
||||
cell->setPort(ID(I3), I3);
|
||||
cell->setPort(ID::O, st.lut->getPort(ID::O));
|
||||
cell->setParam(ID::LUT, st.lut->getParam(ID(LUT_INIT)));
|
||||
|
||||
for (const auto &a : st.carry->attributes)
|
||||
cell->attributes[stringf("\\SB_CARRY.%s", a.first.c_str())] = a.second;
|
||||
|
@ -117,18 +117,18 @@ struct Ice40WrapCarryPass : public Pass {
|
|||
continue;
|
||||
|
||||
auto carry = module->addCell(NEW_ID, ID(SB_CARRY));
|
||||
carry->setPort(ID(I0), cell->getPort(ID(A)));
|
||||
carry->setPort(ID(I1), cell->getPort(ID(B)));
|
||||
carry->setPort(ID(CI), cell->getPort(ID(CI)));
|
||||
carry->setPort(ID(CO), cell->getPort(ID(CO)));
|
||||
carry->setPort(ID(I0), cell->getPort(ID::A));
|
||||
carry->setPort(ID(I1), cell->getPort(ID::B));
|
||||
carry->setPort(ID::CI, cell->getPort(ID::CI));
|
||||
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($lut));
|
||||
lut->setParam(ID(WIDTH), 4);
|
||||
lut->setParam(ID(LUT), cell->getParam(ID(LUT)));
|
||||
auto I3 = cell->getPort(cell->getParam(ID(I3_IS_CI)).as_bool() ? ID(CI) : ID(I3));
|
||||
lut->setPort(ID(A), { I3, cell->getPort(ID(B)), cell->getPort(ID(A)), cell->getPort(ID(I0)) });
|
||||
lut->setPort(ID(Y), cell->getPort(ID(O)));
|
||||
lut->setParam(ID::WIDTH, 4);
|
||||
lut->setParam(ID::LUT, cell->getParam(ID::LUT));
|
||||
auto I3 = cell->getPort(cell->getParam(ID(I3_IS_CI)).as_bool() ? ID::CI : ID(I3));
|
||||
lut->setPort(ID::A, { I3, cell->getPort(ID::B), cell->getPort(ID::A), cell->getPort(ID(I0)) });
|
||||
lut->setPort(ID::Y, cell->getPort(ID::O));
|
||||
|
||||
Const src;
|
||||
for (const auto &a : cell->attributes)
|
||||
|
@ -136,16 +136,16 @@ struct Ice40WrapCarryPass : public Pass {
|
|||
carry->attributes[a.first.c_str() + strlen("\\SB_CARRY.")] = a.second;
|
||||
else if (a.first.begins_with("\\SB_LUT4.\\"))
|
||||
lut->attributes[a.first.c_str() + strlen("\\SB_LUT4.")] = a.second;
|
||||
else if (a.first == ID(src))
|
||||
else if (a.first == ID::src)
|
||||
src = a.second;
|
||||
else if (a.first.in(ID(SB_LUT4.name), ID::keep, ID(module_not_derived)))
|
||||
else if (a.first.in(ID(SB_LUT4.name), ID::keep, ID::module_not_derived))
|
||||
continue;
|
||||
else
|
||||
log_abort();
|
||||
|
||||
if (!src.empty()) {
|
||||
carry->attributes.insert(std::make_pair(ID(src), src));
|
||||
lut->attributes.insert(std::make_pair(ID(src), src));
|
||||
carry->attributes.insert(std::make_pair(ID::src, src));
|
||||
lut->attributes.insert(std::make_pair(ID::src, src));
|
||||
}
|
||||
|
||||
module->remove(cell);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue