KiCad PCB EDA Suite
|
#include <erc.h>
Public Member Functions | |
ERC_TESTER (SCHEMATIC *aSchematic) | |
int | TestDuplicateSheetNames (bool aCreateMarker) |
Inside a given sheet, one cannot have sheets with duplicate names (file names can be duplicated). | |
void | TestTextVars (DS_PROXY_VIEW_ITEM *aDrawingSheet) |
Check for any unresolved text variable references. | |
int | TestConflictingBusAliases () |
Check that there are no conflicting bus alias definitions in the schematic. | |
int | TestMultiunitFootprints () |
Test if all units of each multiunit symbol have the same footprint assigned. | |
int | TestNoConnectPins () |
In KiCad 5 and earlier, you could connect stuff up to pins with NC electrical type. | |
int | TestPinToPin () |
Checks the full netlist against the pin-to-pin connectivity requirements. | |
int | TestMultUnitPinConflicts () |
Checks if shared pins on multi-unit symbols have been connected to different nets. | |
int | TestSameLocalGlobalLabel () |
Checks for global and local labels with the same name. | |
int | TestSimilarLabels () |
Checks for labels that differ only in capitalization. | |
int | TestFourWayJunction () |
Test to see if there are potentially confusing 4-way junctions in the schematic. | |
int | TestLabelMultipleWires () |
Test to see if there are labels that are connected to more than one wire. | |
int | TestLibSymbolIssues () |
Test symbols for changed library symbols and broken symbol library links. | |
int | TestFootprintLinkIssues (KIFACE *aCvPcb, PROJECT *aProject) |
Test footprint links against the current footprint libraries. | |
int | TestFootprintFilters () |
Test symbols to ensure that assigned footprint passes any given footprint filters. | |
int | TestOffGridEndpoints () |
Test pins and wire ends for being off grid. | |
int | TestSimModelIssues () |
Test SPICE models for various issues. | |
int | TestMissingUnits () |
Test for uninstantiated units of multi unit symbols. | |
int | TestMissingNetclasses () |
Tests for netclasses that are referenced but not defined. | |
int | RunRuleAreaERC () |
Tests for rule area ERC issues. | |
void | RunTests (DS_PROXY_VIEW_ITEM *aDrawingSheet, SCH_EDIT_FRAME *aEditFrame, KIFACE *aCvPcb, PROJECT *aProject, PROGRESS_REPORTER *aProgressReporter) |
Private Attributes | |
SCHEMATIC * | m_schematic |
ERC_SETTINGS & | m_settings |
SCH_SHEET_LIST | m_sheetList |
SCH_SCREENS | m_screens |
SCH_MULTI_UNIT_REFERENCE_MAP | m_refMap |
const NET_MAP & | m_nets |
|
inline |
Definition at line 55 of file erc.h.
References SCH_SHEET_LIST::GetMultiUnitSymbols(), m_refMap, and m_sheetList.
int ERC_TESTER::RunRuleAreaERC | ( | ) |
Tests for rule area ERC issues.
void ERC_TESTER::RunTests | ( | DS_PROXY_VIEW_ITEM * | aDrawingSheet, |
SCH_EDIT_FRAME * | aEditFrame, | ||
KIFACE * | aCvPcb, | ||
PROJECT * | aProject, | ||
PROGRESS_REPORTER * | aProgressReporter | ||
) |
Definition at line 1751 of file erc.cpp.
References _, PROGRESS_REPORTER::AdvancePhase(), SCH_SHEET_LIST::AnnotatePowerSymbols(), SCHEMATIC::ConnectionGraph(), ERCE_BUS_ALIAS_CONFLICT, ERCE_DIFFERENT_UNIT_FP, ERCE_DIFFERENT_UNIT_NET, ERCE_DUPLICATE_SHEET_NAME, ERCE_ENDPOINT_OFF_GRID, ERCE_FOOTPRINT_FILTERS, ERCE_FOOTPRINT_LINK_ISSUES, ERCE_FOUR_WAY_JUNCTION, ERCE_LABEL_MULTIPLE_WIRES, ERCE_LIB_SYMBOL_ISSUES, ERCE_LIB_SYMBOL_MISMATCH, ERCE_MISSING_BIDI_PIN, ERCE_MISSING_INPUT_PIN, ERCE_MISSING_POWER_INPUT_PIN, ERCE_MISSING_UNIT, ERCE_NOCONNECT_CONNECTED, ERCE_PIN_NOT_DRIVEN, ERCE_PIN_TO_PIN_ERROR, ERCE_POWERPIN_NOT_DRIVEN, ERCE_SAME_LOCAL_GLOBAL_LABEL, ERCE_SIMILAR_LABEL_AND_POWER, ERCE_SIMILAR_LABELS, ERCE_SIMILAR_POWER, ERCE_SIMULATION_MODEL, ERCE_UNDEFINED_NETCLASS, ERCE_UNRESOLVED_VARIABLE, ADVANCED_CFG::GetCfg(), GLOBAL_CLEANUP, ERC_SETTINGS::IsTestEnabled(), m_schematic, m_settings, m_sheetList, NO_CLEANUP, SCH_EDIT_FRAME::RecalculateConnections(), SCHEMATIC::ResolveERCExclusionsPostUpdate(), CONNECTION_GRAPH::RunERC(), TestConflictingBusAliases(), TestDuplicateSheetNames(), TestFootprintFilters(), TestFootprintLinkIssues(), TestFourWayJunction(), TestLabelMultipleWires(), TestLibSymbolIssues(), TestMissingNetclasses(), TestMissingUnits(), TestMultiunitFootprints(), TestMultUnitPinConflicts(), TestNoConnectPins(), TestOffGridEndpoints(), TestPinToPin(), TestSameLocalGlobalLabel(), TestSimilarLabels(), TestSimModelIssues(), and TestTextVars().
Referenced by EESCHEMA_JOBS_HANDLER::JobSchErc(), and DIALOG_ERC::testErc().
int ERC_TESTER::TestConflictingBusAliases | ( | ) |
Check that there are no conflicting bus alias definitions in the schematic.
(for example, two hierarchical sub-sheets contain different definitions for the same bus alias)
Definition at line 434 of file erc.cpp.
References _, ERC_ITEM::Create(), ERCE_BUS_ALIAS_CONFLICT, SCH_SCREENS::GetFirst(), SCH_SCREENS::GetNext(), and m_screens.
Referenced by BOOST_FIXTURE_TEST_CASE(), and RunTests().
int ERC_TESTER::TestDuplicateSheetNames | ( | bool | aCreateMarker | ) |
Inside a given sheet, one cannot have sheets with duplicate names (file names can be duplicated).
aCreateMarker | true = create error markers in schematic, false = calculate error count only |
Definition at line 140 of file erc.cpp.
References ERC_ITEM::Create(), ERCE_DUPLICATE_SHEET_NAME, SCH_SCREENS::GetFirst(), SCH_SCREENS::GetNext(), SCH_SHEET::GetPosition(), SCH_SHEET::GetShownName(), m_screens, and SCH_SHEET_T.
Referenced by RunTests().
int ERC_TESTER::TestFootprintFilters | ( | ) |
Test symbols to ensure that assigned footprint passes any given footprint filters.
Definition at line 1565 of file erc.cpp.
References _, ERC_ITEM::Create(), ERCE_FOOTPRINT_LINK_ISSUES, filter, SCH_SYMBOL::GetFootprintFieldText(), SCH_SYMBOL::GetLibSymbolRef(), SCH_SYMBOL::GetPosition(), LIB_ID::GetUniStringLibItemName(), m_schematic, m_sheetList, LIB_ID::Parse(), and SCH_SYMBOL_T.
Referenced by RunTests().
Test footprint links against the current footprint libraries.
Definition at line 1485 of file erc.cpp.
References _, ERC_ITEM::Create(), ERCE_FOOTPRINT_LINK_ISSUES, SCH_SYMBOL::GetFootprintFieldText(), LIB_ID::GetLibItemName(), LIB_ID::GetLibNickname(), SCH_SYMBOL::GetPosition(), KIFACE::IfaceOrAddress(), KIFACE_TEST_FOOTPRINT_LINK, KIFACE_TEST_FOOTPRINT_LINK_LIBRARY_NOT_ENABLED, KIFACE_TEST_FOOTPRINT_LINK_NO_FOOTPRINT, KIFACE_TEST_FOOTPRINT_LINK_NO_LIBRARY, m_schematic, m_sheetList, LIB_ID::Parse(), and SCH_SYMBOL_T.
Referenced by RunTests().
int ERC_TESTER::TestFourWayJunction | ( | ) |
Test to see if there are potentially confusing 4-way junctions in the schematic.
Definition at line 785 of file erc.cpp.
References _, ERC_ITEM::Create(), ERCE_FOUR_WAY_JUNCTION, SCH_LINE::GetConnectionPoints(), SCH_SYMBOL::GetPins(), SCH_LINE::IsGraphicLine(), SCH_SCREEN::Items(), m_sheetList, EE_RTREE::OfType(), pin, SCH_LINE_T, and SCH_SYMBOL_T.
Referenced by BOOST_FIXTURE_TEST_CASE(), and RunTests().
int ERC_TESTER::TestLabelMultipleWires | ( | ) |
Test to see if there are labels that are connected to more than one wire.
Definition at line 730 of file erc.cpp.
References _, ERC_ITEM::Create(), ERCE_LABEL_MULTIPLE_WIRES, SCH_LABEL_BASE::GetConnectionPoints(), SCH_LINE::IsEndPoint(), SCH_LINE::IsGraphicLine(), m_sheetList, SCH_LABEL_T, and SCH_LINE_T.
Referenced by BOOST_FIXTURE_TEST_CASE(), and RunTests().
int ERC_TESTER::TestLibSymbolIssues | ( | ) |
Test symbols for changed library symbols and broken symbol library links.
Definition at line 1367 of file erc.cpp.
References _, CheckDuplicatePins(), ERC_ITEM::Create(), SCH_ITEM::EQUALITY, SCH_ITEM::ERC, ERCE_DUPLICATE_PIN_ERROR, ERCE_LIB_SYMBOL_ISSUES, ERCE_LIB_SYMBOL_MISMATCH, SYMBOL_LIB_TABLE::FindRow(), LIB_SYMBOL::Flatten(), SCH_SCREENS::GetFirst(), SCH_SYMBOL::GetLibId(), LIB_ID::GetLibItemName(), LIB_ID::GetLibNickname(), SCH_SYMBOL::GetLibSymbolRef(), SCH_SCREENS::GetNext(), SCH_SYMBOL::GetPosition(), LIB_TABLE::HasLibrary(), ERC_SETTINGS::IsTestEnabled(), m_schematic, m_screens, m_settings, SCHEMATIC::Prj(), SCH_SYMBOL_T, SchGetLibSymbol(), schIUScale, PROJECT_SCH::SchSymbolLibTable(), and UnescapeString().
Referenced by RunTests().
int ERC_TESTER::TestMissingNetclasses | ( | ) |
Tests for netclasses that are referenced but not defined.
Definition at line 677 of file erc.cpp.
References _, SCH_SCREEN::Append(), ERC_ITEM::Create(), ERCE_UNDEFINED_NETCLASS, PROJECT::GetProjectFile(), SCH_SCREEN::Items(), SCH_SHEET_PATH::LastScreen(), m_schematic, m_sheetList, PROJECT_FILE::NetSettings(), SCHEMATIC::Prj(), SCH_FIELD_T, and EDA_ITEM::Type().
Referenced by RunTests().
int ERC_TESTER::TestMissingUnits | ( | ) |
Test for uninstantiated units of multi unit symbols.
Definition at line 540 of file erc.cpp.
References _, SCH_SCREEN::Append(), ERC_ITEM::Create(), ERCE_MISSING_BIDI_PIN, ERCE_MISSING_INPUT_PIN, ERCE_MISSING_POWER_INPUT_PIN, ERCE_MISSING_UNIT, SCH_ITEM::GetBodyStyle(), SCH_REFERENCE_LIST::GetCount(), SCH_REFERENCE_LIST::GetItem(), SCH_REFERENCE::GetLibPart(), LIB_SYMBOL::GetPins(), SCH_SYMBOL::GetPosition(), SCH_REFERENCE::GetSheetPath(), SCH_REFERENCE::GetSymbol(), SCH_REFERENCE::GetUnit(), LIB_SYMBOL::GetUnitCount(), LIB_SYMBOL::GetUnitDisplayName(), ERC_SETTINGS::IsTestEnabled(), SCH_SHEET_PATH::LastScreen(), m_refMap, m_settings, and pin.
Referenced by RunTests().
int ERC_TESTER::TestMultiunitFootprints | ( | ) |
Test if all units of each multiunit symbol have the same footprint assigned.
Definition at line 479 of file erc.cpp.
References _, SCH_SCREEN::Append(), ERC_ITEM::Create(), ERCE_DIFFERENT_UNIT_FP, SCH_REFERENCE_LIST::GetCount(), SCH_REFERENCE::GetFootprint(), SCH_REFERENCE_LIST::GetItem(), SCH_SYMBOL::GetPosition(), SCH_SYMBOL::GetRef(), SCH_REFERENCE::GetSheetPath(), SCH_REFERENCE::GetSymbol(), SCH_SHEET_PATH::LastScreen(), and m_refMap.
Referenced by BOOST_FIXTURE_TEST_CASE(), and RunTests().
int ERC_TESTER::TestMultUnitPinConflicts | ( | ) |
Checks if shared pins on multi-unit symbols have been connected to different nets.
Definition at line 1147 of file erc.cpp.
References _, SCH_SCREEN::Append(), ERC_ITEM::Create(), ERCE_DIFFERENT_UNIT_NET, CONNECTION_SUBGRAPH::GetItems(), CONNECTION_SUBGRAPH::GetSheet(), SCH_SHEET_PATH::LastScreen(), m_nets, name, pin, and SCH_PIN_T.
Referenced by BOOST_FIXTURE_TEST_CASE(), and RunTests().
int ERC_TESTER::TestNoConnectPins | ( | ) |
In KiCad 5 and earlier, you could connect stuff up to pins with NC electrical type.
In KiCad 6, this no longer results in those pins joining the net, so we need to warn about it
Definition at line 839 of file erc.cpp.
References _, ERC_ITEM::Create(), ERCE_NOCONNECT_CONNECTED, SCH_SYMBOL::GetPins(), m_sheetList, pin, and SCH_SYMBOL_T.
Referenced by BOOST_FIXTURE_TEST_CASE(), and RunTests().
int ERC_TESTER::TestOffGridEndpoints | ( | ) |
Test pins and wire ends for being off grid.
Definition at line 1635 of file erc.cpp.
References ERC_ITEM::Create(), ERCE_ENDPOINT_OFF_GRID, SCH_LINE::GetEndPoint(), SCH_SCREENS::GetFirst(), SCH_SCREENS::GetNext(), SCH_SYMBOL::GetPins(), SCH_LINE::GetStartPoint(), SCHEMATIC_SETTINGS::m_ConnectionGridSize, m_schematic, m_screens, pin, SCH_LINE_T, SCH_SYMBOL_T, SCHEMATIC::Settings(), VECTOR2< T >::x, and VECTOR2< T >::y.
Referenced by RunTests().
int ERC_TESTER::TestPinToPin | ( | ) |
Checks the full netlist against the pin-to-pin connectivity requirements.
Definition at line 908 of file erc.cpp.
References _, ERC_ITEM::Create(), distance(), VECTOR2< T >::Distance(), DrivenPinTypes, DrivingPinTypes, DrivingPowerPinTypes, ElectricalPinTypeGetText(), erc, ERCE_PIN_NOT_DRIVEN, ERCE_PIN_TO_PIN_ERROR, ERCE_PIN_TO_PIN_WARNING, ERCE_POWERPIN_NOT_DRIVEN, ERC_SETTINGS::GetERCSortingMetric(), CONNECTION_SUBGRAPH::GetItems(), CONNECTION_SUBGRAPH::GetNoConnect(), ERC_SETTINGS::GetPinMapValue(), ERC_SETTINGS::GetPinTypeWeight(), CONNECTION_SUBGRAPH::GetSheet(), SCH_PIN::GetType(), SCH_PIN::IsStacked(), ERC_SETTINGS::IsTestEnabled(), SCH_PIN::IsVisible(), SCH_SHEET_PATH::LastScreen(), m_nets, m_settings, ERC_SCH_PIN_CONTEXT::Pin(), pin, SCH_PIN_T, and ERC_SCH_PIN_CONTEXT::Sheet().
Referenced by BOOST_FIXTURE_TEST_CASE(), and RunTests().
int ERC_TESTER::TestSameLocalGlobalLabel | ( | ) |
Checks for global and local labels with the same name.
Definition at line 1204 of file erc.cpp.
References ERC_ITEM::Create(), ERCE_SAME_LOCAL_GLOBAL_LABEL, CONNECTION_SUBGRAPH::GetItems(), CONNECTION_SUBGRAPH::GetSheet(), SCH_LABEL_BASE::GetShownText(), m_nets, SCH_GLOBAL_LABEL_T, SCH_LABEL_T, and text.
Referenced by BOOST_FIXTURE_TEST_CASE(), and RunTests().
int ERC_TESTER::TestSimilarLabels | ( | ) |
Checks for labels that differ only in capitalization.
Definition at line 1259 of file erc.cpp.
References ERC_ITEM::Create(), ERCE_SIMILAR_LABEL_AND_POWER, ERCE_SIMILAR_LABELS, ERCE_SIMILAR_POWER, CONNECTION_SUBGRAPH::GetItems(), CONNECTION_SUBGRAPH::GetSheet(), SCH_LABEL_BASE::GetShownText(), SCH_SYMBOL::GetValue(), m_nets, pin, SCH_GLOBAL_LABEL_T, SCH_HIER_LABEL_T, SCH_LABEL_T, and SCH_PIN_T.
Referenced by BOOST_FIXTURE_TEST_CASE(), and RunTests().
int ERC_TESTER::TestSimModelIssues | ( | ) |
Test SPICE models for various issues.
Definition at line 1698 of file erc.cpp.
References WX_STRING_REPORTER::Clear(), ERC_ITEM::Create(), SIM_LIB_MGR::CreateModel(), ERCE_SIMULATION_MODEL, SYMBOL::GetExcludedFromSim(), WX_STRING_REPORTER::GetMessages(), SCH_SYMBOL::GetPosition(), SCH_SYMBOL::GetRef(), WX_STRING_REPORTER::HasMessage(), m_schematic, m_sheetList, SCHEMATIC::Prj(), and SCH_SYMBOL_T.
Referenced by RunTests().
void ERC_TESTER::TestTextVars | ( | DS_PROXY_VIEW_ITEM * | aDrawingSheet | ) |
Check for any unresolved text variable references.
Definition at line 183 of file erc.cpp.
References _, SCH_SCREEN::Append(), DS_DRAW_ITEM_LIST::BuildDrawItemsList(), ERC_ITEM::Create(), ERCE_GENERIC_ERROR, ERCE_GENERIC_WARNING, ERCE_UNRESOLVED_VARIABLE, ExpandEnvVarSubstitutions(), FOR_ERC_DRC, SCH_SHEET::GetFields(), SCH_SYMBOL::GetFields(), SCH_SYMBOL::GetLibSymbolRef(), DS_PROXY_VIEW_ITEM::GetPageInfo(), SCH_SHEET::GetPins(), EDA_ITEM::GetPosition(), DS_PROXY_VIEW_ITEM::GetTitleBlock(), SCH_SCREEN::Items(), m_schematic, m_sheetList, EE_RTREE::OfType(), pin, SCHEMATIC::Prj(), SCH_SHEET_PATH::push_back(), SCH_FIELD_T, SCH_LOCATE_ANY_T, SCH_SHEET_T, SCH_SYMBOL_T, SCH_TEXT_T, SCH_TEXTBOX_T, schIUScale, DS_DRAW_ITEM_LIST::SetFileName(), DS_DRAW_ITEM_LIST::SetPageNumber(), DS_DRAW_ITEM_LIST::SetProject(), DS_DRAW_ITEM_LIST::SetSheetCount(), DS_DRAW_ITEM_LIST::SetSheetLayer(), DS_DRAW_ITEM_LIST::SetSheetName(), text, and EDA_ITEM::Type().
Referenced by BOOST_FIXTURE_TEST_CASE(), and RunTests().
|
private |
Definition at line 191 of file erc.h.
Referenced by TestMultUnitPinConflicts(), TestPinToPin(), TestSameLocalGlobalLabel(), and TestSimilarLabels().
|
private |
Definition at line 190 of file erc.h.
Referenced by ERC_TESTER(), TestMissingUnits(), and TestMultiunitFootprints().
|
private |
Definition at line 186 of file erc.h.
Referenced by RunTests(), TestFootprintFilters(), TestFootprintLinkIssues(), TestLibSymbolIssues(), TestMissingNetclasses(), TestOffGridEndpoints(), TestSimModelIssues(), and TestTextVars().
|
private |
Definition at line 189 of file erc.h.
Referenced by TestConflictingBusAliases(), TestDuplicateSheetNames(), TestLibSymbolIssues(), and TestOffGridEndpoints().
|
private |
Definition at line 187 of file erc.h.
Referenced by RunTests(), TestLibSymbolIssues(), TestMissingUnits(), and TestPinToPin().
|
private |
Definition at line 188 of file erc.h.
Referenced by ERC_TESTER(), RunTests(), TestFootprintFilters(), TestFootprintLinkIssues(), TestFourWayJunction(), TestLabelMultipleWires(), TestMissingNetclasses(), TestNoConnectPins(), TestSimModelIssues(), and TestTextVars().