Connect CPOUTs

This commit is contained in:
Miodrag Milanovic 2025-07-03 11:57:23 +02:00
parent 77396c7597
commit 7d4d1b4b9c
2 changed files with 5 additions and 4 deletions

View File

@ -39,6 +39,7 @@ CellInfo *GateMatePacker::create_cell_ptr(IdString type, IdString name)
add_port(id_IN3, PORT_IN);
add_port(id_IN4, PORT_IN);
add_port(id_OUT, PORT_OUT);
add_port(id_CPOUT, PORT_OUT);
// These are used to propagate alternate inputs for first LUT2 levels
add_port(id_CINX, PORT_IN);
add_port(id_PINX, PORT_IN);

View File

@ -357,8 +357,8 @@ MultCell::MultCell(CellInfo *lower, CellInfo *upper, CellInfo *cplines, IdString
lower->params[id_C_C_P] = Property(0, 1);
}
upper->params[id_C_O1] = Property(0b10, 2); // CP_OUT1 -> OUT1
upper->params[id_C_O2] = Property(0b10, 2); // CP_OUT2 -> OUT2
//upper->params[id_C_O1] = Property(0b10, 2); // CP_OUT1 -> OUT1
//upper->params[id_C_O2] = Property(0b10, 2); // CP_OUT2 -> OUT2
}
MsbRoutingCell::MsbRoutingCell(CellInfo *lower, CellInfo *upper, CellInfo *comp, CellInfo *cplines, IdString name)
@ -912,14 +912,14 @@ void GateMatePacker::pack_mult()
auto &mult_cell = m.cols[p / 2].mults[0];
auto *cpe_half = (p % 2 == 1) ? mult_cell.upper : mult_cell.lower;
mult->movePortTo(ctx->idf("P[%d]", p), cpe_half, id_OUT);
mult->movePortTo(ctx->idf("P[%d]", p), cpe_half, id_CPOUT);
}
for (int p = 0; p < vertical_p_width; p++) {
auto &mult_cell = m.cols.back().mults[1 + (p / 2)];
auto *cpe_half = (p % 2 == 1) ? mult_cell.upper : mult_cell.lower;
mult->movePortTo(ctx->idf("P[%d]", p + diagonal_p_width), cpe_half, id_OUT);
mult->movePortTo(ctx->idf("P[%d]", p + diagonal_p_width), cpe_half, id_CPOUT);
}
// Clean up the multiplier.