1
0
mirror of https://github.com/YosysHQ/nextpnr.git synced 2026-02-26 17:03:36 +00:00

gatemate: special case RAMIO when needed (#1536)

This commit is contained in:
Miodrag Milanović
2025-08-21 15:11:08 +02:00
committed by GitHub
parent 82f8ff7cad
commit e598b2f4d9

View File

@@ -812,8 +812,13 @@ std::pair<CellInfo *, CellInfo *> GateMatePacker::move_ram_io(CellInfo *cell, Id
if (!i_net && !o_net)
return std::make_pair(nullptr, nullptr);
IdString ram_io_type = id_CPE_RAMIO;
if (!o_net)
ram_io_type = id_CPE_RAMI;
if (!i_net)
ram_io_type = id_CPE_RAMO;
CellInfo *cpe_ramio =
create_cell_ptr(id_CPE_RAMIO, ctx->idf("%s$%s_ramio", cell->name.c_str(ctx), oPort.c_str(ctx)));
create_cell_ptr(ram_io_type, ctx->idf("%s$%s_ramio", cell->name.c_str(ctx), oPort.c_str(ctx)));
if (place) {
cell->constr_children.push_back(cpe_ramio);
cpe_ramio->cluster = cell->cluster;
@@ -823,7 +828,8 @@ std::pair<CellInfo *, CellInfo *> GateMatePacker::move_ram_io(CellInfo *cell, Id
BelId b = ctx->getBelByLocation(cpe_loc);
ctx->bindBel(b, cpe_ramio, PlaceStrength::STRENGTH_FIXED);
}
CellInfo *cpe_half = create_cell_ptr(id_CPE_L2T4, ctx->idf("%s$%s_cpe", cell->name.c_str(ctx), oPort.c_str(ctx)));
CellInfo *cpe_half = create_cell_ptr(o_net ? id_CPE_L2T4 : id_CPE_DUMMY,
ctx->idf("%s$%s_cpe", cell->name.c_str(ctx), oPort.c_str(ctx)));
if (place) {
cpe_ramio->constr_children.push_back(cpe_half);
cpe_half->cluster = cell->cluster;