aboutsummaryrefslogtreecommitdiffstats
path: root/generic
diff options
context:
space:
mode:
authorSergiusz Bazanski <q3k@q3k.org>2018-07-13 19:10:20 +0100
committerSergiusz Bazanski <q3k@q3k.org>2018-07-13 19:10:27 +0100
commitb8ca1a55820d6429f5ad5207be1e125b8786e093 (patch)
tree6733f6ff9de556ccee6bf87b33dbe6b963cbc6db /generic
parent89809a8b810dd57f50f365d70a0ce547705f8dbb (diff)
parent07ff5ad8b8e4d0f87770b81b8478aa257567c504 (diff)
downloadnextpnr-b8ca1a55820d6429f5ad5207be1e125b8786e093.tar.gz
nextpnr-b8ca1a55820d6429f5ad5207be1e125b8786e093.tar.bz2
nextpnr-b8ca1a55820d6429f5ad5207be1e125b8786e093.zip
Merge branch 'master' of gitlab.com:SymbioticEDA/nextpnr into q3k/lock-the-things
Diffstat (limited to 'generic')
-rw-r--r--generic/arch.cc12
-rw-r--r--generic/arch.h1
2 files changed, 12 insertions, 1 deletions
diff --git a/generic/arch.cc b/generic/arch.cc
index ec2443f2..390830aa 100644
--- a/generic/arch.cc
+++ b/generic/arch.cc
@@ -181,6 +181,7 @@ void Arch::bindBel(BelId bel, IdString cell, PlaceStrength strength)
bels.at(bel).bound_cell = cell;
cells.at(cell)->bel = bel;
cells.at(cell)->belStrength = strength;
+ refreshUiBel(bel);
}
void Arch::unbindBel(BelId bel)
@@ -188,6 +189,7 @@ void Arch::unbindBel(BelId bel)
cells.at(bels.at(bel).bound_cell)->bel = BelId();
cells.at(bels.at(bel).bound_cell)->belStrength = STRENGTH_NONE;
bels.at(bel).bound_cell = IdString();
+ refreshUiBel(bel);
}
bool Arch::checkBelAvail(BelId bel) const { return bels.at(bel).bound_cell == IdString(); }
@@ -236,6 +238,7 @@ void Arch::bindWire(WireId wire, IdString net, PlaceStrength strength)
wires.at(wire).bound_net = net;
nets.at(net)->wires[wire].pip = PipId();
nets.at(net)->wires[wire].strength = strength;
+ refreshUiWire(wire);
}
void Arch::unbindWire(WireId wire)
@@ -243,11 +246,14 @@ void Arch::unbindWire(WireId wire)
auto &net_wires = nets[wires.at(wire).bound_net]->wires;
auto pip = net_wires.at(wire).pip;
- if (pip != PipId())
+ if (pip != PipId()) {
pips.at(pip).bound_net = IdString();
+ refreshUiPip(pip);
+ }
net_wires.erase(wire);
wires.at(wire).bound_net = IdString();
+ refreshUiWire(wire);
}
bool Arch::checkWireAvail(WireId wire) const { return wires.at(wire).bound_net == IdString(); }
@@ -282,6 +288,8 @@ void Arch::bindPip(PipId pip, IdString net, PlaceStrength strength)
wires.at(wire).bound_net = net;
nets.at(net)->wires[wire].pip = pip;
nets.at(net)->wires[wire].strength = strength;
+ refreshUiPip(pip);
+ refreshUiWire(wire);
}
void Arch::unbindPip(PipId pip)
@@ -290,6 +298,8 @@ void Arch::unbindPip(PipId pip)
nets.at(wires.at(wire).bound_net)->wires.erase(wire);
pips.at(pip).bound_net = IdString();
wires.at(wire).bound_net = IdString();
+ refreshUiPip(pip);
+ refreshUiWire(wire);
}
bool Arch::checkPipAvail(PipId pip) const { return pips.at(pip).bound_net == IdString(); }
diff --git a/generic/arch.h b/generic/arch.h
index f6243404..5d7ac540 100644
--- a/generic/arch.h
+++ b/generic/arch.h
@@ -183,6 +183,7 @@ struct Arch : BaseCtx
float getDelayNS(delay_t v) const { return v; }
uint32_t getDelayChecksum(delay_t v) const { return 0; }
+ bool pack() { return true; }
bool place();
bool route();