aboutsummaryrefslogtreecommitdiffstats
path: root/gowin/arch.cc
diff options
context:
space:
mode:
authorgatecat <gatecat@ds0.me>2021-02-17 16:03:03 +0000
committergatecat <gatecat@ds0.me>2021-02-17 16:03:03 +0000
commita8c55728e2f10ef2d92369ee120640b76cbe3ff2 (patch)
tree8e10cf358eb43aaef617f34ac66b2fa2ca2c75a3 /gowin/arch.cc
parent18113ff43d318047fe166dcff91588bc9a195bd0 (diff)
downloadnextpnr-a8c55728e2f10ef2d92369ee120640b76cbe3ff2.tar.gz
nextpnr-a8c55728e2f10ef2d92369ee120640b76cbe3ff2.tar.bz2
nextpnr-a8c55728e2f10ef2d92369ee120640b76cbe3ff2.zip
gowin: Fix archcheck errors and add to CI
Signed-off-by: gatecat <gatecat@ds0.me>
Diffstat (limited to 'gowin/arch.cc')
-rw-r--r--gowin/arch.cc12
1 files changed, 11 insertions, 1 deletions
diff --git a/gowin/arch.cc b/gowin/arch.cc
index 2e742693..b817dae0 100644
--- a/gowin/arch.cc
+++ b/gowin/arch.cc
@@ -89,6 +89,16 @@ void Arch::addPip(IdString name, IdString type, IdString srcWire, IdString dstWi
if (int(tilePipDimZ[loc.x].size()) <= loc.y)
tilePipDimZ[loc.x].resize(loc.y + 1);
+ // Needed to ensure empty tile bel locations
+ if (int(bels_by_tile.size()) <= loc.x)
+ bels_by_tile.resize(loc.x + 1);
+ if (int(bels_by_tile[loc.x].size()) <= loc.y)
+ bels_by_tile[loc.x].resize(loc.y + 1);
+ if (int(tileBelDimZ.size()) <= loc.x)
+ tileBelDimZ.resize(loc.x + 1);
+ if (int(tileBelDimZ[loc.x].size()) <= loc.y)
+ tileBelDimZ[loc.x].resize(loc.y + 1);
+
gridDimX = std::max(gridDimX, loc.x + 1);
gridDimY = std::max(gridDimY, loc.y + 1);
tilePipDimZ[loc.x][loc.y] = std::max(tilePipDimZ[loc.x][loc.y], loc.z + 1);
@@ -124,7 +134,7 @@ void Arch::addBel(IdString name, IdString type, Loc loc, bool gb)
tileBelDimZ[loc.x].resize(loc.y + 1);
gridDimX = std::max(gridDimX, loc.x + 1);
- gridDimY = std::max(gridDimY, loc.x + 1);
+ gridDimY = std::max(gridDimY, loc.y + 1);
tileBelDimZ[loc.x][loc.y] = std::max(tileBelDimZ[loc.x][loc.y], loc.z + 1);
}