[ice40] getBudgetOverride() to use constrained Z not placed Z

This commit is contained in:
Eddie Hung 2018-11-13 12:51:46 -08:00
parent 3b2b15dc4a
commit 51a2894762
2 changed files with 5 additions and 4 deletions

View File

@ -575,11 +575,10 @@ bool Arch::getBudgetOverride(const NetInfo *net_info, const PortRef &sink, delay
{ {
const auto &driver = net_info->driver; const auto &driver = net_info->driver;
if (driver.port == id_COUT && sink.port == id_CIN) { if (driver.port == id_COUT && sink.port == id_CIN) {
auto driver_loc = getBelLocation(driver.cell->bel); if (driver.cell->constr_abs_z && driver.cell->constr_z < 7)
auto sink_loc = getBelLocation(sink.cell->bel);
if (driver_loc.y == sink_loc.y)
budget = 0; budget = 0;
else else {
NPNR_ASSERT(driver.cell->constr_z == 7);
switch (args.type) { switch (args.type) {
#ifndef ICE40_HX1K_ONLY #ifndef ICE40_HX1K_ONLY
case ArchArgs::HX8K: case ArchArgs::HX8K:
@ -600,6 +599,7 @@ bool Arch::getBudgetOverride(const NetInfo *net_info, const PortRef &sink, delay
default: default:
log_error("Unsupported iCE40 chip type.\n"); log_error("Unsupported iCE40 chip type.\n");
} }
}
return true; return true;
} }
return false; return false;

View File

@ -485,6 +485,7 @@ struct Arch : BaseCtx
Loc getBelLocation(BelId bel) const Loc getBelLocation(BelId bel) const
{ {
NPNR_ASSERT(bel != BelId());
Loc loc; Loc loc;
loc.x = chip_info->bel_data[bel.index].x; loc.x = chip_info->bel_data[bel.index].x;
loc.y = chip_info->bel_data[bel.index].y; loc.y = chip_info->bel_data[bel.index].y;