KiCad PCB EDA Suite
|
Public Member Functions | |
PNS_PCBNEW_RULE_RESOLVER (BOARD *aBoard, PNS::ROUTER_IFACE *aRouterIface) | |
virtual | ~PNS_PCBNEW_RULE_RESOLVER () |
virtual int | Clearance (const PNS::ITEM *aA, const PNS::ITEM *aB, bool aUseClearanceEpsilon=true) override |
virtual int | HoleClearance (const PNS::ITEM *aA, const PNS::ITEM *aB, bool aUseClearanceEpsilon=true) override |
virtual int | HoleToHoleClearance (const PNS::ITEM *aA, const PNS::ITEM *aB, bool aUseClearanceEpsilon=true) override |
virtual int | DpCoupledNet (int aNet) override |
virtual int | DpNetPolarity (int aNet) override |
virtual bool | DpNetPair (const PNS::ITEM *aItem, int &aNetP, int &aNetN) override |
virtual bool | IsDiffPair (const PNS::ITEM *aA, const PNS::ITEM *aB) override |
virtual bool | IsInNetTie (const PNS::ITEM *aA) override |
virtual bool | IsNetTieExclusion (const PNS::ITEM *aItem, const VECTOR2I &aCollisionPos, const PNS::ITEM *aCollidingItem) override |
virtual bool | QueryConstraint (PNS::CONSTRAINT_TYPE aType, const PNS::ITEM *aItemA, const PNS::ITEM *aItemB, int aLayer, PNS::CONSTRAINT *aConstraint) override |
virtual wxString | NetName (int aNet) override |
int | ClearanceEpsilon () const |
void | ClearCacheForItem (const PNS::ITEM *aItem) override |
void | ClearCaches () override |
Private Member Functions | |
int | holeRadius (const PNS::ITEM *aItem) const |
int | matchDpSuffix (const wxString &aNetName, wxString &aComplementNet) |
Checks for netnamed differential pairs. More... | |
Private Attributes | |
PNS::ROUTER_IFACE * | m_routerIface |
BOARD * | m_board |
PCB_TRACK | m_dummyTracks [2] |
PCB_ARC | m_dummyArcs [2] |
PCB_VIA | m_dummyVias [2] |
int | m_clearanceEpsilon |
std::unordered_map< CLEARANCE_CACHE_KEY, int > | m_clearanceCache |
std::unordered_map< CLEARANCE_CACHE_KEY, int > | m_holeClearanceCache |
std::unordered_map< CLEARANCE_CACHE_KEY, int > | m_holeToHoleClearanceCache |
Definition at line 101 of file pns_kicad_iface.cpp.
PNS_PCBNEW_RULE_RESOLVER::PNS_PCBNEW_RULE_RESOLVER | ( | BOARD * | aBoard, |
PNS::ROUTER_IFACE * | aRouterIface | ||
) |
Definition at line 161 of file pns_kicad_iface.cpp.
|
virtual |
Definition at line 176 of file pns_kicad_iface.cpp.
|
overridevirtual |
Implements PNS::RULE_RESOLVER.
Definition at line 405 of file pns_kicad_iface.cpp.
References PNS::CT_CLEARANCE, PNS::CT_EDGE_CLEARANCE, LAYER_RANGE::End(), LAYER_RANGE::Intersection(), isCopper(), isEdge(), PNS::ITEM::Layers(), m_clearanceCache, m_clearanceEpsilon, PNS::CONSTRAINT::m_Value, MINOPTMAX< T >::Min(), PCB_LAYER_ID_COUNT, PCBNEW_LAYER_ID_START, QueryConstraint(), and LAYER_RANGE::Start().
|
inline |
Definition at line 128 of file pns_kicad_iface.cpp.
References m_clearanceEpsilon.
Referenced by PNS_KICAD_IFACE_BASE::SyncWorld().
|
overridevirtual |
Reimplemented from PNS::RULE_RESOLVER.
Definition at line 387 of file pns_kicad_iface.cpp.
References CLEARANCE_CACHE_KEY::Flag, and m_clearanceCache.
|
overridevirtual |
Reimplemented from PNS::RULE_RESOLVER.
Definition at line 397 of file pns_kicad_iface.cpp.
References m_clearanceCache, m_holeClearanceCache, and m_holeToHoleClearanceCache.
|
overridevirtual |
Implements PNS::RULE_RESOLVER.
Definition at line 802 of file pns_kicad_iface.cpp.
References BOARD::FindNet(), NETINFO_ITEM::GetNetCode(), NETINFO_ITEM::GetNetname(), m_board, and matchDpSuffix().
|
overridevirtual |
Implements PNS::RULE_RESOLVER.
Definition at line 836 of file pns_kicad_iface.cpp.
References BOARD::FindNet(), BOARD_CONNECTED_ITEM::GetNet(), NETINFO_ITEM::GetNetCode(), NETINFO_ITEM::GetNetname(), BOARD_ITEM::IsConnected(), m_board, matchDpSuffix(), and PNS::ITEM::Parent().
Referenced by IsDiffPair().
|
overridevirtual |
Implements PNS::RULE_RESOLVER.
Definition at line 827 of file pns_kicad_iface.cpp.
References BOARD::FindNet(), NETINFO_ITEM::GetNetname(), m_board, and matchDpSuffix().
|
overridevirtual |
Implements PNS::RULE_RESOLVER.
Definition at line 459 of file pns_kicad_iface.cpp.
References PNS::CT_CLEARANCE, PNS::CT_HOLE_CLEARANCE, HAS_PLATED_HOLE, IsCopperLayer(), LAYER_RANGE::IsMultilayer(), PNS::ITEM::Layer(), PNS::ITEM::Layers(), m_clearanceEpsilon, m_holeClearanceCache, PNS::CONSTRAINT::m_Value, MINOPTMAX< T >::Min(), and QueryConstraint().
|
private |
Definition at line 181 of file pns_kicad_iface.cpp.
References PNS::ITEM::Kind(), pad, PAD_DRILL_SHAPE_CIRCLE, PNS::ITEM::Parent(), PNS::ITEM::SOLID_T, via, and PNS::ITEM::VIA_T.
|
overridevirtual |
Implements PNS::RULE_RESOLVER.
Definition at line 498 of file pns_kicad_iface.cpp.
References PNS::CT_HOLE_TO_HOLE, LAYER_RANGE::IsMultilayer(), PNS::ITEM::Layer(), PNS::ITEM::Layers(), m_clearanceEpsilon, m_holeToHoleClearanceCache, PNS::CONSTRAINT::m_Value, MINOPTMAX< T >::Min(), and QueryConstraint().
|
overridevirtual |
Implements PNS::RULE_RESOLVER.
Definition at line 202 of file pns_kicad_iface.cpp.
References DpNetPair(), and PNS::ITEM::Net().
|
overridevirtual |
Implements PNS::RULE_RESOLVER.
Definition at line 219 of file pns_kicad_iface.cpp.
References BOARD_ITEM::GetParentFootprint(), and PNS::ITEM::Parent().
|
overridevirtual |
Implements PNS::RULE_RESOLVER.
Definition at line 231 of file pns_kicad_iface.cpp.
References BOARD::GetDesignSettings(), PNS::ITEM::Layer(), m_board, BOARD_DESIGN_SETTINGS::m_DRCEngine, PNS::ITEM::Net(), PNS::ITEM::Parent(), and ToLAYER_ID().
|
private |
Checks for netnamed differential pairs.
This accepts nets named suffixed by 'P', 'N', '+', '-', as well as additional numbers and underscores following the suffix. So NET_P_123 is a valid positive net name matched to NET_N_123.
aNetName | Input net name to check for DP naming |
aComplementNet | Generated net name for the pair |
Definition at line 753 of file pns_kicad_iface.cpp.
Referenced by DpCoupledNet(), DpNetPair(), and DpNetPolarity().
|
overridevirtual |
Implements PNS::RULE_RESOLVER.
Definition at line 821 of file pns_kicad_iface.cpp.
References BOARD::FindNet(), NETINFO_ITEM::GetNetname(), and m_board.
|
overridevirtual |
Implements PNS::RULE_RESOLVER.
Definition at line 286 of file pns_kicad_iface.cpp.
References PNS::ITEM::ARC_T, CLEARANCE_CONSTRAINT, PNS::CT_CLEARANCE, PNS::CT_DIFF_PAIR_GAP, PNS::CT_EDGE_CLEARANCE, PNS::CT_HOLE_CLEARANCE, PNS::CT_HOLE_TO_HOLE, PNS::CT_LENGTH, PNS::CT_VIA_DIAMETER, PNS::CT_VIA_HOLE, PNS::CT_WIDTH, DIFF_PAIR_GAP_CONSTRAINT, EDGE_CLEARANCE_CONSTRAINT, BOARD::GetDesignSettings(), DRC_CONSTRAINT::GetName(), DRC_CONSTRAINT::GetSeverity(), DRC_CONSTRAINT::GetValue(), HOLE_CLEARANCE_CONSTRAINT, HOLE_SIZE_CONSTRAINT, HOLE_TO_HOLE_CONSTRAINT, DRC_CONSTRAINT::IsNull(), PNS::ITEM::Kind(), LENGTH_CONSTRAINT, PNS::ITEM::LINE_T, m_board, BOARD_DESIGN_SETTINGS::m_DRCEngine, m_dummyArcs, m_dummyTracks, m_dummyVias, PNS::CONSTRAINT::m_RuleName, PNS::CONSTRAINT::m_Type, PNS::CONSTRAINT::m_Value, PNS::ITEM::Net(), PNS::ITEM::Parent(), RPT_SEVERITY_IGNORE, PNS::ITEM::SEGMENT_T, BOARD_ITEM::SetLayer(), MINOPTMAX< T >::SetMin(), ToLAYER_ID(), TRACK_WIDTH_CONSTRAINT, VIA_DIAMETER_CONSTRAINT, and PNS::ITEM::VIA_T.
Referenced by Clearance(), HoleClearance(), HoleToHoleClearance(), and PNS_KICAD_IFACE_BASE::ImportSizes().
|
private |
Definition at line 149 of file pns_kicad_iface.cpp.
Referenced by DpCoupledNet(), DpNetPair(), DpNetPolarity(), IsNetTieExclusion(), NetName(), and QueryConstraint().
|
private |
Definition at line 155 of file pns_kicad_iface.cpp.
Referenced by Clearance(), ClearCacheForItem(), and ClearCaches().
|
private |
Definition at line 153 of file pns_kicad_iface.cpp.
Referenced by Clearance(), ClearanceEpsilon(), HoleClearance(), and HoleToHoleClearance().
|
private |
Definition at line 151 of file pns_kicad_iface.cpp.
Referenced by QueryConstraint().
|
private |
Definition at line 150 of file pns_kicad_iface.cpp.
Referenced by QueryConstraint().
|
private |
Definition at line 152 of file pns_kicad_iface.cpp.
Referenced by QueryConstraint().
|
private |
Definition at line 156 of file pns_kicad_iface.cpp.
Referenced by ClearCaches(), and HoleClearance().
|
private |
Definition at line 157 of file pns_kicad_iface.cpp.
Referenced by ClearCaches(), and HoleToHoleClearance().
|
private |
Definition at line 148 of file pns_kicad_iface.cpp.