aboutsummaryrefslogtreecommitdiffstats
path: root/ecp5/arch.cc
diff options
context:
space:
mode:
authorDavid Shah <davey1576@gmail.com>2018-07-17 16:18:06 +0200
committerDavid Shah <davey1576@gmail.com>2018-07-17 16:18:06 +0200
commit2b86800c0f7a66409d3d294b4e4d380594c2062e (patch)
treec2095285b17675e8d3204b0ce42c94f4b34172dc /ecp5/arch.cc
parent6c54d4f93c4f76db0280af73d9a84fcbde1d74f6 (diff)
downloadnextpnr-2b86800c0f7a66409d3d294b4e4d380594c2062e.tar.gz
nextpnr-2b86800c0f7a66409d3d294b4e4d380594c2062e.tar.bz2
nextpnr-2b86800c0f7a66409d3d294b4e4d380594c2062e.zip
ecp5: Adding a slow and conservative placement validity checker
Signed-off-by: David Shah <davey1576@gmail.com>
Diffstat (limited to 'ecp5/arch.cc')
-rw-r--r--ecp5/arch.cc19
1 files changed, 12 insertions, 7 deletions
diff --git a/ecp5/arch.cc b/ecp5/arch.cc
index cdffad69..0ffede3b 100644
--- a/ecp5/arch.cc
+++ b/ecp5/arch.cc
@@ -118,6 +118,14 @@ Arch::Arch(ArchArgs args) : args(args)
log_error("Unsupported ECP5 chip type.\n");
}
#endif
+
+ id_trellis_slice = id("TRELLIS_SLICE");
+ id_clk = id("CLK");
+ id_lsr = id("LSR");
+ id_clkmux = id("CLKMUX");
+ id_lsrmux = id("LSRMUX");
+ id_srmode = id("SRMODE");
+ id_mode = id("MODE");
}
// -----------------------------------------------------------------------
@@ -181,7 +189,10 @@ BelRange Arch::getBelsAtSameTile(BelId bel) const
br.b.cursor_tile = bel.location.y * chip_info->width + bel.location.x;
br.e.cursor_tile = bel.location.y * chip_info->width + bel.location.x;
br.b.cursor_index = 0;
- br.e.cursor_index = locInfo(bel)->num_bels;
+ br.e.cursor_index = locInfo(bel)->num_bels - 1;
+ br.b.chip = chip_info;
+ br.e.chip = chip_info;
+ ++br.e;
return br;
}
@@ -315,12 +326,6 @@ DecalXY Arch::getGroupDecal(GroupId pip) const { return {}; };
// -----------------------------------------------------------------------
-bool Arch::isValidBelForCell(CellInfo *cell, BelId bel) const { return true; }
-
-bool Arch::isBelLocationValid(BelId bel) const { return true; }
-
-// -----------------------------------------------------------------------
-
bool Arch::getCellDelay(const CellInfo *cell, IdString fromPort, IdString toPort, delay_t &delay) const
{
return false;