This commit is contained in:
Miodrag Milanovic 2024-07-08 09:46:09 +02:00
parent 1f96a5f5d7
commit ca214d4d5d

View File

@ -29,22 +29,21 @@ std::unique_ptr<CellInfo> NgUltraPacker::create_cell(IdString type, IdString nam
{
auto cell = std::make_unique<CellInfo>(ctx, name, type);
auto add_port = [&](const std::string &name, PortType dir) {
IdString id = ctx->id(name);
auto add_port = [&](const IdString id, PortType dir) {
cell->ports[id].name = id;
cell->ports[id].type = dir;
};
if (type == id_BEYOND_FE) {
add_port("I1", PORT_IN);
add_port("I2", PORT_IN);
add_port("I3", PORT_IN);
add_port("I4", PORT_IN);
add_port("LO", PORT_OUT);
add_port("DI", PORT_IN);
add_port("L", PORT_IN);
add_port("CK", PORT_IN);
add_port("R", PORT_IN);
add_port("DO", PORT_OUT);
add_port(id_I1, PORT_IN);
add_port(id_I2, PORT_IN);
add_port(id_I3, PORT_IN);
add_port(id_I4, PORT_IN);
add_port(id_LO, PORT_OUT);
add_port(id_DI, PORT_IN);
add_port(id_L, PORT_IN);
add_port(id_CK, PORT_IN);
add_port(id_R, PORT_IN);
add_port(id_DO, PORT_OUT);
} else {
log_error("Trying to create unknown cell type %s\n", type.c_str(ctx));
}
@ -55,53 +54,52 @@ CellInfo *NgUltraPacker::create_cell_ptr(IdString type, IdString name)
{
CellInfo *cell = ctx->createCell(name, type);
auto add_port = [&](const std::string &name, PortType dir) {
IdString id = ctx->id(name);
auto add_port = [&](const IdString id, PortType dir) {
cell->ports[id].name = id;
cell->ports[id].type = dir;
};
if (type == id_BEYOND_FE) {
add_port("I1", PORT_IN);
add_port("I2", PORT_IN);
add_port("I3", PORT_IN);
add_port("I4", PORT_IN);
add_port("LO", PORT_OUT);
add_port("DI", PORT_IN);
add_port("L", PORT_IN);
add_port("CK", PORT_IN);
add_port("R", PORT_IN);
add_port("DO", PORT_OUT);
add_port(id_I1, PORT_IN);
add_port(id_I2, PORT_IN);
add_port(id_I3, PORT_IN);
add_port(id_I4, PORT_IN);
add_port(id_LO, PORT_OUT);
add_port(id_DI, PORT_IN);
add_port(id_L, PORT_IN);
add_port(id_CK, PORT_IN);
add_port(id_R, PORT_IN);
add_port(id_DO, PORT_OUT);
} else if (type == id_BFR) {
add_port("I", PORT_IN);
add_port("O", PORT_OUT);
add_port(id_I, PORT_IN);
add_port(id_O, PORT_OUT);
} else if (type == id_DFR) {
add_port("I", PORT_IN);
add_port("O", PORT_OUT);
add_port("L", PORT_IN);
add_port("CK", PORT_IN);
add_port("R", PORT_IN);
add_port(id_I, PORT_IN);
add_port(id_O, PORT_OUT);
add_port(id_L, PORT_IN);
add_port(id_CK, PORT_IN);
add_port(id_R, PORT_IN);
} else if (type == id_DDFR) {
add_port("I", PORT_IN);
add_port("O", PORT_OUT);
add_port("L", PORT_IN);
add_port("CK", PORT_IN);
add_port("R", PORT_IN);
add_port("I2", PORT_IN);
add_port("O2", PORT_OUT);
add_port("CKF", PORT_IN);
add_port(id_I, PORT_IN);
add_port(id_O, PORT_OUT);
add_port(id_L, PORT_IN);
add_port(id_CK, PORT_IN);
add_port(id_R, PORT_IN);
add_port(id_I2, PORT_IN);
add_port(id_O2, PORT_OUT);
add_port(id_CKF, PORT_IN);
} else if (type == id_IOM) {
add_port("P17RI", PORT_IN);
add_port("CKO1", PORT_OUT);
add_port("P19RI", PORT_IN);
add_port("CKO2", PORT_OUT);
add_port(id_P17RI, PORT_IN);
add_port(id_CKO1, PORT_OUT);
add_port(id_P19RI, PORT_IN);
add_port(id_CKO2, PORT_OUT);
} else if (type == id_WFB) {
add_port("ZI", PORT_IN);
add_port("ZO", PORT_OUT);
add_port(id_ZI, PORT_IN);
add_port(id_ZO, PORT_OUT);
} else if (type == id_GCK) {
add_port("SI1", PORT_IN);
add_port("SI2", PORT_IN);
add_port("CMD", PORT_IN);
add_port("SO", PORT_OUT);
add_port(id_SI1, PORT_IN);
add_port(id_SI2, PORT_IN);
add_port(id_CMD, PORT_IN);
add_port(id_SO, PORT_OUT);
} else {
log_error("Trying to create unknown cell type %s\n", type.c_str(ctx));
}