aboutsummaryrefslogtreecommitdiffstats
path: root/gowin/arch.cc
diff options
context:
space:
mode:
Diffstat (limited to 'gowin/arch.cc')
-rw-r--r--gowin/arch.cc64
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);