From 926c186ec78efb086364a05ba7e83e68fa116301 Mon Sep 17 00:00:00 2001 From: Eddie Hung Date: Sat, 21 Jul 2018 13:05:09 -0700 Subject: Add Arch::getBudgetOverride() to eliminate hack for COUT --- ecp5/arch.cc | 5 +++++ ecp5/arch.h | 1 + 2 files changed, 6 insertions(+) (limited to 'ecp5') diff --git a/ecp5/arch.cc b/ecp5/arch.cc index 1510a27f..90f88384 100644 --- a/ecp5/arch.cc +++ b/ecp5/arch.cc @@ -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()); } diff --git a/ecp5/arch.h b/ecp5/arch.h index bf36ef2f..ec98d029 100644 --- a/ecp5/arch.h +++ b/ecp5/arch.h @@ -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; // ------------------------------------------------- -- cgit v1.2.3 From c71212d0e148b0b2ee136a951f5d707cc8822bda Mon Sep 17 00:00:00 2001 From: Eddie Hung Date: Tue, 24 Jul 2018 23:19:24 -0700 Subject: If --freq not set, attempt to find max by adjusting budget so min path slack == 0 --- ecp5/main.cc | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) (limited to 'ecp5') diff --git a/ecp5/main.cc b/ecp5/main.cc index 90096855..6087728c 100644 --- a/ecp5/main.cc +++ b/ecp5/main.cc @@ -169,8 +169,13 @@ int main(int argc, char *argv[]) if (!ctx->pack() && !ctx->force) log_error("Packing design failed.\n"); - if (vm.count("freq")) + if (vm.count("freq")) { ctx->target_freq = vm["freq"].as() * 1e6; + ctx->user_freq = true; + } + else { + log_warning("Target frequency not specified. Will optimise for max frequency.\n"); + } assign_budget(ctx.get()); ctx->check(); print_utilisation(ctx.get()); -- cgit v1.2.3 From 9d489e819863e431de3db58221f0d6fbe3387412 Mon Sep 17 00:00:00 2001 From: Eddie Hung Date: Wed, 25 Jul 2018 18:34:14 -0700 Subject: Retry clangformat --- ecp5/arch.cc | 5 +---- ecp5/arch.h | 2 +- ecp5/main.cc | 3 +-- 3 files changed, 3 insertions(+), 7 deletions(-) (limited to 'ecp5') diff --git a/ecp5/arch.cc b/ecp5/arch.cc index b518323e..79f65562 100644 --- a/ecp5/arch.cc +++ b/ecp5/arch.cc @@ -413,10 +413,7 @@ delay_t Arch::estimateDelay(WireId src, WireId dst) const return 200 * (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; -} +delay_t Arch::getBudgetOverride(const PortRef &pr, delay_t v) const { return v; } // ----------------------------------------------------------------------- diff --git a/ecp5/arch.h b/ecp5/arch.h index 22016fae..1927e55a 100644 --- a/ecp5/arch.h +++ b/ecp5/arch.h @@ -776,7 +776,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; + delay_t getBudgetOverride(const PortRef &pr, delay_t v) const; // ------------------------------------------------- diff --git a/ecp5/main.cc b/ecp5/main.cc index 170f9c11..9f683a7b 100644 --- a/ecp5/main.cc +++ b/ecp5/main.cc @@ -170,8 +170,7 @@ int main(int argc, char *argv[]) if (vm.count("freq")) { ctx->target_freq = vm["freq"].as() * 1e6; ctx->user_freq = true; - } - else { + } else { log_warning("Target frequency not specified. Will optimise for max frequency.\n"); } assign_budget(ctx.get()); -- cgit v1.2.3 From 749dae4ae5b2b719237af5db28e98ff671bae265 Mon Sep 17 00:00:00 2001 From: Eddie Hung Date: Wed, 25 Jul 2018 23:02:31 -0700 Subject: Remove Arch::getBudgetOverride() --- ecp5/arch.cc | 2 -- ecp5/arch.h | 1 - 2 files changed, 3 deletions(-) (limited to 'ecp5') diff --git a/ecp5/arch.cc b/ecp5/arch.cc index 79f65562..55fe5704 100644 --- a/ecp5/arch.cc +++ b/ecp5/arch.cc @@ -413,8 +413,6 @@ delay_t Arch::estimateDelay(WireId src, WireId dst) const return 200 * (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()); } diff --git a/ecp5/arch.h b/ecp5/arch.h index 1927e55a..b5f3d817 100644 --- a/ecp5/arch.h +++ b/ecp5/arch.h @@ -776,7 +776,6 @@ 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; // ------------------------------------------------- -- cgit v1.2.3 From 97e546041e109fdade1099b056c7166578314846 Mon Sep 17 00:00:00 2001 From: Eddie Hung Date: Thu, 26 Jul 2018 21:37:19 -0700 Subject: Revert "Remove Arch::getBudgetOverride()" This reverts commit 749dae4ae5b2b719237af5db28e98ff671bae265. --- ecp5/arch.cc | 2 ++ ecp5/arch.h | 1 + 2 files changed, 3 insertions(+) (limited to 'ecp5') diff --git a/ecp5/arch.cc b/ecp5/arch.cc index 55fe5704..79f65562 100644 --- a/ecp5/arch.cc +++ b/ecp5/arch.cc @@ -413,6 +413,8 @@ delay_t Arch::estimateDelay(WireId src, WireId dst) const return 200 * (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()); } diff --git a/ecp5/arch.h b/ecp5/arch.h index b6aac9cf..860b086d 100644 --- a/ecp5/arch.h +++ b/ecp5/arch.h @@ -780,6 +780,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; // ------------------------------------------------- -- cgit v1.2.3 From d083451cd5918c676e0f6a15dd8595bb3c077a6b Mon Sep 17 00:00:00 2001 From: Eddie Hung Date: Thu, 26 Jul 2018 22:31:16 -0700 Subject: Update getBudgetOverride() for other arches --- ecp5/arch.cc | 2 +- ecp5/arch.h | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) (limited to 'ecp5') diff --git a/ecp5/arch.cc b/ecp5/arch.cc index 79f65562..b070014e 100644 --- a/ecp5/arch.cc +++ b/ecp5/arch.cc @@ -413,7 +413,7 @@ delay_t Arch::estimateDelay(WireId src, WireId dst) const return 200 * (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; } +delay_t Arch::getBudgetOverride(NetInfo *net_info, int user_idx, delay_t budget) const { return budget; } // ----------------------------------------------------------------------- diff --git a/ecp5/arch.h b/ecp5/arch.h index 860b086d..445f0dbf 100644 --- a/ecp5/arch.h +++ b/ecp5/arch.h @@ -780,7 +780,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; + delay_t getBudgetOverride(NetInfo *net_info, int user_idx, delay_t budget) const; // ------------------------------------------------- -- cgit v1.2.3 From 0daffec2a0efdbea36201eeb5666d208a10d0226 Mon Sep 17 00:00:00 2001 From: Clifford Wolf Date: Mon, 30 Jul 2018 15:35:40 +0200 Subject: Add predictDelay Arch API Signed-off-by: Clifford Wolf --- ecp5/arch.cc | 5 +++++ ecp5/arch.h | 1 + 2 files changed, 6 insertions(+) (limited to 'ecp5') diff --git a/ecp5/arch.cc b/ecp5/arch.cc index 55fe5704..88b5e4d4 100644 --- a/ecp5/arch.cc +++ b/ecp5/arch.cc @@ -413,6 +413,11 @@ delay_t Arch::estimateDelay(WireId src, WireId dst) const return 200 * (abs(src.location.x - dst.location.x) + abs(src.location.y - dst.location.y)); } +delay_t Arch::predictDelay(WireId src, WireId dst) const +{ + return 200 * (abs(src.location.x - dst.location.x) + abs(src.location.y - dst.location.y)); +} + // ----------------------------------------------------------------------- bool Arch::place() { return placer1(getCtx()); } diff --git a/ecp5/arch.h b/ecp5/arch.h index b6aac9cf..13f2db1f 100644 --- a/ecp5/arch.h +++ b/ecp5/arch.h @@ -776,6 +776,7 @@ struct Arch : BaseCtx // ------------------------------------------------- delay_t estimateDelay(WireId src, WireId dst) const; + delay_t predictDelay(WireId src, WireId dst) const; delay_t getDelayEpsilon() const { return 20; } delay_t getRipupDelayPenalty() const { return 200; } float getDelayNS(delay_t v) const { return v * 0.001; } -- cgit v1.2.3 From a82f6f410595de26e82eaf4818e41036f0bc2f9c Mon Sep 17 00:00:00 2001 From: Eddie Hung Date: Mon, 30 Jul 2018 19:19:30 -0700 Subject: Modify predictDelay signature --- ecp5/arch.cc | 8 ++++++-- ecp5/arch.h | 2 +- 2 files changed, 7 insertions(+), 3 deletions(-) (limited to 'ecp5') diff --git a/ecp5/arch.cc b/ecp5/arch.cc index 88b5e4d4..23105df2 100644 --- a/ecp5/arch.cc +++ b/ecp5/arch.cc @@ -413,9 +413,13 @@ delay_t Arch::estimateDelay(WireId src, WireId dst) const return 200 * (abs(src.location.x - dst.location.x) + abs(src.location.y - dst.location.y)); } -delay_t Arch::predictDelay(WireId src, WireId dst) const +delay_t Arch::predictDelay(const NetInfo *net_info, const PortRef &sink) const; { - return 200 * (abs(src.location.x - dst.location.x) + abs(src.location.y - dst.location.y)); + const auto& driver = net_info->driver; + auto driver_loc = getBelLocation(driver.cell->bel); + auto sink_loc = getBelLocation(sink.cell->bel); + + return 200 * (abs(driver_loc.x - sink_loc.x) + abs(driver_loc.y - sink_loc.y)); } // ----------------------------------------------------------------------- diff --git a/ecp5/arch.h b/ecp5/arch.h index 13f2db1f..400d6e55 100644 --- a/ecp5/arch.h +++ b/ecp5/arch.h @@ -776,7 +776,7 @@ struct Arch : BaseCtx // ------------------------------------------------- delay_t estimateDelay(WireId src, WireId dst) const; - delay_t predictDelay(WireId src, WireId dst) const; + delay_t predictDelay(const NetInfo *net_info, const PortRef &sink) const; delay_t getDelayEpsilon() const { return 20; } delay_t getRipupDelayPenalty() const { return 200; } float getDelayNS(delay_t v) const { return v * 0.001; } -- cgit v1.2.3 From f646ec790a79f29d6964f3b7e30088f044b4a4e9 Mon Sep 17 00:00:00 2001 From: Eddie Hung Date: Tue, 31 Jul 2018 19:31:54 -0700 Subject: Modify the getNetinfo*() functions and getBudgetOverride() to not use user_idx and to take a PortRef& instead --- ecp5/arch.cc | 2 +- ecp5/arch.h | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) (limited to 'ecp5') diff --git a/ecp5/arch.cc b/ecp5/arch.cc index 14b5b8f2..ffaa9133 100644 --- a/ecp5/arch.cc +++ b/ecp5/arch.cc @@ -422,7 +422,7 @@ delay_t Arch::predictDelay(const NetInfo *net_info, const PortRef &sink) const; return 200 * (abs(driver_loc.x - sink_loc.x) + abs(driver_loc.y - sink_loc.y)); } -delay_t Arch::getBudgetOverride(NetInfo *net_info, int user_idx, delay_t budget) const { return budget; } +delay_t getBudgetOverride(const NetInfo *net_info, const PortRef &sink, delay_t budget) const { return budget; } // ----------------------------------------------------------------------- diff --git a/ecp5/arch.h b/ecp5/arch.h index 255bafc7..e4d67e0f 100644 --- a/ecp5/arch.h +++ b/ecp5/arch.h @@ -781,7 +781,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(NetInfo *net_info, int user_idx, delay_t budget) const; + delay_t getBudgetOverride(const NetInfo *net_info, const PortRef &sink, delay_t budget) const; // ------------------------------------------------- -- cgit v1.2.3 From 92ec2cd13825ef996ebf0d88246d975a19352800 Mon Sep 17 00:00:00 2001 From: Eddie Hung Date: Tue, 31 Jul 2018 20:57:36 -0700 Subject: clangformat for stuff I've touched --- ecp5/arch.cc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'ecp5') diff --git a/ecp5/arch.cc b/ecp5/arch.cc index ffaa9133..5fc86cdb 100644 --- a/ecp5/arch.cc +++ b/ecp5/arch.cc @@ -415,7 +415,7 @@ delay_t Arch::estimateDelay(WireId src, WireId dst) const delay_t Arch::predictDelay(const NetInfo *net_info, const PortRef &sink) const; { - const auto& driver = net_info->driver; + const auto &driver = net_info->driver; auto driver_loc = getBelLocation(driver.cell->bel); auto sink_loc = getBelLocation(sink.cell->bel); -- cgit v1.2.3