diff options
author | Dan Ravensloft <dan.ravensloft@gmail.com> | 2021-02-03 00:12:14 +0000 |
---|---|---|
committer | gatecat <gatecat@ds0.me> | 2021-05-15 14:54:33 +0100 |
commit | fcdf1e0bfdb45f1ee8a315d1d1ca0a07ca66f7a4 (patch) | |
tree | 0a11e16f7a53b85aabaa2d236acbf0ec52f40e4c | |
parent | 189164e7c8a862aad7b7a2b57e1ad3b729f47775 (diff) | |
download | nextpnr-fcdf1e0bfdb45f1ee8a315d1d1ca0a07ca66f7a4.tar.gz nextpnr-fcdf1e0bfdb45f1ee8a315d1d1ca0a07ca66f7a4.tar.bz2 nextpnr-fcdf1e0bfdb45f1ee8a315d1d1ca0a07ca66f7a4.zip |
bind/unbind bel
-rw-r--r-- | cyclonev/arch.cc | 16 | ||||
-rw-r--r-- | cyclonev/arch.h | 20 |
2 files changed, 36 insertions, 0 deletions
diff --git a/cyclonev/arch.cc b/cyclonev/arch.cc index f5dd35eb..ac19b7d2 100644 --- a/cyclonev/arch.cc +++ b/cyclonev/arch.cc @@ -90,6 +90,22 @@ IdString Arch::getBelName(BelId bel) const return id(bel_str); } +void Arch::bindBel(BelId bel, CellInfo *cell, PlaceStrength strength) +{ + bels.at(bel).bound_cell = cell; + cell->bel = bel; + cell->belStrength = strength; + refreshUiBel(bel); +} + +void Arch::unbindBel(BelId bel) +{ + bels.at(bel).bound_cell->bel = BelId(); + bels.at(bel).bound_cell->belStrength = STRENGTH_NONE; + bels.at(bel).bound_cell = nullptr; + refreshUiBel(bel); +} +bool Arch::checkBelAvail(BelId bel) const { return bels.at(bel).bound_cell == nullptr; } NEXTPNR_NAMESPACE_END
\ No newline at end of file diff --git a/cyclonev/arch.h b/cyclonev/arch.h index cdf41f39..cd5905cd 100644 --- a/cyclonev/arch.h +++ b/cyclonev/arch.h @@ -30,11 +30,31 @@ struct ArchArgs std::string device; }; +struct BelInfo +{ + IdString name, type; + std::map<IdString, std::string> attrs; + CellInfo *bound_cell; + std::unordered_map<IdString, PinInfo> pins; + DecalXY decalxy; + int x, y, z; + bool gb; +}; + +struct PinInfo +{ + IdString name; + WireId wire; + PortType type; +}; + struct Arch : BaseCtx { ArchArgs args; mistral::CycloneV* cyclonev; + std::unordered_map<IdString, BelInfo> bels; + Arch(ArchArgs args); std::string getChipName() const { return std::string{"TODO: getChipName"}; } |