aboutsummaryrefslogtreecommitdiffstats
path: root/ecp5/cells.cc
diff options
context:
space:
mode:
authorDavid Shah <davey1576@gmail.com>2018-09-30 17:05:42 +0100
committerDavid Shah <davey1576@gmail.com>2018-09-30 17:06:06 +0100
commite81a95cf7e7c58f3a5ad5e3e9414b640e7a82232 (patch)
treeb44914f512bfe5b3576595c9ad0bf5a9737c0eed /ecp5/cells.cc
parent2628344298da8b86fd55a107cd3f0543dd5bfbc1 (diff)
downloadnextpnr-e81a95cf7e7c58f3a5ad5e3e9414b640e7a82232.tar.gz
nextpnr-e81a95cf7e7c58f3a5ad5e3e9414b640e7a82232.tar.bz2
nextpnr-e81a95cf7e7c58f3a5ad5e3e9414b640e7a82232.zip
ecp5: Add ccu2c_to_slice
Signed-off-by: David Shah <davey1576@gmail.com>
Diffstat (limited to 'ecp5/cells.cc')
-rw-r--r--ecp5/cells.cc27
1 files changed, 27 insertions, 0 deletions
diff --git a/ecp5/cells.cc b/ecp5/cells.cc
index 4465d4e4..4a83bb30 100644
--- a/ecp5/cells.cc
+++ b/ecp5/cells.cc
@@ -211,4 +211,31 @@ void lut_to_slice(Context *ctx, CellInfo *lut, CellInfo *lc, int index)
replace_port(lut, ctx->id("Z"), lc, ctx->id("F" + std::to_string(index)));
}
+void ccu2c_to_slice(Context *ctx, CellInfo *ccu, CellInfo *lc)
+{
+ lc->params[ctx->id("MODE")] = "CCU2C";
+ lc->params[ctx->id("LUT0_INITVAL")] = str_or_default(ccu->params, ctx->id("INIT0"), "0");
+ lc->params[ctx->id("LUT1_INITVAL")] = str_or_default(ccu->params, ctx->id("INIT1"), "0");
+
+ lc->params[ctx->id("INJECT1_0")] = str_or_default(ccu->params, ctx->id("INJECT1_0"), "YES");
+ lc->params[ctx->id("INJECT1_1")] = str_or_default(ccu->params, ctx->id("INJECT1_1"), "YES");
+
+ replace_port(ccu, ctx->id("CIN"), lc, ctx->id("FCI"));
+
+ replace_port(ccu, ctx->id("A0"), lc, ctx->id("A0"));
+ replace_port(ccu, ctx->id("B0"), lc, ctx->id("B0"));
+ replace_port(ccu, ctx->id("C0"), lc, ctx->id("C0"));
+ replace_port(ccu, ctx->id("D0"), lc, ctx->id("D0"));
+
+ replace_port(ccu, ctx->id("A1"), lc, ctx->id("A1"));
+ replace_port(ccu, ctx->id("B1"), lc, ctx->id("B1"));
+ replace_port(ccu, ctx->id("C1"), lc, ctx->id("C1"));
+ replace_port(ccu, ctx->id("D1"), lc, ctx->id("D1"));
+
+ replace_port(ccu, ctx->id("S0"), lc, ctx->id("F0"));
+ replace_port(ccu, ctx->id("S1"), lc, ctx->id("F1"));
+
+ replace_port(ccu, ctx->id("COUT"), lc, ctx->id("FCO"));
+}
+
NEXTPNR_NAMESPACE_END