diff options
Diffstat (limited to 'gowin/arch.cc')
-rw-r--r-- | gowin/arch.cc | 64 |
1 files changed, 28 insertions, 36 deletions
diff --git a/gowin/arch.cc b/gowin/arch.cc index d554bd64..cba492ab 100644 --- a/gowin/arch.cc +++ b/gowin/arch.cc @@ -791,39 +791,6 @@ void Arch::read_cst(std::istream &in) settings[id_cst] = 1; } -void Arch::addShadowRamBels(const DatabasePOD *db, int row, int col) -{ - IdString belname, bel_id; - char buf[32]; - snprintf(buf, 32, "R%dC%d_RAMW", row + 1, col + 1); - belname = id(buf); - addBel(belname, id_RAMW, Loc(col, row, BelZ::lutram_0_z), false); - - snprintf(buf, 32, "R%dC%d_A%d", row + 1, col + 1, 4); - addBelInput(belname, id_A4, id(buf)); - snprintf(buf, 32, "R%dC%d_B%d", row + 1, col + 1, 4); - addBelInput(belname, id_B4, id(buf)); - snprintf(buf, 32, "R%dC%d_C%d", row + 1, col + 1, 4); - addBelInput(belname, id_C4, id(buf)); - snprintf(buf, 32, "R%dC%d_D%d", row + 1, col + 1, 4); - addBelInput(belname, id_D4, id(buf)); - - snprintf(buf, 32, "R%dC%d_A%d", row + 1, col + 1, 5); - addBelInput(belname, id_A5, id(buf)); - snprintf(buf, 32, "R%dC%d_B%d", row + 1, col + 1, 5); - addBelInput(belname, id_B5, id(buf)); - snprintf(buf, 32, "R%dC%d_C%d", row + 1, col + 1, 5); - addBelInput(belname, id_C5, id(buf)); - snprintf(buf, 32, "R%dC%d_D%d", row + 1, col + 1, 5); - addBelInput(belname, id_D5, id(buf)); - - snprintf(buf, 32, "R%dC%d_CLK%d", row + 1, col + 1, 2); - addBelInput(belname, id_CLK, id(buf)); - snprintf(buf, 32, "R%dC%d_LSR%d", row + 1, col + 1, 2); - addBelInput(belname, id_LSR, id(buf)); -} - - // Add all MUXes for the cell void Arch::addMuxBels(const DatabasePOD *db, int row, int col) { @@ -1100,6 +1067,34 @@ Arch::Arch(ArchArgs args) : args(args) snprintf(buf, 32, "R%dC%d_%s", row + 1, col + 1, portname.c_str(this)); addBelInput(belname, id_OSCEN, id(buf)); break; + case ID_RAM16: + snprintf(buf, 32, "R%dC%d_RAMW", row + 1, col + 1); + belname = id(buf); + addBel(belname, id_RAMW, Loc(col, row, BelZ::lutram_0_z), false); + + snprintf(buf, 32, "R%dC%d_A%d", row + 1, col + 1, 4); + addBelInput(belname, id_A4, id(buf)); + snprintf(buf, 32, "R%dC%d_B%d", row + 1, col + 1, 4); + addBelInput(belname, id_B4, id(buf)); + snprintf(buf, 32, "R%dC%d_C%d", row + 1, col + 1, 4); + addBelInput(belname, id_C4, id(buf)); + snprintf(buf, 32, "R%dC%d_D%d", row + 1, col + 1, 4); + addBelInput(belname, id_D4, id(buf)); + + snprintf(buf, 32, "R%dC%d_A%d", row + 1, col + 1, 5); + addBelInput(belname, id_A5, id(buf)); + snprintf(buf, 32, "R%dC%d_B%d", row + 1, col + 1, 5); + addBelInput(belname, id_B5, id(buf)); + snprintf(buf, 32, "R%dC%d_C%d", row + 1, col + 1, 5); + addBelInput(belname, id_C5, id(buf)); + snprintf(buf, 32, "R%dC%d_D%d", row + 1, col + 1, 5); + addBelInput(belname, id_D5, id(buf)); + + snprintf(buf, 32, "R%dC%d_CLK%d", row + 1, col + 1, 2); + addBelInput(belname, id_CLK, id(buf)); + snprintf(buf, 32, "R%dC%d_LSR%d", row + 1, col + 1, 2); + addBelInput(belname, id_LSR, id(buf)); + break; // fall through the ++ case ID_LUT7: z++; @@ -1145,9 +1140,6 @@ Arch::Arch(ArchArgs args) : args(args) if (z == 0) { addMuxBels(db, row, col); } - if (z == 4) { - addShadowRamBels(db, row, col); - } if (z % 2 == 0) { snprintf(buf, 32, "R%dC%d_LUT_GRP%d", row + 1, col + 1, z); grpname = id(buf); |