mirror of https://github.com/YosysHQ/nextpnr.git
gatemate: do not use special serdes pins for auto placement
This commit is contained in:
parent
f58dd2d719
commit
311a1a711d
|
|
@ -51,13 +51,13 @@ void GateMateImpl::init(Context *ctx)
|
|||
HimbaechelAPI::init(ctx);
|
||||
for (const auto &pad : ctx->package_info->pads) {
|
||||
available_pads.emplace(IdString(pad.package_pin));
|
||||
available_pads.emplace(ctx->id("SER_CLK"));
|
||||
available_pads.emplace(ctx->id("SER_CLK_N"));
|
||||
BelId bel = ctx->getBelByName(IdStringList::concat(IdString(pad.tile), IdString(pad.bel)));
|
||||
bel_to_pad.emplace(bel, &pad);
|
||||
locations.emplace(std::make_pair(IdString(pad.package_pin), tile_extra_data(bel.tile)->die),
|
||||
ctx->getBelLocation(bel));
|
||||
}
|
||||
available_pads.emplace(ctx->id("SER_CLK"));
|
||||
available_pads.emplace(ctx->id("SER_CLK_N"));
|
||||
for (auto bel : ctx->getBels()) {
|
||||
auto *ptr = bel_extra_data(bel);
|
||||
std::map<IdString, const GateMateBelPinConstraintPOD *> pins;
|
||||
|
|
|
|||
|
|
@ -276,9 +276,21 @@ void GateMatePacker::pack_io()
|
|||
ci.type = map_types[ci.type];
|
||||
|
||||
if (loc.empty() || loc == "UNPLACED") {
|
||||
if (uarch->available_pads.empty())
|
||||
// Skip SER_CLK and SER_CLK_N if found in available_pads
|
||||
auto it = uarch->available_pads.begin();
|
||||
while (it != uarch->available_pads.end()) {
|
||||
std::string pad_name = it->str(ctx);
|
||||
if (pad_name == "SER_CLK" || pad_name == "SER_CLK_N") {
|
||||
++it;
|
||||
continue;
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
if (it == uarch->available_pads.end())
|
||||
log_error("No more pads available.\n");
|
||||
IdString id = *(uarch->available_pads.begin());
|
||||
|
||||
IdString id = *it;
|
||||
uarch->available_pads.erase(id);
|
||||
loc = id.c_str(ctx);
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue