From d327a0afbb6a92553647444c0baaeb4971a0847b Mon Sep 17 00:00:00 2001 From: Sergiusz Bazanski Date: Sat, 14 Jul 2018 19:01:33 +0100 Subject: Revert "Make ice40::Arch thread-safe" This reverts commit 0816f447b768ebe0632f419e9b696714dda4e860. --- ice40/arch.h | 38 ++++++-------------------------------- 1 file changed, 6 insertions(+), 32 deletions(-) (limited to 'ice40/arch.h') diff --git a/ice40/arch.h b/ice40/arch.h index a7af3269..e42da422 100644 --- a/ice40/arch.h +++ b/ice40/arch.h @@ -21,9 +21,6 @@ #error Include "arch.h" via "nextpnr.h" only. #endif -#include -#include - NEXTPNR_NAMESPACE_BEGIN /**** Everything in this section must be kept in sync with chipdb.py ****/ @@ -327,17 +324,8 @@ struct ArchArgs std::string package; }; -class Arch : public BaseCtx +struct Arch : BaseCtx { -private: - // All of the following... - std::vector bel_to_cell; - std::vector wire_to_net; - std::vector pip_to_net; - std::vector switches_locked; - // ... are guarded by the following lock: - mutable boost::shared_mutex mtx_; -public: const ChipInfoPOD *chip_info; const PackageInfoPOD *package_info; @@ -345,6 +333,11 @@ public: mutable std::unordered_map wire_by_name; mutable std::unordered_map pip_by_name; + std::vector bel_to_cell; + std::vector wire_to_net; + std::vector pip_to_net; + std::vector switches_locked; + ArchArgs args; Arch(ArchArgs args); @@ -375,7 +368,6 @@ public: { NPNR_ASSERT(bel != BelId()); NPNR_ASSERT(bel_to_cell[bel.index] == IdString()); - boost::lock_guard lock(mtx_); bel_to_cell[bel.index] = cell; cells[cell]->bel = bel; cells[cell]->belStrength = strength; @@ -385,7 +377,6 @@ public: { NPNR_ASSERT(bel != BelId()); NPNR_ASSERT(bel_to_cell[bel.index] != IdString()); - boost::lock_guard lock(mtx_); cells[bel_to_cell[bel.index]]->bel = BelId(); cells[bel_to_cell[bel.index]]->belStrength = STRENGTH_NONE; bel_to_cell[bel.index] = IdString(); @@ -394,21 +385,18 @@ public: bool checkBelAvail(BelId bel) const { NPNR_ASSERT(bel != BelId()); - boost::shared_lock_guard lock(mtx_); return bel_to_cell[bel.index] == IdString(); } IdString getBoundBelCell(BelId bel) const { NPNR_ASSERT(bel != BelId()); - boost::shared_lock_guard lock(mtx_); return bel_to_cell[bel.index]; } IdString getConflictingBelCell(BelId bel) const { NPNR_ASSERT(bel != BelId()); - boost::shared_lock_guard lock(mtx_); return bel_to_cell[bel.index]; } @@ -482,8 +470,6 @@ public: { NPNR_ASSERT(wire != WireId()); NPNR_ASSERT(wire_to_net[wire.index] == IdString()); - boost::lock_guard lock(mtx_); - wire_to_net[wire.index] = net; nets[net]->wires[wire].pip = PipId(); nets[net]->wires[wire].strength = strength; @@ -493,7 +479,6 @@ public: { NPNR_ASSERT(wire != WireId()); NPNR_ASSERT(wire_to_net[wire.index] != IdString()); - boost::lock_guard lock(mtx_); auto &net_wires = nets[wire_to_net[wire.index]]->wires; auto it = net_wires.find(wire); @@ -512,24 +497,18 @@ public: bool checkWireAvail(WireId wire) const { NPNR_ASSERT(wire != WireId()); - boost::shared_lock_guard lock(mtx_); - return wire_to_net[wire.index] == IdString(); } IdString getBoundWireNet(WireId wire) const { NPNR_ASSERT(wire != WireId()); - boost::shared_lock_guard lock(mtx_); - return wire_to_net[wire.index]; } IdString getConflictingWireNet(WireId wire) const { NPNR_ASSERT(wire != WireId()); - boost::shared_lock_guard lock(mtx_); - return wire_to_net[wire.index]; } @@ -553,7 +532,6 @@ public: NPNR_ASSERT(pip != PipId()); NPNR_ASSERT(pip_to_net[pip.index] == IdString()); NPNR_ASSERT(switches_locked[chip_info->pip_data[pip.index].switch_index] == IdString()); - boost::lock_guard lock(mtx_); pip_to_net[pip.index] = net; switches_locked[chip_info->pip_data[pip.index].switch_index] = net; @@ -571,7 +549,6 @@ public: NPNR_ASSERT(pip != PipId()); NPNR_ASSERT(pip_to_net[pip.index] != IdString()); NPNR_ASSERT(switches_locked[chip_info->pip_data[pip.index].switch_index] != IdString()); - boost::lock_guard lock(mtx_); WireId dst; dst.index = chip_info->pip_data[pip.index].dst; @@ -586,21 +563,18 @@ public: bool checkPipAvail(PipId pip) const { NPNR_ASSERT(pip != PipId()); - boost::shared_lock_guard lock(mtx_); return switches_locked[chip_info->pip_data[pip.index].switch_index] == IdString(); } IdString getBoundPipNet(PipId pip) const { NPNR_ASSERT(pip != PipId()); - boost::shared_lock_guard lock(mtx_); return pip_to_net[pip.index]; } IdString getConflictingPipNet(PipId pip) const { NPNR_ASSERT(pip != PipId()); - boost::shared_lock_guard lock(mtx_); return switches_locked[chip_info->pip_data[pip.index].switch_index]; } -- cgit v1.2.3