22 #ifndef __PNS_DP_MEANDER_PLACER_H
23 #define __PNS_DP_MEANDER_PLACER_H
25 #include <math/vector2d.h>
27 #include <geometry/shape.h>
28 #include <geometry/shape_line_chain.h>
33 #include "pns_placement_algo.h"
34 #include "pns_meander.h"
35 #include "pns_meander_placer_base.h"
36 #include "pns_diff_pair.h"
37 #include "pns_debug_decorator.h"
49 class DP_MEANDER_PLACER :
public MEANDER_PLACER_BASE
52 DP_MEANDER_PLACER( ROUTER* aRouter );
70 bool Move(
const VECTOR2I& aP, ITEM* aEndItem )
override;
81 bool FixRoute(
const VECTOR2I& aP, ITEM* aEndItem,
bool aForceFinish =
false )
override;
83 const LINE Trace()
const;
90 NODE*
CurrentNode(
bool aLoopsRemoved =
false )
const override;
92 const ITEM_SET
Traces()
override;
97 const std::vector<int>
CurrentNets()
const override;
103 const std::string
TuningInfo()
const override;
106 bool CheckFit( MEANDER_SHAPE* aShape )
override;
110 friend class MEANDER_SHAPE;
112 void meanderSegment(
const SEG& aBase );
117 const SEG baselineSegment(
const DIFF_PAIR::COUPLED_SEGMENTS& aCoupledSegs );
118 bool pairOrientation(
const DIFF_PAIR::COUPLED_SEGMENTS& aPair );
120 void setWorld( NODE* aWorld );
123 int origPathLength()
const;
134 DIFF_PAIR m_originPair;
135 DIFF_PAIR::COUPLED_SEGMENTS_VEC m_coupledSegments;
137 LINE m_currentTraceN, m_currentTraceP;
138 ITEM_SET m_tunedPath, m_tunedPathP, m_tunedPathN;
141 MEANDERED_LINE m_result;
142 SEGMENT* m_initialSegment;
150 #endif // __PNS_DP_MEANDER_PLACER_H
TUNING_STATUS TuningStatus() const override
Function TuningStatus()
Definition: pns_dp_meander_placer.cpp:392
bool CheckFit(MEANDER_SHAPE *aShape) override
Function CheckFit()
Definition: pns_dp_meander_placer.cpp:318
NODE * CurrentNode(bool aLoopsRemoved=false) const override
Function CurrentNode()
Definition: pns_dp_meander_placer.cpp:61
TUNING_STATUS
Result of the length tuning operation
Definition: pns_meander_placer_base.h:52
const VECTOR2I & CurrentEnd() const override
Function CurrentEnd()
Definition: pns_dp_meander_placer.cpp:350
bool Move(const VECTOR2I &aP, ITEM *aEndItem) override
Function Move()
Definition: pns_dp_meander_placer.cpp:164
const std::string TuningInfo() const override
Function TuningInfo()
Definition: pns_dp_meander_placer.cpp:362
bool FixRoute(const VECTOR2I &aP, ITEM *aEndItem, bool aForceFinish=false) override
Function FixRoute()
Definition: pns_dp_meander_placer.cpp:304
const ITEM_SET Traces() override
Function Traces()
Definition: pns_dp_meander_placer.cpp:336
bool Start(const VECTOR2I &aP, ITEM *aStartItem) override
Function Start()
Definition: pns_dp_meander_placer.cpp:70
int CurrentLayer() const override
Function CurrentLayer()
Definition: pns_dp_meander_placer.cpp:356
const std::vector< int > CurrentNets() const override
Function CurrentNets()
Definition: pns_dp_meander_placer.cpp:397
Class SHAPE_LINE_CHAIN.
Definition: shape_line_chain.h:50