Add missing implementations of generic Arch methods
Signed-off-by: Clifford Wolf <clifford@clifford.at>
This commit is contained in:
parent
974ca143e8
commit
a82a8840d2
@ -77,18 +77,18 @@ void Arch::addBel(IdString name, IdString type, Loc loc, bool gb)
|
|||||||
bel_ids.push_back(name);
|
bel_ids.push_back(name);
|
||||||
bel_by_loc[loc] = name;
|
bel_by_loc[loc] = name;
|
||||||
|
|
||||||
if (bels_by_tile.size() <= loc.x)
|
if (int(bels_by_tile.size()) <= loc.x)
|
||||||
bels_by_tile.resize(loc.x + 1);
|
bels_by_tile.resize(loc.x + 1);
|
||||||
|
|
||||||
if (bels_by_tile[loc.x].size() <= loc.y)
|
if (int(bels_by_tile[loc.x].size()) <= loc.y)
|
||||||
bels_by_tile[loc.x].resize(loc.y + 1);
|
bels_by_tile[loc.x].resize(loc.y + 1);
|
||||||
|
|
||||||
bels_by_tile[loc.x][loc.y].push_back(name);
|
bels_by_tile[loc.x][loc.y].push_back(name);
|
||||||
|
|
||||||
if (tileDimZ.size() <= loc.x)
|
if (int(tileDimZ.size()) <= loc.x)
|
||||||
tileDimZ.resize(loc.x + 1);
|
tileDimZ.resize(loc.x + 1);
|
||||||
|
|
||||||
if (tileDimZ[loc.x].size() <= loc.y)
|
if (int(tileDimZ[loc.x].size()) <= loc.y)
|
||||||
tileDimZ[loc.x].resize(loc.y + 1);
|
tileDimZ[loc.x].resize(loc.y + 1);
|
||||||
|
|
||||||
gridDimX = std::max(gridDimX, loc.x + 1);
|
gridDimX = std::max(gridDimX, loc.x + 1);
|
||||||
@ -193,6 +193,30 @@ BelId Arch::getBelByName(IdString name) const
|
|||||||
|
|
||||||
IdString Arch::getBelName(BelId bel) const { return bel; }
|
IdString Arch::getBelName(BelId bel) const { return bel; }
|
||||||
|
|
||||||
|
Loc Arch::getBelLocation(BelId bel) const
|
||||||
|
{
|
||||||
|
auto &info = bels.at(bel);
|
||||||
|
return Loc(info.x, info.y, info.z);
|
||||||
|
}
|
||||||
|
|
||||||
|
BelId Arch::getBelByLocation(Loc loc) const
|
||||||
|
{
|
||||||
|
auto it = bel_by_loc.find(loc);
|
||||||
|
if (it != bel_by_loc.end())
|
||||||
|
return it->second;
|
||||||
|
return BelId();
|
||||||
|
}
|
||||||
|
|
||||||
|
const std::vector<BelId> &Arch::getBelsByTile(int x, int y) const
|
||||||
|
{
|
||||||
|
return bels_by_tile.at(x).at(y);
|
||||||
|
}
|
||||||
|
|
||||||
|
bool Arch::getBelGlobalBuf(BelId bel) const
|
||||||
|
{
|
||||||
|
return bels.at(bel).gb;
|
||||||
|
}
|
||||||
|
|
||||||
uint32_t Arch::getBelChecksum(BelId bel) const
|
uint32_t Arch::getBelChecksum(BelId bel) const
|
||||||
{
|
{
|
||||||
// FIXME
|
// FIXME
|
||||||
@ -234,6 +258,7 @@ std::vector<PortPin> Arch::getBelPins(BelId bel) const
|
|||||||
std::vector<PortPin> ret;
|
std::vector<PortPin> ret;
|
||||||
for (auto &it : bels.at(bel).pins)
|
for (auto &it : bels.at(bel).pins)
|
||||||
ret.push_back(it.first);
|
ret.push_back(it.first);
|
||||||
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
// ---------------------------------------------------------------
|
// ---------------------------------------------------------------
|
||||||
|
@ -141,7 +141,7 @@ struct Arch : BaseCtx
|
|||||||
IdString getBelName(BelId bel) const;
|
IdString getBelName(BelId bel) const;
|
||||||
Loc getBelLocation(BelId bel) const;
|
Loc getBelLocation(BelId bel) const;
|
||||||
BelId getBelByLocation(Loc loc) const;
|
BelId getBelByLocation(Loc loc) const;
|
||||||
std::vector<BelId> getBelsByTile(int x, int y) const;
|
const std::vector<BelId> &getBelsByTile(int x, int y) const;
|
||||||
bool getBelGlobalBuf(BelId bel) const;
|
bool getBelGlobalBuf(BelId bel) const;
|
||||||
uint32_t getBelChecksum(BelId bel) const;
|
uint32_t getBelChecksum(BelId bel) const;
|
||||||
void bindBel(BelId bel, IdString cell, PlaceStrength strength);
|
void bindBel(BelId bel, IdString cell, PlaceStrength strength);
|
||||||
|
Loading…
Reference in New Issue
Block a user