diff options
Diffstat (limited to 'ice40')
-rw-r--r-- | ice40/arch.cc | 104 | ||||
-rw-r--r-- | ice40/arch.h | 55 |
2 files changed, 109 insertions, 50 deletions
diff --git a/ice40/arch.cc b/ice40/arch.cc index 8f2731c6..790167e9 100644 --- a/ice40/arch.cc +++ b/ice40/arch.cc @@ -259,43 +259,99 @@ BelRange Arch::getBelsAtSameTile(BelId bel) const // ----------------------------------------------------------------------- // Shorthands to ArchProxy -BelId Arch::getBelByName(IdString name) const { return rproxy().getBelByName(name); } +BelId Arch::getBelByName(IdString name) const +{ + return rproxy().getBelByName(name); +} -void Arch::bindWire(WireId wire, IdString net, PlaceStrength strength) { rwproxy().bindWire(wire, net, strength); } +void Arch::bindWire(WireId wire, IdString net, PlaceStrength strength) +{ + rwproxy().bindWire(wire, net, strength); +} -void Arch::unbindWire(WireId wire) { rwproxy().unbindWire(wire); } +void Arch::unbindWire(WireId wire) +{ + rwproxy().unbindWire(wire); +} -void Arch::bindBel(BelId bel, IdString cell, PlaceStrength strength) { rwproxy().bindBel(bel, cell, strength); } +void Arch::bindBel(BelId bel, IdString cell, PlaceStrength strength) { + rwproxy().bindBel(bel, cell, strength); +} -void Arch::unbindBel(BelId bel) { rwproxy().unbindBel(bel); } +void Arch::unbindBel(BelId bel) +{ + rwproxy().unbindBel(bel); +} -bool Arch::checkBelAvail(BelId bel) const { return rproxy().checkBelAvail(bel); } +bool Arch::checkBelAvail(BelId bel) const +{ + return rproxy().checkBelAvail(bel); +} -IdString Arch::getBoundBelCell(BelId bel) const { return rproxy().getBoundBelCell(bel); } +IdString Arch::getBoundBelCell(BelId bel) const +{ + return rproxy().getBoundBelCell(bel); +} -IdString Arch::getConflictingBelCell(BelId bel) const { return rproxy().getConflictingBelCell(bel); } +IdString Arch::getConflictingBelCell(BelId bel) const +{ + return rproxy().getConflictingBelCell(bel); +} -WireId Arch::getWireByName(IdString name) const { return rproxy().getWireByName(name); } +WireId Arch::getWireByName(IdString name) const +{ + return rproxy().getWireByName(name); +} -WireId Arch::getWireBelPin(BelId bel, PortPin pin) const { return rproxy().getWireBelPin(bel, pin); } +WireId Arch::getWireBelPin(BelId bel, PortPin pin) const +{ + return rproxy().getWireBelPin(bel, pin); +} -bool Arch::checkWireAvail(WireId wire) const { return rproxy().checkWireAvail(wire); } +bool Arch::checkWireAvail(WireId wire) const +{ + return rproxy().checkWireAvail(wire); +} -IdString Arch::getBoundWireNet(WireId wire) const { return rproxy().getBoundWireNet(wire); } +IdString Arch::getBoundWireNet(WireId wire) const +{ + return rproxy().getBoundWireNet(wire); +} -IdString Arch::getConflictingWireNet(WireId wire) const { return rproxy().getConflictingWireNet(wire); } +IdString Arch::getConflictingWireNet(WireId wire) const +{ + return rproxy().getConflictingWireNet(wire); +} -PipId Arch::getPipByName(IdString name) const { return rproxy().getPipByName(name); } +PipId Arch::getPipByName(IdString name) const +{ + return rproxy().getPipByName(name); +} -void Arch::bindPip(PipId pip, IdString net, PlaceStrength strength) { return rwproxy().bindPip(pip, net, strength); } +void Arch::bindPip(PipId pip, IdString net, PlaceStrength strength) +{ + return rwproxy().bindPip(pip, net, strength); +} -void Arch::unbindPip(PipId pip) { return rwproxy().unbindPip(pip); } +void Arch::unbindPip(PipId pip) +{ + return rwproxy().unbindPip(pip); +} -bool Arch::checkPipAvail(PipId pip) const { return rproxy().checkPipAvail(pip); } +bool Arch::checkPipAvail(PipId pip) const +{ + return rproxy().checkPipAvail(pip); +} -IdString Arch::getBoundPipNet(PipId pip) const { return rproxy().getBoundPipNet(pip); } +IdString Arch::getBoundPipNet(PipId pip) const +{ + return rproxy().getBoundPipNet(pip); +} -IdString Arch::getConflictingPipNet(PipId pip) const { return rproxy().getConflictingPipNet(pip); } +IdString Arch::getConflictingPipNet(PipId pip) const +{ + return rproxy().getConflictingPipNet(pip); +} // ----------------------------------------------------------------------- @@ -574,7 +630,8 @@ std::vector<GraphicElement> ArchReadMethods::getDecalGraphics(DecalId decal) con } if (bel_type == TYPE_ICESTORM_RAM) { - for (int i = 0; i < 2; i++) { + for (int i = 0; i < 2; i++) + { int tx = chip_info->bel_data[bel.index].x; int ty = chip_info->bel_data[bel.index].y + i; @@ -584,7 +641,7 @@ std::vector<GraphicElement> ArchReadMethods::getDecalGraphics(DecalId decal) con el.x1 = chip_info->bel_data[bel.index].x + logic_cell_x1; el.x2 = chip_info->bel_data[bel.index].x + logic_cell_x2; el.y1 = chip_info->bel_data[bel.index].y + logic_cell_y1; - el.y2 = chip_info->bel_data[bel.index].y + logic_cell_y2 + 7 * logic_cell_pitch; + el.y2 = chip_info->bel_data[bel.index].y + logic_cell_y2 + 7*logic_cell_pitch; el.z = 0; ret.push_back(el); @@ -879,6 +936,9 @@ void ArchMutateMethods::unbindPip(PipId pip) refreshUiWire(dst); } -CellInfo *ArchMutateMethods::getCell(IdString cell) { return parent_->cells.at(cell).get(); } +CellInfo *ArchMutateMethods::getCell(IdString cell) +{ + return parent_->cells.at(cell).get(); +} NEXTPNR_NAMESPACE_END diff --git a/ice40/arch.h b/ice40/arch.h index f41990c3..5d4eaedf 100644 --- a/ice40/arch.h +++ b/ice40/arch.h @@ -343,8 +343,7 @@ class Arch : public BaseCtx // We let proxy methods access our state. friend class ArchMutateMethods; friend class ArchReadMethods; - - private: +private: // All of the following... std::vector<IdString> bel_to_cell; std::vector<IdString> wire_to_net; @@ -354,7 +353,7 @@ class Arch : public BaseCtx mutable std::unordered_map<IdString, int> wire_by_name; mutable std::unordered_map<IdString, int> pip_by_name; - public: +public: const ChipInfoPOD *chip_info; const PackageInfoPOD *package_info; @@ -411,7 +410,10 @@ class Arch : public BaseCtx return id(chip_info->bel_data[bel.index].name.get()); } - uint32_t getBelChecksum(BelId bel) const { return bel.index; } + uint32_t getBelChecksum(BelId bel) const + { + return bel.index; + } BelRange getBels() const { @@ -443,6 +445,7 @@ class Arch : public BaseCtx return chip_info->bel_data[bel.index].type; } + BelPin getBelPinUphill(WireId wire) const { BelPin ret; @@ -546,6 +549,7 @@ class Arch : public BaseCtx return range; } + BelId getPackagePinBel(const std::string &pin) const; std::string getBelPackagePin(BelId bel) const; @@ -607,9 +611,8 @@ class Arch : public BaseCtx }; // Read-only methods on Arch that require state access. -class ArchReadMethods : public BaseReadCtx -{ - private: +class ArchReadMethods : public BaseReadCtx { +private: const Arch *parent_; const ChipInfoPOD *chip_info; const std::vector<IdString> &bel_to_cell; @@ -620,15 +623,14 @@ class ArchReadMethods : public BaseReadCtx std::unordered_map<IdString, int> &wire_by_name; std::unordered_map<IdString, int> &pip_by_name; - public: - ~ArchReadMethods() noexcept {} - ArchReadMethods(const Arch *parent) - : BaseReadCtx(parent), parent_(parent), chip_info(parent->chip_info), bel_to_cell(parent->bel_to_cell), - wire_to_net(parent->wire_to_net), pip_to_net(parent->pip_to_net), - switches_locked(parent->switches_locked), bel_by_name(parent->bel_by_name), - wire_by_name(parent->wire_by_name), pip_by_name(parent->pip_by_name) - { - } +public: + ~ArchReadMethods() noexcept { } + ArchReadMethods(const Arch *parent) : BaseReadCtx(parent), parent_(parent), + chip_info(parent->chip_info), bel_to_cell(parent->bel_to_cell), + wire_to_net(parent->wire_to_net), pip_to_net(parent->pip_to_net), + switches_locked(parent->switches_locked), + bel_by_name(parent->bel_by_name), wire_by_name(parent->wire_by_name), + pip_by_name(parent->pip_by_name) {} ArchReadMethods(ArchReadMethods &&other) noexcept : ArchReadMethods(other.parent_) {} ArchReadMethods(const ArchReadMethods &other) : ArchReadMethods(other.parent_) {} @@ -667,11 +669,9 @@ class ArchReadMethods : public BaseReadCtx }; // State mutating methods on Arch. -class ArchMutateMethods : public BaseMutateCtx -{ +class ArchMutateMethods : public BaseMutateCtx { friend class MutateContext; - - private: +private: Arch *parent_; const ChipInfoPOD *chip_info; std::vector<IdString> &bel_to_cell; @@ -682,14 +682,13 @@ class ArchMutateMethods : public BaseMutateCtx std::unordered_map<IdString, int> &wire_by_name; std::unordered_map<IdString, int> &pip_by_name; - public: - ArchMutateMethods(Arch *parent) - : BaseMutateCtx(parent), parent_(parent), chip_info(parent->chip_info), bel_to_cell(parent->bel_to_cell), - wire_to_net(parent->wire_to_net), pip_to_net(parent->pip_to_net), - switches_locked(parent->switches_locked), bel_by_name(parent->bel_by_name), - wire_by_name(parent->wire_by_name), pip_by_name(parent->pip_by_name) - { - } +public: + ArchMutateMethods(Arch *parent) : BaseMutateCtx(parent), parent_(parent), + chip_info(parent->chip_info), bel_to_cell(parent->bel_to_cell), + wire_to_net(parent->wire_to_net), pip_to_net(parent->pip_to_net), + switches_locked(parent->switches_locked), + bel_by_name(parent->bel_by_name), wire_by_name(parent->wire_by_name), + pip_by_name(parent->pip_by_name) {} ArchMutateMethods(ArchMutateMethods &&other) : ArchMutateMethods(other.parent_) {} ArchMutateMethods(const ArchMutateMethods &other) : ArchMutateMethods(other.parent_) {} ~ArchMutateMethods() {} |