aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDavid Shah <dave@ds0.me>2020-11-17 16:18:42 +0000
committerDavid Shah <dave@ds0.me>2020-11-30 08:45:28 +0000
commitedd719c5c5d3aaf7892b4e950af9d9c8fec838f2 (patch)
tree4c03f8e7d360858c6d6b645af0784a823fe25227
parent91d746cfc83e3e78424ae079bc2bb36fa266788e (diff)
downloadnextpnr-edd719c5c5d3aaf7892b4e950af9d9c8fec838f2.tar.gz
nextpnr-edd719c5c5d3aaf7892b4e950af9d9c8fec838f2.tar.bz2
nextpnr-edd719c5c5d3aaf7892b4e950af9d9c8fec838f2.zip
nexus: ACC54 definitions
Signed-off-by: David Shah <dave@ds0.me>
-rw-r--r--nexus/constids.inc34
-rw-r--r--nexus/pack.cc32
-rw-r--r--nexus/pins.cc11
3 files changed, 77 insertions, 0 deletions
diff --git a/nexus/constids.inc b/nexus/constids.inc
index f1f255ee..cf19789c 100644
--- a/nexus/constids.inc
+++ b/nexus/constids.inc
@@ -328,3 +328,37 @@ X(REGINPUTC)
X(MULTPREADD9X9)
X(MULTPREADD18X18)
+
+X(REGPIPELINE)
+X(REGADDSUB)
+X(REGLOADC)
+X(REGLOADC2)
+X(REGCIN)
+
+X(ACC108CASCADE)
+X(ACCUBYPS)
+X(ACCUMODE)
+X(ADDSUBSIGNREGBYPS1)
+X(ADDSUBSIGNREGBYPS2)
+X(ADDSUBSIGNREGBYPS3)
+X(ADDSUB_CTRL)
+X(CASCOUTREGBYPS)
+X(CINREGBYPS1)
+X(CINREGBYPS2)
+X(CINREGBYPS3)
+X(CONSTSEL)
+X(CREGBYPS1)
+X(CREGBYPS2)
+X(CREGBYPS3)
+X(DSPCASCADE)
+X(LOADREGBYPS1)
+X(LOADREGBYPS2)
+X(LOADREGBYPS3)
+X(M9ADDSUBREGBYPS1)
+X(M9ADDSUBREGBYPS2)
+X(M9ADDSUBREGBYPS3)
+X(M9ADDSUB_CTRL)
+X(OUTREGBYPS)
+X(SIGN)
+X(STATICOPCODE_EN)
+X(PROGCONST)
diff --git a/nexus/pack.cc b/nexus/pack.cc
index e095afa6..48805267 100644
--- a/nexus/pack.cc
+++ b/nexus/pack.cc
@@ -1453,6 +1453,38 @@ struct NexusPacker
cell->params[id_GSR] = std::string("DISABLED");
cell->params[id_REGBYPS] = std::string("BYPASS");
cell->params[id_RESET] = std::string("SYNC");
+ } else if (type == id_ACC54_CORE) {
+ cell->params[id_ACC108CASCADE] = std::string("BYPASSCASCADE");
+ cell->params[id_ACCUBYPS] = std::string("USED");
+ cell->params[id_ACCUMODE] = std::string("MODE7");
+ cell->params[id_ADDSUBSIGNREGBYPS1] = std::string("REGISTER");
+ cell->params[id_ADDSUBSIGNREGBYPS2] = std::string("REGISTER");
+ cell->params[id_ADDSUBSIGNREGBYPS3] = std::string("BYPASS");
+ cell->params[id_ADDSUB_CTRL] = std::string("ADD_ADD_CTRL_54_BIT_ADDER");
+ cell->params[id_CASCOUTREGBYPS] = std::string("BYPASS");
+ cell->params[id_CINREGBYPS1] = std::string("REGISTER");
+ cell->params[id_CINREGBYPS2] = std::string("REGISTER");
+ cell->params[id_CINREGBYPS3] = std::string("BYPASS");
+ cell->params[id_CONSTSEL] = std::string("BYPASS");
+ cell->params[id_CREGBYPS1] = std::string("REGISTER");
+ cell->params[id_CREGBYPS2] = std::string("REGISTER");
+ cell->params[id_CREGBYPS3] = std::string("BYPASS");
+ cell->params[id_DSPCASCADE] = std::string("DISABLED");
+ cell->params[id_GSR] = std::string("DISABLED");
+ cell->params[id_LOADREGBYPS1] = std::string("REGISTER");
+ cell->params[id_LOADREGBYPS2] = std::string("REGISTER");
+ cell->params[id_LOADREGBYPS3] = std::string("BYPASS");
+ cell->params[id_M9ADDSUBREGBYPS1] = std::string("REGISTER");
+ cell->params[id_M9ADDSUBREGBYPS2] = std::string("REGISTER");
+ cell->params[id_M9ADDSUBREGBYPS3] = std::string("BYPASS");
+ cell->params[id_OUTREGBYPS] = std::string("REGISTER");
+ cell->params[id_RESET] = std::string("SYNC");
+ cell->params[id_ROUNDHALFUP] = std::string("DISABLED");
+ cell->params[id_ROUNDRTZI] = std::string("ROUND_TO_ZERO");
+ cell->params[id_ROUNDBIT] = std::string("ROUND_TO_BIT0");
+ cell->params[id_SFTEN] = std::string("DISABLED");
+ cell->params[id_SIGN] = std::string("DISABLED");
+ cell->params[id_STATICOPCODE_EN] = std::string("DISABLED");
}
return cell;
}
diff --git a/nexus/pins.cc b/nexus/pins.cc
index 78aa213e..0587c032 100644
--- a/nexus/pins.cc
+++ b/nexus/pins.cc
@@ -143,6 +143,17 @@ static const std::unordered_map<IdString, Arch::CellPinsData> base_cell_pin_data
{id_SFTCTRL3, PINSTYLE_PU},
{id_ROUNDEN, PINSTYLE_CIB},
{{}, PINSTYLE_DEDI},
+ }},
+ {id_ACC54_CORE,
+ {
+ {id_CLK, PINSTYLE_CLK}, {id_RSTC, PINSTYLE_LSR}, {id_CEC, PINSTYLE_CE},
+ {id_SIGNEDI, PINSTYLE_CIB}, {id_RSTCTRL, PINSTYLE_LSR}, {id_CECTRL, PINSTYLE_CE},
+ {id_RSTCIN, PINSTYLE_LSR}, {id_CECIN, PINSTYLE_CE}, {id_LOAD, PINSTYLE_CIB},
+ {id_ADDSUB0, PINSTYLE_CIB}, {id_ADDSUB1, PINSTYLE_CIB}, {id_M9ADDSUB0, PINSTYLE_PU},
+ {id_M9ADDSUB1, PINSTYLE_PU}, {id_ROUNDEN, PINSTYLE_CIB}, {id_RSTO, PINSTYLE_LSR},
+ {id_CEO, PINSTYLE_CE}, {id_CIN, PINSTYLE_CIB}, {id_SFTCTRL0, PINSTYLE_PU},
+ {id_SFTCTRL1, PINSTYLE_PU}, {id_SFTCTRL2, PINSTYLE_PU}, {id_SFTCTRL3, PINSTYLE_PU},
+ {{}, PINSTYLE_DEDI},
}}};
} // namespace