aboutsummaryrefslogtreecommitdiffstats
path: root/gui/ice40/worker.cc
diff options
context:
space:
mode:
authorClifford Wolf <clifford@clifford.at>2018-06-23 16:14:39 +0200
committerClifford Wolf <clifford@clifford.at>2018-06-23 16:14:39 +0200
commit0ccd9febebdb7f2de700d116a8498f23de093e88 (patch)
tree094f717951a81fd91d01e3d776695629f354d089 /gui/ice40/worker.cc
parenta40d9dc514b680538d0ffa99873974a15bff9e97 (diff)
parent1e8840b0f9400a1dc17ba6c7496314f82f0db2e1 (diff)
downloadnextpnr-0ccd9febebdb7f2de700d116a8498f23de093e88.tar.gz
nextpnr-0ccd9febebdb7f2de700d116a8498f23de093e88.tar.bz2
nextpnr-0ccd9febebdb7f2de700d116a8498f23de093e88.zip
Merge branch 'master' of gitlab.com:SymbioticEDA/nextpnr
Diffstat (limited to 'gui/ice40/worker.cc')
-rw-r--r--gui/ice40/worker.cc31
1 files changed, 20 insertions, 11 deletions
diff --git a/gui/ice40/worker.cc b/gui/ice40/worker.cc
index ecf473ce..1558bc0c 100644
--- a/gui/ice40/worker.cc
+++ b/gui/ice40/worker.cc
@@ -72,20 +72,30 @@ void Worker::pack()
{
Q_EMIT taskStarted();
try {
- Q_EMIT pack_finished(pack_design(ctx));
+ bool res = pack_design(ctx);
+ print_utilisation(ctx);
+ Q_EMIT pack_finished(res);
} catch (WorkerInterruptionRequested) {
Q_EMIT taskCanceled();
}
}
-void Worker::place()
+void Worker::budget(double freq)
{
Q_EMIT taskStarted();
try {
- double freq = 50e6;
assign_budget(ctx, freq);
- print_utilisation(ctx);
- Q_EMIT place_finished(place_design_sa(ctx));
+ Q_EMIT budget_finish(true);
+ } catch (WorkerInterruptionRequested) {
+ Q_EMIT taskCanceled();
+ }
+}
+
+void Worker::place(bool timing_driven)
+{
+ Q_EMIT taskStarted();
+ try {
+ Q_EMIT place_finished(place_design_sa(ctx, timing_driven));
} catch (WorkerInterruptionRequested) {
Q_EMIT taskCanceled();
}
@@ -110,17 +120,16 @@ TaskManager::TaskManager(Context *ctx) : toTerminate(false), toPause(false)
connect(this, &TaskManager::loadfile, worker, &Worker::loadfile);
connect(this, &TaskManager::pack, worker, &Worker::pack);
+ connect(this, &TaskManager::budget, worker, &Worker::budget);
connect(this, &TaskManager::place, worker, &Worker::place);
connect(this, &TaskManager::route, worker, &Worker::route);
connect(worker, &Worker::log, this, &TaskManager::info);
- connect(worker, &Worker::loadfile_finished, this,
- &TaskManager::loadfile_finished);
+ connect(worker, &Worker::loadfile_finished, this, &TaskManager::loadfile_finished);
connect(worker, &Worker::pack_finished, this, &TaskManager::pack_finished);
- connect(worker, &Worker::place_finished, this,
- &TaskManager::place_finished);
- connect(worker, &Worker::route_finished, this,
- &TaskManager::route_finished);
+ connect(worker, &Worker::budget_finish, this, &TaskManager::budget_finish);
+ connect(worker, &Worker::place_finished, this, &TaskManager::place_finished);
+ connect(worker, &Worker::route_finished, this, &TaskManager::route_finished);
connect(worker, &Worker::taskCanceled, this, &TaskManager::taskCanceled);
connect(worker, &Worker::taskStarted, this, &TaskManager::taskStarted);