22 #ifndef __PNS_DIFF_PLACER_H
23 #define __PNS_DIFF_PLACER_H
25 #include <math/vector2d.h>
27 #include <geometry/shape.h>
28 #include <geometry/shape_line_chain.h>
30 #include "pns_sizes_settings.h"
34 #include "pns_algo_base.h"
35 #include "pns_diff_pair.h"
37 #include "pns_placement_algo.h"
101 bool SetLayer(
int aLayer )
override;
126 const std::vector<int>
CurrentNets()
const override;
135 return m_currentLayer;
190 void updateLeadingRatLine();
197 void setWorld(
NODE* aWorld );
204 void initPlacement( );
212 void setInitialDirection(
const DIRECTION_45& aDirection );
215 bool routeHead(
const VECTOR2I& aP );
216 bool tryWalkDp(
NODE* aNode,
DIFF_PAIR& aPair,
bool aSolidsOnly );
219 bool rhWalkOnly(
const VECTOR2I& aP );
222 bool rhShoveOnly (
const VECTOR2I& aP );
225 bool rhMarkObstacles(
const VECTOR2I& aP );
227 const VIA makeVia (
const VECTOR2I& aP,
int aNet );
230 OPT_VECTOR2I getDanglingAnchor(
NODE* aNode,
ITEM* aItem );
231 bool attemptWalk(
NODE* aNode,
DIFF_PAIR* aCurrent,
DIFF_PAIR& aWalk,
bool aPFirst,
bool aWindCw,
bool aSolidsOnly );
242 bool m_chainedPlacement;
243 bool m_initialDiagonal;
244 bool m_startDiagonal;
249 DP_PRIMITIVE_PAIR m_start;
250 OPT<DP_PRIMITIVE_PAIR> m_prevPair;
270 SIZES_SETTINGS m_sizes;
291 VECTOR2I m_currentEnd, m_currentStart;
292 DIFF_PAIR m_currentTrace;
294 ITEM* m_currentEndItem;
295 PNS_MODE m_currentMode;
302 #endif // __PNS_LINE_PLACER_H
void UpdateSizes(const SIZES_SETTINGS &aSizes) override
Function UpdateSizes()
Definition: pns_diff_pair_placer.cpp:703
const std::vector< int > CurrentNets() const override
Function CurrentNets()
Definition: pns_diff_pair_placer.cpp:807
Definition: pns_sizes_settings.h:37
bool IsPlacingVia() const override
Function IsPlacingVia()
Definition: pns_diff_pair_placer.h:161
bool SetLayer(int aLayer) override
Function SetLayer()
Definition: pns_diff_pair_placer.cpp:381
Class DP_PRIMITIVE_PAIR.
Definition: pns_diff_pair.h:136
Definition: pns_router.h:109
bool Start(const VECTOR2I &aP, ITEM *aStartItem) override
Function Start()
Definition: pns_diff_pair_placer.cpp:520
Class PLACEMENT_ALGO.
Definition: pns_placement_algo.h:45
Class LINE_PLACER.
Definition: pns_diff_pair_placer.h:55
Class DIFF_PAIR.
Definition: pns_diff_pair.h:265
NODE * CurrentNode(bool aLoopsRemoved=false) const override
Function CurrentNode()
Definition: pns_diff_pair_placer.cpp:372
void SetOrthoMode(bool aOrthoMode) override
Function SetOrthoMode()
Definition: pns_diff_pair_placer.cpp:90
void FlipPosture() override
Function FlipPosture()
Definition: pns_diff_pair_placer.cpp:363
bool ToggleVia(bool aEnabled) override
Function ToggleVia()
Definition: pns_diff_pair_placer.cpp:99
bool FixRoute(const VECTOR2I &aP, ITEM *aEndItem, bool aForceFinish) override
Function FixRoute()
Definition: pns_diff_pair_placer.cpp:715
Definition: pns_itemset.h:39
Class ITEM.
Definition: pns_item.h:54
int CurrentLayer() const override
Function CurrentLayer()
Definition: pns_diff_pair_placer.h:133
void GetModifiedNets(std::vector< int > &aNets) const override
Function GetModifiedNets.
Definition: pns_diff_pair_placer.cpp:783
Class NODE.
Definition: pns_node.h:136
const ITEM_SET Traces() override
Function Traces()
Definition: pns_diff_pair_placer.cpp:352
Class DIRECTION_45.
Definition: direction45.h:36
const VECTOR2I & CurrentEnd() const override
Function CurrentEnd()
Definition: pns_diff_pair_placer.h:116
bool Move(const VECTOR2I &aP, ITEM *aEndItem) override
Function Move()
Definition: pns_diff_pair_placer.cpp:680