aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--common/place_sa.cc2
-rw-r--r--common/timing.cc11
-rw-r--r--ice40/main.cc7
3 files changed, 12 insertions, 8 deletions
diff --git a/common/place_sa.cc b/common/place_sa.cc
index e792474d..2f8fb122 100644
--- a/common/place_sa.cc
+++ b/common/place_sa.cc
@@ -334,7 +334,7 @@ class SAPlacer
load_cell->bel, ctx->portPinFromId(load.port));
delay_t raw_wl = ctx->estimateDelay(drv_wire, user_wire);
float slack =
- ctx->getDelayNS(raw_wl) - ctx->getDelayNS(load.budget);
+ ctx->getDelayNS(load.budget) - ctx->getDelayNS(raw_wl);
worst_slack = std::min(slack, worst_slack);
int load_x, load_y;
bool load_gb;
diff --git a/common/timing.cc b/common/timing.cc
index 8da26077..a7b37f9d 100644
--- a/common/timing.cc
+++ b/common/timing.cc
@@ -101,7 +101,6 @@ void assign_budget(Context *ctx, float default_clock)
}
}
}
- const bool debug = true;
// Post-allocation check
for (auto net : ctx->nets) {
@@ -111,11 +110,11 @@ void assign_budget(Context *ctx, float default_clock)
"timing budget of %fns\n",
user.cell->name.c_str(ctx), user.port.c_str(ctx),
net.first.c_str(ctx), ctx->getDelayNS(user.budget));
- if (debug)
- log_warning("port %s.%s, connected to net '%s', has "
- "timing budget of %fns\n",
- user.cell->name.c_str(ctx), user.port.c_str(ctx),
- net.first.c_str(ctx), ctx->getDelayNS(user.budget));
+ if (ctx->verbose)
+ log_info("port %s.%s, connected to net '%s', has "
+ "timing budget of %fns\n",
+ user.cell->name.c_str(ctx), user.port.c_str(ctx),
+ net.first.c_str(ctx), ctx->getDelayNS(user.budget));
}
}
}
diff --git a/ice40/main.cc b/ice40/main.cc
index 8143a902..fcf112e6 100644
--- a/ice40/main.cc
+++ b/ice40/main.cc
@@ -93,6 +93,8 @@ int main(int argc, char *argv[])
options.add_options()("hx1k", "set device type to iCE40HX1K");
options.add_options()("hx8k", "set device type to iCE40HX8K");
options.add_options()("up5k", "set device type to iCE40UP5K");
+ options.add_options()("freq", po::value<double>(),
+ "set target frequency for design in MHz");
options.add_options()("package", po::value<std::string>(),
"set device package");
po::positional_options_description pos;
@@ -286,7 +288,10 @@ int main(int argc, char *argv[])
if (!pack_design(&ctx) && !ctx.force)
log_error("Packing design failed.\n");
- assign_budget(&ctx, 50e6);
+ double freq = 50e6;
+ if (vm.count("freq"))
+ freq = vm["freq"].as<double>() * 1e6;
+ assign_budget(&ctx, freq);
print_utilisation(&ctx);
if (!vm.count("pack-only")) {