getBudgetOverride() now handles COUT crossing tiles
This commit is contained in:
parent
97e546041e
commit
cd561b4316
@ -587,11 +587,18 @@ delay_t Arch::estimateDelay(WireId src, WireId dst) const
|
|||||||
return xscale * abs(xd) + yscale * abs(yd) + offset;
|
return xscale * abs(xd) + yscale * abs(yd) + offset;
|
||||||
}
|
}
|
||||||
|
|
||||||
delay_t Arch::getBudgetOverride(const PortRef &pr, delay_t v) const
|
delay_t Arch::getBudgetOverride(NetInfo *net_info, int user_idx, delay_t budget) const
|
||||||
{
|
{
|
||||||
if (pr.port == id("COUT"))
|
const auto& driver = net_info->driver;
|
||||||
return 0;
|
if (driver.port == id_cout) {
|
||||||
return v;
|
const auto& sink = net_info->users[user_idx];
|
||||||
|
auto driver_loc = getBelLocation(driver.cell->bel);
|
||||||
|
auto sink_loc = getBelLocation(sink.cell->bel);
|
||||||
|
if (driver_loc.y == sink_loc.y)
|
||||||
|
return 0;
|
||||||
|
return 250;
|
||||||
|
}
|
||||||
|
return budget;
|
||||||
}
|
}
|
||||||
|
|
||||||
// -----------------------------------------------------------------------
|
// -----------------------------------------------------------------------
|
||||||
|
@ -688,7 +688,7 @@ struct Arch : BaseCtx
|
|||||||
delay_t getRipupDelayPenalty() const { return 200; }
|
delay_t getRipupDelayPenalty() const { return 200; }
|
||||||
float getDelayNS(delay_t v) const { return v * 0.001; }
|
float getDelayNS(delay_t v) const { return v * 0.001; }
|
||||||
uint32_t getDelayChecksum(delay_t v) const { return v; }
|
uint32_t getDelayChecksum(delay_t v) const { return v; }
|
||||||
delay_t getBudgetOverride(const PortRef &pr, delay_t v) const;
|
delay_t getBudgetOverride(NetInfo *net_info, int user_idx, delay_t budget) const;
|
||||||
|
|
||||||
// -------------------------------------------------
|
// -------------------------------------------------
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user