46 operator int ()
const {
return mIndex; }
97 class NetLayoutJunctionWire;
128 bool contains(
int pos)
const {
return mFirst <= pos && pos <= mLast; }
135 bool innerPos(
int pos)
const {
return mFirst < pos && pos < mLast; }
149 bool isEntry(
int iTestMax)
const;
171 int first()
const {
return mFirst; }
183 int last()
const {
return mLast; }
195 int length()
const {
return mLast-mFirst; }
405 #ifdef JUNCTION_DEBUG
424 #ifdef JUNCTION_DEBUG
427 int numberSteps()
const {
return mOccupied.mHistory.
size(); }
431 void routeAllStraight(NetLayoutDirection dirFrom, NetLayoutDirection dirTo);
432 void routeAllCorner(NetLayoutDirection dirHoriz, NetLayoutDirection dirVertic);
433 void routeSingleStraight(
u32 netId,
int iMain,
int iroadIn,
int iroadOut);
434 void routeSingleSwap(
u32 netId,
int iMain,
int iroadIn,
int iroadOut);
435 void routeSingleCorner(
u32 netId, NetLayoutDirection dirHoriz, NetLayoutDirection dirVertic);
441 void routeAllMultiPin(NetLayoutDirection leftOrRight);
449 void routeSingleMultiPin(
u32 netId, NetLayoutDirection leftOrRight,
const NetLayoutJunctionMultiPin &nmpin);
450 void findJunctions();
451 void calculateRect();
452 bool conflict(
const LaneIndex& ri,
const NetLayoutJunctionRange& testRng)
const;
453 void place(
const LaneIndex& ri,
const NetLayoutJunctionRange& range);
454 bool canJoin(
const LaneIndex& ri,
u32 netId,
int pos)
const;
457 NetLayoutJunctionEntries mEntries;
459 NetLayoutJunctionOccupiedHash mOccupied;
475 #ifdef JUNCTION_DEBUG
LaneIndex(HVIndex ihv, int ilane)
static LaneIndex horizontal(int ilane)
bool isHorizontal() const
static LaneIndex vertical(int ilane)
friend uint qHash(const LaneIndex &ri)
static QString gridPointName(const QPoint &p)
u32 id(NetLayoutDirection dir, int ilane) const
void dumpToFile(const QPoint &pnt) const
~NetLayoutJunctionHash()=default
NetLayoutJunctionHash()=default
NetLayoutJunctionNet netById(u32 id) const
ErrorType lastError() const
NetLayoutJunction(const NetLayoutJunctionEntries &entries)
NetLayoutJunctionMultiPin()
Single net to be routed through the junction.
QList< QPoint > junctionKnots() const
QList< NetLayoutJunctionWire > wireAtPos(int pos, LaneIndex::HVIndex hvi)
QList< NetLayoutJunctionWire > mWires
int laneIndex(NetLayoutDirection dir) const
void addWire(const NetLayoutJunctionWire &wire)
void addEntry(NetLayoutDirection dir, int laneInx)
int numberEntries() const
void replaceWire(const NetLayoutJunctionRange &rng, const NetLayoutJunctionWire &wire)
bool hasPattern(u32 searchPattern) const
NetLayoutJunctionRange * mNewRange
NetLayoutJunctionRange * mOldRange
enum hal::NetLayoutJunctionOccupiedHash::AddOrMerge::Type mType
AddOrMerge addOrMerge(const LaneIndex &ri, const NetLayoutJunctionRange &rng)
bool conflict(const NetLayoutJunctionRange &test) const
bool canJoin(u32 netId, int pos) const
bool contains(int pos) const
int endPosition(int iGetLast) const
bool conflict(const NetLayoutJunctionRange &other) const
void expand(const NetLayoutJunctionRange &other)
bool canJoin(const NetLayoutJunctionRange &other) const
bool innerPos(int pos) const
static NetLayoutJunctionRange entryRange(NetLayoutDirection dir, int ilane, u32 netId)
NetLayoutJunctionRange(u32 netId_, int first, int last)
bool operator==(const NetLayoutJunctionRange &other) const
bool isEntry(int iTestMax) const
NetLayoutJunctionRange mRange
NetLayoutJunctionWire(const NetLayoutJunctionRange &rng, const LaneIndex &li)
uint qHash(const LaneIndex &ri)
const T & at(int i) const const
QString arg(qlonglong a, int fieldWidth, int base, QChar fillChar) const const