KiCad PCB EDA Suite
Loading...
Searching...
No Matches
TMATCH::CONNECTION_GRAPH Class Reference

#include <topo_match.h>

Public Member Functions

 CONNECTION_GRAPH ()
 
 ~CONNECTION_GRAPH ()
 
void BuildConnectivity ()
 
void AddFootprint (FOOTPRINT *aFp, const VECTOR2I &aOffset)
 
bool FindIsomorphism (CONNECTION_GRAPH *target, COMPONENT_MATCHES &result, std::vector< TOPOLOGY_MISMATCH_REASON > &aFailureDetails, const ISOMORPHISM_PARAMS &aParams={})
 
std::vector< COMPONENT * > & Components ()
 

Static Public Member Functions

static std::unique_ptr< CONNECTION_GRAPHBuildFromFootprintSet (const std::set< FOOTPRINT * > &aFps)
 

Public Attributes

const int c_ITER_LIMIT = 10000
 

Private Member Functions

void breakTie (COMPONENT *aRef, std::vector< COMPONENT * > &aMatches) const
 Many times components are electrically/topologically identical, e.g.
 
bool breakTieBySymbolUuid (COMPONENT *aRef, std::vector< COMPONENT * > &aMatches) const
 The most useful tie breaker is based on symbol/sheet instances, since multiple channels in a design are very often multiple instances of the same sheet.
 
void sortByPinCount ()
 
std::vector< COMPONENT * > findMatchingComponents (COMPONENT *ref, const std::vector< COMPONENT * > &aStructuralMatches, const BACKTRACK_STAGE &partialMatches, std::vector< TOPOLOGY_MISMATCH_REASON > &aFailureDetails, const std::atomic< bool > *aCancelled=nullptr)
 

Private Attributes

std::vector< COMPONENT * > m_components
 

Detailed Description

Definition at line 186 of file topo_match.h.

Constructor & Destructor Documentation

◆ CONNECTION_GRAPH()

CONNECTION_GRAPH::CONNECTION_GRAPH ( )

Definition at line 1153 of file topo_match.cpp.

Referenced by FindIsomorphism().

◆ ~CONNECTION_GRAPH()

CONNECTION_GRAPH::~CONNECTION_GRAPH ( )

Definition at line 1159 of file topo_match.cpp.

References m_components.

Member Function Documentation

◆ AddFootprint()

void CONNECTION_GRAPH::AddFootprint ( FOOTPRINT * aFp,
const VECTOR2I & aOffset )

Definition at line 1117 of file topo_match.cpp.

References COMPONENT, FOOTPRINT::GetReference(), m_components, pad, FOOTPRINT::Pads(), PIN, and pin.

◆ breakTie()

void CONNECTION_GRAPH::breakTie ( COMPONENT * aRef,
std::vector< COMPONENT * > & aMatches ) const
private

Many times components are electrically/topologically identical, e.g.

a bunch of decoupling capacitors connected to the same power supply and ground. However, the user doesn't want them to be picked randomly, so we implement a number of strategies to break ties between components.

Definition at line 370 of file topo_match.cpp.

References breakTieBySymbolUuid(), TMATCH::COMPONENT::GetParent(), FOOTPRINT::GetReferenceAsString(), traceTopoMatch, and traceTopoMatchDetail.

◆ breakTieBySymbolUuid()

bool CONNECTION_GRAPH::breakTieBySymbolUuid ( COMPONENT * aRef,
std::vector< COMPONENT * > & aMatches ) const
private

The most useful tie breaker is based on symbol/sheet instances, since multiple channels in a design are very often multiple instances of the same sheet.

Definition at line 403 of file topo_match.cpp.

References KIID::AsString(), TMATCH::COMPONENT::GetParent(), FOOTPRINT::GetReferenceAsString(), niluuid, path, and traceTopoMatchDetail.

Referenced by breakTie().

◆ BuildConnectivity()

void CONNECTION_GRAPH::BuildConnectivity ( )

Definition at line 525 of file topo_match.cpp.

References m_components, sortByPinCount(), and traceTopoMatch.

◆ BuildFromFootprintSet()

std::unique_ptr< CONNECTION_GRAPH > CONNECTION_GRAPH::BuildFromFootprintSet ( const std::set< FOOTPRINT * > & aFps)
static

Definition at line 1134 of file topo_match.cpp.

Referenced by MULTICHANNEL_TOOL::resolveConnectionTopology().

◆ Components()

std::vector< COMPONENT * > & TMATCH::CONNECTION_GRAPH::Components ( )
inline

Definition at line 200 of file topo_match.h.

References m_components.

◆ FindIsomorphism()

bool CONNECTION_GRAPH::FindIsomorphism ( CONNECTION_GRAPH * target,
COMPONENT_MATCHES & result,
std::vector< TOPOLOGY_MISMATCH_REASON > & aFailureDetails,
const ISOMORPHISM_PARAMS & aParams = {} )

◆ findMatchingComponents()

◆ sortByPinCount()

void CONNECTION_GRAPH::sortByPinCount ( )
private

Definition at line 512 of file topo_match.cpp.

References m_components.

Referenced by BuildConnectivity().

Member Data Documentation

◆ c_ITER_LIMIT

const int TMATCH::CONNECTION_GRAPH::c_ITER_LIMIT = 10000

Definition at line 189 of file topo_match.h.

◆ m_components

std::vector<COMPONENT*> TMATCH::CONNECTION_GRAPH::m_components
private

The documentation for this class was generated from the following files: