Revert "clang-format"

This reverts commit 8ca7a6da25.
This commit is contained in:
Sergiusz Bazanski 2018-07-14 18:50:34 +01:00
parent d4a0feb1ad
commit d9c3c117a3
6 changed files with 169 additions and 80 deletions

View File

@ -21,9 +21,16 @@
NEXTPNR_NAMESPACE_BEGIN NEXTPNR_NAMESPACE_BEGIN
MutateContext BaseCtx::rwproxy(void) { return MutateContext(reinterpret_cast<Arch *>(this)); } MutateContext BaseCtx::rwproxy(void)
{
return MutateContext(reinterpret_cast<Arch *>(this));
}
ReadContext BaseCtx::rproxy(void) const
{
return ReadContext(reinterpret_cast<const Arch *>(this));
}
ReadContext BaseCtx::rproxy(void) const { return ReadContext(reinterpret_cast<const Arch *>(this)); }
assertion_failure::assertion_failure(std::string msg, std::string expr_str, std::string filename, int line) assertion_failure::assertion_failure(std::string msg, std::string expr_str, std::string filename, int line)
: runtime_error("Assertion failure: " + msg + " (" + filename + ":" + std::to_string(line) + ")"), msg(msg), : runtime_error("Assertion failure: " + msg + " (" + filename + ":" + std::to_string(line) + ")"), msg(msg),

View File

@ -19,7 +19,6 @@
#include <algorithm> #include <algorithm>
#include <assert.h> #include <assert.h>
#include <boost/thread/shared_mutex.hpp>
#include <memory> #include <memory>
#include <stdexcept> #include <stdexcept>
#include <stdint.h> #include <stdint.h>
@ -27,6 +26,7 @@
#include <unordered_map> #include <unordered_map>
#include <unordered_set> #include <unordered_set>
#include <vector> #include <vector>
#include <boost/thread/shared_mutex.hpp>
#ifndef NEXTPNR_H #ifndef NEXTPNR_H
#define NEXTPNR_H #define NEXTPNR_H
@ -261,7 +261,6 @@ class BaseCtx
friend class MutateContext; friend class MutateContext;
friend class BaseReadCtx; friend class BaseReadCtx;
friend class BaseMutateCtx; friend class BaseMutateCtx;
private: private:
mutable boost::shared_mutex mtx_; mutable boost::shared_mutex mtx_;
@ -312,6 +311,7 @@ class BaseCtx
// locks can be taken while this one still exists. Ie., the UI can draw // locks can be taken while this one still exists. Ie., the UI can draw
// elements while the PnR is going a RO operation. // elements while the PnR is going a RO operation.
ReadContext rproxy(void) const; ReadContext rproxy(void) const;
}; };
// State-accessing read-only methods that every architecture object should // State-accessing read-only methods that every architecture object should
@ -320,7 +320,6 @@ class BaseReadCtx
{ {
protected: protected:
const BaseCtx *base_; const BaseCtx *base_;
public: public:
BaseReadCtx(const BaseCtx *base) : base_(base) {} BaseReadCtx(const BaseCtx *base) : base_(base) {}
}; };
@ -335,17 +334,35 @@ class BaseMutateCtx
public: public:
BaseMutateCtx(BaseCtx *base) : base_(base) {} BaseMutateCtx(BaseCtx *base) : base_(base) {}
void refreshUi(void) { base_->allUiReload = true; } void refreshUi(void)
{
base_->allUiReload = true;
}
void refreshUiFrame(void) { base_->frameUiReload = true; } void refreshUiFrame(void)
{
base_->frameUiReload = true;
}
void refreshUiBel(BelId bel) { base_->belUiReload.insert(bel); } void refreshUiBel(BelId bel)
{
base_->belUiReload.insert(bel);
}
void refreshUiWire(WireId wire) { base_->wireUiReload.insert(wire); } void refreshUiWire(WireId wire)
{
base_->wireUiReload.insert(wire);
}
void refreshUiPip(PipId pip) { base_->pipUiReload.insert(pip); } void refreshUiPip(PipId pip)
{
base_->pipUiReload.insert(pip);
}
void refreshUiGroup(GroupId group) { base_->groupUiReload.insert(group); } void refreshUiGroup(GroupId group)
{
base_->groupUiReload.insert(group);
}
UIUpdatesRequired getUIUpdatesRequired(void) UIUpdatesRequired getUIUpdatesRequired(void)
{ {
@ -377,11 +394,12 @@ NEXTPNR_NAMESPACE_BEGIN
class ReadContext : public ArchReadMethods class ReadContext : public ArchReadMethods
{ {
friend class BaseCtx; friend class BaseCtx;
private: private:
boost::shared_mutex *lock_; boost::shared_mutex *lock_;
ReadContext(const Arch *parent) : ArchReadMethods(parent), lock_(&parent->mtx_) { lock_->lock_shared(); } ReadContext(const Arch *parent) : ArchReadMethods(parent), lock_(&parent->mtx_)
{
lock_->lock_shared();
}
public: public:
~ReadContext() ~ReadContext()
{ {
@ -389,21 +407,22 @@ class ReadContext : public ArchReadMethods
lock_->unlock_shared(); lock_->unlock_shared();
} }
} }
ReadContext(ReadContext &&other) : ArchReadMethods(other), lock_(other.lock_) { other.lock_ = nullptr; } ReadContext(ReadContext &&other): ArchReadMethods(other), lock_(other.lock_)
{
other.lock_ = nullptr;
}
}; };
// Read proxy to access MutateMethods while holding lock on underlying BaseCtx. // Read proxy to access MutateMethods while holding lock on underlying BaseCtx.
class MutateContext : public ArchReadMethods, public ArchMutateMethods class MutateContext : public ArchReadMethods, public ArchMutateMethods
{ {
friend class BaseCtx; friend class BaseCtx;
private: private:
boost::shared_mutex *lock_; boost::shared_mutex *lock_;
MutateContext(Arch *parent) : ArchReadMethods(parent), ArchMutateMethods(parent), lock_(&parent->mtx_) MutateContext(Arch *parent) : ArchReadMethods(parent), ArchMutateMethods(parent), lock_(&parent->mtx_)
{ {
lock_->lock(); lock_->lock();
} }
public: public:
~MutateContext() ~MutateContext()
{ {
@ -417,6 +436,7 @@ class MutateContext : public ArchReadMethods, public ArchMutateMethods
} }
}; };
struct Context : Arch struct Context : Arch
{ {
bool verbose = false; bool verbose = false;

View File

@ -29,7 +29,8 @@ NEXTPNR_NAMESPACE_BEGIN
typedef int64_t wirelen_t; typedef int64_t wirelen_t;
// Get the total estimated wirelength for a net // Get the total estimated wirelength for a net
template <typename T> wirelen_t get_net_wirelength(const T &proxy, const Context *ctx, const NetInfo *net, float &tns) template <typename T>
wirelen_t get_net_wirelength(const T &proxy, const Context *ctx, const NetInfo *net, float &tns)
{ {
wirelen_t wirelength = 0; wirelen_t wirelength = 0;
int driver_x, driver_y; int driver_x, driver_y;
@ -80,7 +81,8 @@ template <typename T> wirelen_t get_net_wirelength(const T &proxy, const Context
} }
// Return the wirelength of all nets connected to a cell // Return the wirelength of all nets connected to a cell
template <typename T> wirelen_t get_cell_wirelength(const T &proxy, const Context *ctx, const CellInfo *cell) template <typename T>
wirelen_t get_cell_wirelength(const T &proxy, const Context *ctx, const CellInfo *cell)
{ {
std::set<IdString> nets; std::set<IdString> nets;
for (auto p : cell->ports) { for (auto p : cell->ports) {

View File

@ -136,6 +136,7 @@ struct Router
int thisVisitCnt = 0; int thisVisitCnt = 0;
int thisVisitCntLimit = 0; int thisVisitCntLimit = 0;
while (!queue.empty() && (thisVisitCntLimit == 0 || thisVisitCnt < thisVisitCntLimit)) { while (!queue.empty() && (thisVisitCntLimit == 0 || thisVisitCnt < thisVisitCntLimit)) {
QueuedWire qw = queue.top(); QueuedWire qw = queue.top();
queue.pop(); queue.pop();

View File

@ -259,43 +259,99 @@ BelRange Arch::getBelsAtSameTile(BelId bel) const
// ----------------------------------------------------------------------- // -----------------------------------------------------------------------
// Shorthands to ArchProxy // 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) { 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 tx = chip_info->bel_data[bel.index].x;
int ty = chip_info->bel_data[bel.index].y + i; int ty = chip_info->bel_data[bel.index].y + i;
@ -879,6 +936,9 @@ void ArchMutateMethods::unbindPip(PipId pip)
refreshUiWire(dst); 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 NEXTPNR_NAMESPACE_END

View File

@ -343,7 +343,6 @@ class Arch : public BaseCtx
// We let proxy methods access our state. // We let proxy methods access our state.
friend class ArchMutateMethods; friend class ArchMutateMethods;
friend class ArchReadMethods; friend class ArchReadMethods;
private: private:
// All of the following... // All of the following...
std::vector<IdString> bel_to_cell; std::vector<IdString> bel_to_cell;
@ -411,7 +410,10 @@ class Arch : public BaseCtx
return id(chip_info->bel_data[bel.index].name.get()); 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 BelRange getBels() const
{ {
@ -443,6 +445,7 @@ class Arch : public BaseCtx
return chip_info->bel_data[bel.index].type; return chip_info->bel_data[bel.index].type;
} }
BelPin getBelPinUphill(WireId wire) const BelPin getBelPinUphill(WireId wire) const
{ {
BelPin ret; BelPin ret;
@ -546,6 +549,7 @@ class Arch : public BaseCtx
return range; return range;
} }
BelId getPackagePinBel(const std::string &pin) const; BelId getPackagePinBel(const std::string &pin) const;
std::string getBelPackagePin(BelId bel) const; std::string getBelPackagePin(BelId bel) const;
@ -607,8 +611,7 @@ class Arch : public BaseCtx
}; };
// Read-only methods on Arch that require state access. // Read-only methods on Arch that require state access.
class ArchReadMethods : public BaseReadCtx class ArchReadMethods : public BaseReadCtx {
{
private: private:
const Arch *parent_; const Arch *parent_;
const ChipInfoPOD *chip_info; const ChipInfoPOD *chip_info;
@ -622,13 +625,12 @@ class ArchReadMethods : public BaseReadCtx
public: public:
~ArchReadMethods() noexcept { } ~ArchReadMethods() noexcept { }
ArchReadMethods(const Arch *parent) ArchReadMethods(const Arch *parent) : BaseReadCtx(parent), parent_(parent),
: BaseReadCtx(parent), parent_(parent), chip_info(parent->chip_info), bel_to_cell(parent->bel_to_cell), 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), 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), switches_locked(parent->switches_locked),
wire_by_name(parent->wire_by_name), pip_by_name(parent->pip_by_name) 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(ArchReadMethods &&other) noexcept : ArchReadMethods(other.parent_) {}
ArchReadMethods(const ArchReadMethods &other) : ArchReadMethods(other.parent_) {} ArchReadMethods(const ArchReadMethods &other) : ArchReadMethods(other.parent_) {}
@ -667,10 +669,8 @@ class ArchReadMethods : public BaseReadCtx
}; };
// State mutating methods on Arch. // State mutating methods on Arch.
class ArchMutateMethods : public BaseMutateCtx class ArchMutateMethods : public BaseMutateCtx {
{
friend class MutateContext; friend class MutateContext;
private: private:
Arch *parent_; Arch *parent_;
const ChipInfoPOD *chip_info; const ChipInfoPOD *chip_info;
@ -683,13 +683,12 @@ class ArchMutateMethods : public BaseMutateCtx
std::unordered_map<IdString, int> &pip_by_name; std::unordered_map<IdString, int> &pip_by_name;
public: public:
ArchMutateMethods(Arch *parent) ArchMutateMethods(Arch *parent) : BaseMutateCtx(parent), parent_(parent),
: BaseMutateCtx(parent), parent_(parent), chip_info(parent->chip_info), bel_to_cell(parent->bel_to_cell), 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), 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), switches_locked(parent->switches_locked),
wire_by_name(parent->wire_by_name), pip_by_name(parent->pip_by_name) 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(ArchMutateMethods &&other) : ArchMutateMethods(other.parent_) {}
ArchMutateMethods(const ArchMutateMethods &other) : ArchMutateMethods(other.parent_) {} ArchMutateMethods(const ArchMutateMethods &other) : ArchMutateMethods(other.parent_) {}
~ArchMutateMethods() {} ~ArchMutateMethods() {}