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"
55 class DIFF_PAIR_PLACER :
public PLACEMENT_ALGO
58 DIFF_PAIR_PLACER( ROUTER* aRouter );
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;
250 OPT<DP_PRIMITIVE_PAIR> m_prevPair;
291 VECTOR2I m_currentEnd, m_currentStart;
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_sizes_settings.h:37
bool IsPlacingVia() const override
Function IsPlacingVia()
Definition: pns_diff_pair_placer.h:161
bool SetLayer(int aLayer) override
Function SetLayer()
Class DP_PRIMITIVE_PAIR.
Definition: pns_diff_pair.h:137
const std::vector< int > CurrentNets() const override
Function CurrentNets()
bool Start(const VECTOR2I &aP, ITEM *aStartItem) override
Function Start()
Class DIFF_PAIR.
Definition: pns_diff_pair.h:265
void SetOrthoMode(bool aOrthoMode) override
Function SetOrthoMode()
void FlipPosture() override
Function FlipPosture()
Class SHOVE.
Definition: pns_shove.h:47
bool ToggleVia(bool aEnabled) override
Function ToggleVia()
bool FixRoute(const VECTOR2I &aP, ITEM *aEndItem, bool aForceFinish) override
Function FixRoute()
Definition: pns_itemset.h:40
Class ITEM.
Definition: pns_item.h:55
int CurrentLayer() const override
Function CurrentLayer()
Definition: pns_diff_pair_placer.h:133
void GetModifiedNets(std::vector< int > &aNets) const override
Function GetModifiedNets.
Class NODE.
Definition: pns_node.h:138
const ITEM_SET Traces() override
Function Traces()
Class DIRECTION_45.
Definition: direction45.h:37
NODE * CurrentNode(bool aLoopsRemoved=false) const override
Function CurrentNode()
const VECTOR2I & CurrentEnd() const override
Function CurrentEnd()
Definition: pns_diff_pair_placer.h:116
bool Move(const VECTOR2I &aP, ITEM *aEndItem) override
Function Move()