aboutsummaryrefslogtreecommitdiffstats
path: root/ecp5
diff options
context:
space:
mode:
authorDavid Shah <dave@ds0.me>2020-04-10 08:25:16 +0100
committerDavid Shah <dave@ds0.me>2020-04-10 08:25:16 +0100
commita8111bba830524fd7d572836d07d72a137cc32f0 (patch)
tree2afab223eb0aff285249ca0efc67f8b8c0f132c5 /ecp5
parentced336492ce3b157cabf265edc5cb79abca4bdf1 (diff)
downloadnextpnr-a8111bba830524fd7d572836d07d72a137cc32f0.tar.gz
nextpnr-a8111bba830524fd7d572836d07d72a137cc32f0.tar.bz2
nextpnr-a8111bba830524fd7d572836d07d72a137cc32f0.zip
ecp5: Fix routing bitgen for non-SERDES 'VCIB' tiles
Signed-off-by: David Shah <dave@ds0.me>
Diffstat (limited to 'ecp5')
-rw-r--r--ecp5/bitstream.cc15
1 files changed, 12 insertions, 3 deletions
diff --git a/ecp5/bitstream.cc b/ecp5/bitstream.cc
index d46bbe33..8dfd1f8c 100644
--- a/ecp5/bitstream.cc
+++ b/ecp5/bitstream.cc
@@ -446,9 +446,10 @@ void fix_tile_names(Context *ctx, ChipConfig &cc)
auto cibdcu = tile.first.find("CIB_DCU");
if (cibdcu != std::string::npos) {
// Add the V
- if (newname.at(cibdcu - 1) != 'V')
+ if (newname.at(cibdcu - 1) != 'V') {
newname.insert(cibdcu, 1, 'V');
- tiletype_xform[tile.first] = newname;
+ tiletype_xform[tile.first] = newname;
+ }
} else if (boost::ends_with(tile.first, "BMID_0H")) {
newname.back() = 'V';
tiletype_xform[tile.first] = newname;
@@ -459,7 +460,15 @@ void fix_tile_names(Context *ctx, ChipConfig &cc)
}
// Apply the name changes
for (auto xform : tiletype_xform) {
- cc.tiles[xform.second] = cc.tiles.at(xform.first);
+ auto &existing = cc.tiles.at(xform.first);
+ for (const auto &carc : existing.carcs)
+ cc.tiles[xform.second].carcs.push_back(carc);
+ for (const auto &cenum : existing.cenums)
+ cc.tiles[xform.second].cenums.push_back(cenum);
+ for (const auto &cword : existing.cwords)
+ cc.tiles[xform.second].cwords.push_back(cword);
+ for (const auto &cunknown : existing.cunknowns)
+ cc.tiles[xform.second].cunknowns.push_back(cunknown);
cc.tiles.erase(xform.first);
}
}