diff options
author | Pepijn de Vos <pepijndevos@gmail.com> | 2022-06-05 16:59:06 +0200 |
---|---|---|
committer | Pepijn de Vos <pepijndevos@gmail.com> | 2022-06-05 16:59:06 +0200 |
commit | 490dddf636bc50945ee6e6858f7c1942faa3aaf5 (patch) | |
tree | 379153bbfaffd6968dbe1def362e6e1fa72df036 /gowin/arch.cc | |
parent | 997af6d7202b08c457c56db958c5e39605e74295 (diff) | |
download | nextpnr-490dddf636bc50945ee6e6858f7c1942faa3aaf5.tar.gz nextpnr-490dddf636bc50945ee6e6858f7c1942faa3aaf5.tar.bz2 nextpnr-490dddf636bc50945ee6e6858f7c1942faa3aaf5.zip |
WIP shadowram
Diffstat (limited to 'gowin/arch.cc')
-rw-r--r-- | gowin/arch.cc | 36 |
1 files changed, 36 insertions, 0 deletions
diff --git a/gowin/arch.cc b/gowin/arch.cc index 4fc2cd43..d554bd64 100644 --- a/gowin/arch.cc +++ b/gowin/arch.cc @@ -791,6 +791,39 @@ 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) { @@ -1112,6 +1145,9 @@ 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); |