Clean more ids

This commit is contained in:
Miodrag Milanovic 2025-12-18 10:25:48 +01:00
parent 4fc79d6674
commit 34ae87ffb6
2 changed files with 32 additions and 24 deletions

View File

@ -2500,6 +2500,14 @@ X(2B)
X(DIE)
X(GATEMATE_DIE)
// LUT permutation
X(LUT2_00)
X(LUT2_01)
X(LUT2_02)
X(LUT2_03)
X(LUT2_10)
X(LUT2_11)
// Timing
X(timing_ADDF2x_IN5_8_comb2)
X(timing_CIN_C_CINI)

View File

@ -524,52 +524,52 @@ void GateMateImpl::postRoute()
check_input(cell.second.get(), id_D1_01, false);
check_input(cell.second.get(), id_D0_10, false);
check_input(cell.second.get(), id_D1_10, false);
if (cfg.count(ctx->id("LUT2_11")) || cfg.count(ctx->id("LUT2_10"))) {
if (cfg.count(ctx->id("LUT2_11"))) { // lower
if (cfg.count(ctx->id("LUT2_02")) && !cfg.count(ctx->id("LUT2_03"))) {
if (cfg.count(id_LUT2_11) || cfg.count(id_LUT2_10)) {
if (cfg.count(id_LUT2_11)) { // lower
if (cfg.count(id_LUT2_02) && !cfg.count(id_LUT2_03)) {
// both inputs on 02
l00 = l10; // config is now in 02
l10 = 0b1010; // LUT_D0 - we propagate only
} else if (!cfg.count(ctx->id("LUT2_02")) && cfg.count(ctx->id("LUT2_03"))) {
} else if (!cfg.count(id_LUT2_02) && cfg.count(id_LUT2_03)) {
// both inputs on 03
l01 = l10; // config is now in 03
l10 = 0b1010; // LUT_D0 - we propagate only
} else {
// one input on 02, other on 03 (or LUT1)
if (cfg.count(ctx->id("LUT2_02")))
if (cfg.count(id_LUT2_02))
l00 = 0b1010; // LUT_D0 - we propagate only
if (cfg.count(ctx->id("LUT2_03")))
if (cfg.count(id_LUT2_03))
l01 = 0b1010; // LUT_D0 - we propagate only
}
if (cfg.at(ctx->id("LUT2_11")) == 1)
if (cfg.at(id_LUT2_11) == 1)
l10 = swap_lut2_inputs(l10);
if (cfg.count(ctx->id("LUT2_02")) && (cfg.at(ctx->id("LUT2_02")) == 1))
if (cfg.count(id_LUT2_02) && (cfg.at(id_LUT2_02) == 1))
l00 = swap_lut2_inputs(l00);
if (cfg.count(ctx->id("LUT2_03")) && (cfg.at(ctx->id("LUT2_03")) == 1))
if (cfg.count(id_LUT2_03) && (cfg.at(id_LUT2_03) == 1))
l01 = swap_lut2_inputs(l01);
} else { // upper part
if (cfg.count(ctx->id("LUT2_00")) && !cfg.count(ctx->id("LUT2_01"))) {
if (cfg.count(id_LUT2_00) && !cfg.count(id_LUT2_01)) {
// both inputs on 02
l00 = l10; // config is now in 02
l10 = 0b1010; // LUT_D0 - we propagate only
} else if (!cfg.count(ctx->id("LUT2_00")) && cfg.count(ctx->id("LUT2_01"))) {
} else if (!cfg.count(id_LUT2_00) && cfg.count(id_LUT2_01)) {
// both inputs on 03
l01 = l10; // config is now in 03
l10 = 0b1010; // LUT_D0 - we propagate only
} else {
// one input on 02, other on 03 (or LUT1)
if (cfg.count(ctx->id("LUT2_00")))
if (cfg.count(id_LUT2_00))
l00 = 0b1010; // LUT_D0 - we propagate only
if (cfg.count(ctx->id("LUT2_01")))
if (cfg.count(id_LUT2_01))
l01 = 0b1010; // LUT_D0 - we propagate only
}
if (cfg.at(ctx->id("LUT2_10")) == 1)
if (cfg.at(id_LUT2_10) == 1)
l10 = swap_lut2_inputs(l10);
if (cfg.count(ctx->id("LUT2_00")) && (cfg.at(ctx->id("LUT2_00")) == 1))
if (cfg.count(id_LUT2_00) && (cfg.at(id_LUT2_00) == 1))
l00 = swap_lut2_inputs(l00);
if (cfg.count(ctx->id("LUT2_01")) && (cfg.at(ctx->id("LUT2_01")) == 1))
if (cfg.count(id_LUT2_01) && (cfg.at(id_LUT2_01) == 1))
l01 = swap_lut2_inputs(l01);
}
cell.second->params[id_INIT_L00] = Property(l00, 4);
@ -579,13 +579,13 @@ void GateMateImpl::postRoute()
cell.second->renamePort(id_D0_10, port_mapping[id_D0_10]);
cell.second->renamePort(id_D1_10, port_mapping[id_D1_10]);
} else {
if (cfg.count(ctx->id("LUT2_00")) && cfg.at(ctx->id("LUT2_00")) == 1)
if (cfg.count(id_LUT2_00) && cfg.at(id_LUT2_00) == 1)
l00 = swap_lut2_inputs(l00);
if (cfg.count(ctx->id("LUT2_01")) && cfg.at(ctx->id("LUT2_01")) == 1)
if (cfg.count(id_LUT2_01) && cfg.at(id_LUT2_01) == 1)
l01 = swap_lut2_inputs(l01);
if (cfg.count(ctx->id("LUT2_02")) && cfg.at(ctx->id("LUT2_02")) == 1)
if (cfg.count(id_LUT2_02) && cfg.at(id_LUT2_02) == 1)
l00 = swap_lut2_inputs(l00);
if (cfg.count(ctx->id("LUT2_03")) && cfg.at(ctx->id("LUT2_03")) == 1)
if (cfg.count(id_LUT2_03) && cfg.at(id_LUT2_03) == 1)
l01 = swap_lut2_inputs(l01);
cell.second->params[id_INIT_L00] = Property(l00, 4);
@ -616,13 +616,13 @@ void GateMateImpl::postRoute()
check_input(cell.second.get(), id_D0_03, true);
check_input(cell.second.get(), id_D1_03, true);
if (cfg.count(ctx->id("LUT2_00")) && cfg.at(ctx->id("LUT2_00")) == 1)
if (cfg.count(id_LUT2_00) && cfg.at(id_LUT2_00) == 1)
l00 = swap_lut2_inputs(l00);
if (cfg.count(ctx->id("LUT2_01")) && cfg.at(ctx->id("LUT2_01")) == 1)
if (cfg.count(id_LUT2_01) && cfg.at(id_LUT2_01) == 1)
l01 = swap_lut2_inputs(l01);
if (cfg.count(ctx->id("LUT2_02")) && cfg.at(ctx->id("LUT2_02")) == 1)
if (cfg.count(id_LUT2_02) && cfg.at(id_LUT2_02) == 1)
l02 = swap_lut2_inputs(l02);
if (cfg.count(ctx->id("LUT2_03")) && cfg.at(ctx->id("LUT2_03")) == 1)
if (cfg.count(id_LUT2_03) && cfg.at(id_LUT2_03) == 1)
l03 = swap_lut2_inputs(l03);
cell.second->params[id_INIT_L00] = Property(l00, 4);