diff --git a/himbaechel/arch.cc b/himbaechel/arch.cc index c85548cc..664fffe0 100644 --- a/himbaechel/arch.cc +++ b/himbaechel/arch.cc @@ -287,6 +287,9 @@ bool Arch::route() set_fast_pip_delays(true); uarch->preRoute(); std::string router = str_or_default(settings, id("router"), defaultRouter); + if (router == "default") { + router = uarch->getDefaultRouter(); + } bool result; if (router == "router1") { result = router1(getCtx(), Router1Cfg(getCtx())); @@ -402,8 +405,8 @@ const std::string Arch::defaultPlacer = "heap"; const std::vector Arch::availablePlacers = {"sa", "heap"}; -const std::string Arch::defaultRouter = "router1"; -const std::vector Arch::availableRouters = {"router1", "router2"}; +const std::string Arch::defaultRouter = "default"; +const std::vector Arch::availableRouters = {"default", "router1", "router2"}; void Arch::set_fast_pip_delays(bool fast_mode) { diff --git a/himbaechel/himbaechel_api.h b/himbaechel/himbaechel_api.h index dae43273..6aae2cae 100644 --- a/himbaechel/himbaechel_api.h +++ b/himbaechel/himbaechel_api.h @@ -147,6 +147,8 @@ struct HimbaechelAPI // For custom placer configuration virtual void configurePlacerHeap(PlacerHeapCfg &cfg) {}; + virtual std::string getDefaultRouter() const { return "router1"; }; + virtual ~HimbaechelAPI() {}; }; diff --git a/himbaechel/uarch/gatemate/gatemate.h b/himbaechel/uarch/gatemate/gatemate.h index bdc17cb2..d2cd8fc9 100644 --- a/himbaechel/uarch/gatemate/gatemate.h +++ b/himbaechel/uarch/gatemate/gatemate.h @@ -52,6 +52,8 @@ struct GateMateImpl : HimbaechelAPI void preRoute() override; void postRoute() override; + virtual std::string getDefaultRouter() const override { return "router2"; }; + BoundingBox getRouteBoundingBox(WireId src, WireId dst) const override; void expandBoundingBox(BoundingBox &bb) const override; bool checkPipAvail(PipId pip) const override;