aboutsummaryrefslogtreecommitdiffstats
path: root/ecp5/cells.cc
diff options
context:
space:
mode:
authorDavid Shah <dave@ds0.me>2018-12-14 14:59:14 +0000
committerDavid Shah <dave@ds0.me>2018-12-14 14:59:14 +0000
commit9dc845b20d74031cd7bb4a520fc241d086befe77 (patch)
tree987db547448a7db7317254fbb857d97c2f2c8774 /ecp5/cells.cc
parent36b1650df71f750df06e07c3af737bb118bced22 (diff)
downloadnextpnr-9dc845b20d74031cd7bb4a520fc241d086befe77.tar.gz
nextpnr-9dc845b20d74031cd7bb4a520fc241d086befe77.tar.bz2
nextpnr-9dc845b20d74031cd7bb4a520fc241d086befe77.zip
ecp5: Add ODDR packing
Signed-off-by: David Shah <dave@ds0.me>
Diffstat (limited to 'ecp5/cells.cc')
-rw-r--r--ecp5/cells.cc7
1 files changed, 6 insertions, 1 deletions
diff --git a/ecp5/cells.cc b/ecp5/cells.cc
index fee1d982..58d4797c 100644
--- a/ecp5/cells.cc
+++ b/ecp5/cells.cc
@@ -127,11 +127,17 @@ std::unique_ptr<CellInfo> create_ecp5_cell(Context *ctx, IdString type, std::str
} else if (type == ctx->id("TRELLIS_IO")) {
new_cell->params[ctx->id("DIR")] = "INPUT";
new_cell->attrs[ctx->id("IO_TYPE")] = "LVCMOS33";
+ new_cell->params[ctx->id("DATAMUX_ODDR")] = "PADDO";
+ new_cell->params[ctx->id("DATAMUX_MDDR")] = "PADDO";
add_port(ctx, new_cell.get(), "B", PORT_INOUT);
add_port(ctx, new_cell.get(), "I", PORT_IN);
add_port(ctx, new_cell.get(), "T", PORT_IN);
add_port(ctx, new_cell.get(), "O", PORT_OUT);
+
+ add_port(ctx, new_cell.get(), "IOLDO", PORT_IN);
+ add_port(ctx, new_cell.get(), "IOLTO", PORT_IN);
+
} else if (type == ctx->id("LUT4")) {
new_cell->params[ctx->id("INIT")] = "0";
@@ -179,7 +185,6 @@ std::unique_ptr<CellInfo> create_ecp5_cell(Context *ctx, IdString type, std::str
new_cell->params[ctx->id("DELAY.DEL_VALUE")] = "0";
new_cell->params[ctx->id("DELAY.WAIT_FOR_EDGE")] = "DISABLED";
- new_cell->params[ctx->id("DATAMUX_ODDR")] = "PADDO";
if (type == id_IOLOGIC) {
new_cell->params[ctx->id("IDDRXN.MODE")] = "NONE";
new_cell->params[ctx->id("ODDRXN.MODE")] = "NONE";