Add Arch::getBudgetOverride() to eliminate hack for COUT
This commit is contained in:
parent
e44dc25f09
commit
926c186ec7
@ -215,12 +215,8 @@ void update_budget(Context *ctx)
|
||||
auto pi = &user.cell->ports.at(user.port);
|
||||
auto it = updates.find(pi);
|
||||
if (it == updates.end()) continue;
|
||||
user.budget = delays.at(pi) + it->second;
|
||||
|
||||
// HACK HACK HACK
|
||||
if (net.second->driver.port == ctx->id("COUT"))
|
||||
user.budget = 0;
|
||||
// HACK HACK HACK
|
||||
auto budget = delays.at(pi) + it->second;
|
||||
user.budget = ctx->getBudgetOverride(net.second->driver, budget);
|
||||
|
||||
// Post-update check
|
||||
if (ctx->verbose) {
|
||||
|
@ -328,6 +328,11 @@ delay_t Arch::estimateDelay(WireId src, WireId dst) const
|
||||
return abs(src.location.x - dst.location.x) + abs(src.location.y - dst.location.y);
|
||||
}
|
||||
|
||||
delay_t Arch::getBudgetOverride(const PortRef& pr, delay_t v) const
|
||||
{
|
||||
return v;
|
||||
}
|
||||
|
||||
// -----------------------------------------------------------------------
|
||||
|
||||
bool Arch::place() { return placer1(getCtx()); }
|
||||
|
@ -757,6 +757,7 @@ struct Arch : BaseCtx
|
||||
delay_t getRipupDelayPenalty() const { return 200; }
|
||||
float getDelayNS(delay_t v) const { return v * 0.001; }
|
||||
uint32_t getDelayChecksum(delay_t v) const { return v; }
|
||||
delay_t getBudgetOverride(const PortRef& pr, delay_t v) const;
|
||||
|
||||
// -------------------------------------------------
|
||||
|
||||
|
@ -372,6 +372,11 @@ delay_t Arch::estimateDelay(WireId src, WireId dst) const
|
||||
return (dx + dy) * grid_distance_to_delay;
|
||||
}
|
||||
|
||||
delay_t Arch::getBudgetOverride(const PortRef& pr, delay_t v) const
|
||||
{
|
||||
return v;
|
||||
}
|
||||
|
||||
// ---------------------------------------------------------------
|
||||
|
||||
bool Arch::place() { return placer1(getCtx()); }
|
||||
|
@ -190,6 +190,7 @@ struct Arch : BaseCtx
|
||||
delay_t getRipupDelayPenalty() const { return 1.0; }
|
||||
float getDelayNS(delay_t v) const { return v; }
|
||||
uint32_t getDelayChecksum(delay_t v) const { return 0; }
|
||||
delay_t getBudgetOverride(const PortRef& pr, delay_t v) const;
|
||||
|
||||
bool pack() { return true; }
|
||||
bool place();
|
||||
|
@ -488,6 +488,12 @@ delay_t Arch::estimateDelay(WireId src, WireId dst) const
|
||||
return xscale * abs(xd) + yscale * abs(yd) + offset;
|
||||
}
|
||||
|
||||
delay_t Arch::getBudgetOverride(const PortRef& pr, delay_t v) const
|
||||
{
|
||||
if (pr.port == id("COUT")) return 0;
|
||||
return v;
|
||||
}
|
||||
|
||||
// -----------------------------------------------------------------------
|
||||
|
||||
bool Arch::place() { return placer1(getCtx()); }
|
||||
|
@ -701,6 +701,7 @@ struct Arch : BaseCtx
|
||||
delay_t getRipupDelayPenalty() const { return 200; }
|
||||
float getDelayNS(delay_t v) const { return v * 0.001; }
|
||||
uint32_t getDelayChecksum(delay_t v) const { return v; }
|
||||
delay_t getBudgetOverride(const PortRef& pr, delay_t v) const;
|
||||
|
||||
// -------------------------------------------------
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user