aboutsummaryrefslogtreecommitdiffstats
path: root/generic/arch.cc
diff options
context:
space:
mode:
authorClifford Wolf <clifford@clifford.at>2018-07-23 12:19:54 +0200
committerClifford Wolf <clifford@clifford.at>2018-07-23 12:19:54 +0200
commit27c523682601e7b504c924a00bec98743fd3477c (patch)
tree617aa81c34f9a211b83135dea01865560254a86b /generic/arch.cc
parent54d1b8adcee3d1a89bf86b87be281e683d1cea93 (diff)
downloadnextpnr-27c523682601e7b504c924a00bec98743fd3477c.tar.gz
nextpnr-27c523682601e7b504c924a00bec98743fd3477c.tar.bz2
nextpnr-27c523682601e7b504c924a00bec98743fd3477c.zip
Add getGridDimX(), getGridDimY(), getTileDimZ() API
Signed-off-by: Clifford Wolf <clifford@clifford.at>
Diffstat (limited to 'generic/arch.cc')
-rw-r--r--generic/arch.cc17
1 files changed, 17 insertions, 0 deletions
diff --git a/generic/arch.cc b/generic/arch.cc
index 6f2bd5df..4fc07613 100644
--- a/generic/arch.cc
+++ b/generic/arch.cc
@@ -78,7 +78,24 @@ void Arch::addBel(IdString name, IdString type, Loc loc, bool gb)
bel_ids_by_type[type].push_back(name);
bel_by_loc[loc] = name;
+
+ if (bels_by_tile.size() <= loc.x)
+ bels_by_tile.resize(loc.x + 1);
+
+ if (bels_by_tile[loc.x].size() <= loc.y)
+ bels_by_tile[loc.x].resize(loc.y + 1);
+
bels_by_tile[loc.x][loc.y].push_back(name);
+
+ if (tileDimZ.size() <= loc.x)
+ tileDimZ.resize(loc.x + 1);
+
+ if (tileDimZ[loc.x].size() <= loc.y)
+ tileDimZ[loc.x].resize(loc.y + 1);
+
+ gridDimX = std::max(gridDimX, loc.x + 1);
+ gridDimY = std::max(gridDimY, loc.x + 1);
+ tileDimZ[loc.x][loc.y] = std::max(tileDimZ[loc.x][loc.y], loc.z + 1);
}
void Arch::addBelInput(IdString bel, IdString name, IdString wire)