Merge branch 'master' into gowin-gui-noc
This commit is contained in:
commit
370e98a248
@ -601,7 +601,8 @@ delay_t Arch::estimateDelay(WireId src, WireId dst) const
|
|||||||
int dst_x = dst.tile % chip_info->width, dst_y = dst.tile / chip_info->width;
|
int dst_x = dst.tile % chip_info->width, dst_y = dst.tile / chip_info->width;
|
||||||
int dist_x = std::abs(src_x - dst_x);
|
int dist_x = std::abs(src_x - dst_x);
|
||||||
int dist_y = std::abs(src_y - dst_y);
|
int dist_y = std::abs(src_y - dst_y);
|
||||||
return 75 * dist_x + 75 * dist_y + 250;
|
|
||||||
|
return estimate_delay_mult * (dist_x + dist_y) + 250;
|
||||||
}
|
}
|
||||||
delay_t Arch::predictDelay(BelId src_bel, IdString src_pin, BelId dst_bel, IdString dst_pin) const
|
delay_t Arch::predictDelay(BelId src_bel, IdString src_pin, BelId dst_bel, IdString dst_pin) const
|
||||||
{
|
{
|
||||||
@ -655,6 +656,10 @@ ArcBounds Arch::getRouteBoundingBox(WireId src, WireId dst) const
|
|||||||
|
|
||||||
bool Arch::place()
|
bool Arch::place()
|
||||||
{
|
{
|
||||||
|
estimate_delay_mult = 75;
|
||||||
|
if (getCtx()->settings.count(getCtx()->id("estimate-delay-mult")))
|
||||||
|
estimate_delay_mult = getCtx()->setting<int>("estimate-delay-mult");
|
||||||
|
|
||||||
std::string placer = str_or_default(settings, id("placer"), defaultPlacer);
|
std::string placer = str_or_default(settings, id("placer"), defaultPlacer);
|
||||||
|
|
||||||
if (placer == "heap") {
|
if (placer == "heap") {
|
||||||
|
@ -1290,6 +1290,7 @@ struct Arch : BaseArch<ArchRanges>
|
|||||||
|
|
||||||
// -------------------------------------------------
|
// -------------------------------------------------
|
||||||
|
|
||||||
|
int32_t estimate_delay_mult;
|
||||||
delay_t estimateDelay(WireId src, WireId dst) const override;
|
delay_t estimateDelay(WireId src, WireId dst) const override;
|
||||||
delay_t predictDelay(BelId src_bel, IdString src_pin, BelId dst_bel, IdString dst_pin) const override;
|
delay_t predictDelay(BelId src_bel, IdString src_pin, BelId dst_bel, IdString dst_pin) const override;
|
||||||
delay_t getDelayEpsilon() const override { return 20; }
|
delay_t getDelayEpsilon() const override { return 20; }
|
||||||
|
@ -54,6 +54,8 @@ po::options_description NexusCommandHandler::getArchOptions()
|
|||||||
specific.add_options()("no-pack-lutff", "disable packing (clustering) LUTs and FFs together");
|
specific.add_options()("no-pack-lutff", "disable packing (clustering) LUTs and FFs together");
|
||||||
specific.add_options()("carry-lutff-ratio", po::value<float>(),
|
specific.add_options()("carry-lutff-ratio", po::value<float>(),
|
||||||
"ratio of FFs to be added to carry-chain LUT clusters");
|
"ratio of FFs to be added to carry-chain LUT clusters");
|
||||||
|
specific.add_options()("estimate-delay-mult", po::value<int>(),
|
||||||
|
"multiplier for the estimate delay");
|
||||||
|
|
||||||
return specific;
|
return specific;
|
||||||
}
|
}
|
||||||
@ -88,6 +90,8 @@ std::unique_ptr<Context> NexusCommandHandler::createContext(dict<std::string, Pr
|
|||||||
}
|
}
|
||||||
ctx->settings[ctx->id("carry_lutff_ratio")] = ratio;
|
ctx->settings[ctx->id("carry_lutff_ratio")] = ratio;
|
||||||
}
|
}
|
||||||
|
if (vm.count("estimate-delay-mult"))
|
||||||
|
ctx->settings[ctx->id("estimate-delay-mult")] = vm["estimate-delay-mult"].as<int>();
|
||||||
return ctx;
|
return ctx;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user