Add Arch::getBudgetOverride() to eliminate hack for COUT

This commit is contained in:
Eddie Hung 2018-07-21 13:05:09 -07:00
parent e44dc25f09
commit 926c186ec7
7 changed files with 21 additions and 6 deletions

View File

@ -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) {

View File

@ -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()); }

View File

@ -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;
// -------------------------------------------------

View File

@ -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()); }

View File

@ -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();

View File

@ -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()); }

View File

@ -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;
// -------------------------------------------------