Move ERC test flow to ERC_TESTER::RunTests
This commit is contained in:
parent
cb24a612ea
commit
50a4a8639e
|
@ -479,101 +479,11 @@ void DIALOG_ERC::testErc()
|
||||||
ERC_SETTINGS& settings = sch->ErcSettings();
|
ERC_SETTINGS& settings = sch->ErcSettings();
|
||||||
ERC_TESTER tester( sch );
|
ERC_TESTER tester( sch );
|
||||||
|
|
||||||
// Test duplicate sheet names inside a given sheet. While one can have multiple references
|
|
||||||
// to the same file, each must have a unique name.
|
|
||||||
if( settings.IsTestEnabled( ERCE_DUPLICATE_SHEET_NAME ) )
|
|
||||||
{
|
{
|
||||||
AdvancePhase( _( "Checking sheet names..." ) );
|
wxBusyCursor dummy;
|
||||||
tester.TestDuplicateSheetNames( true );
|
tester.RunTests( sch, m_parent->GetCanvas()->GetView()->GetDrawingSheet(), m_parent, this );
|
||||||
}
|
}
|
||||||
|
|
||||||
if( settings.IsTestEnabled( ERCE_BUS_ALIAS_CONFLICT ) )
|
|
||||||
{
|
|
||||||
AdvancePhase( _( "Checking bus conflicts..." ) );
|
|
||||||
tester.TestConflictingBusAliases();
|
|
||||||
}
|
|
||||||
|
|
||||||
// The connection graph has a whole set of ERC checks it can run
|
|
||||||
AdvancePhase( _( "Checking conflicts..." ) );
|
|
||||||
|
|
||||||
// If we are using the new connectivity, make sure that we do a full-rebuild
|
|
||||||
if( ADVANCED_CFG::GetCfg().m_IncrementalConnectivity )
|
|
||||||
m_parent->RecalculateConnections( nullptr, GLOBAL_CLEANUP );
|
|
||||||
else
|
|
||||||
m_parent->RecalculateConnections( nullptr, NO_CLEANUP );
|
|
||||||
|
|
||||||
sch->ConnectionGraph()->RunERC();
|
|
||||||
|
|
||||||
AdvancePhase( _( "Checking units..." ) );
|
|
||||||
|
|
||||||
// Test is all units of each multiunit symbol have the same footprint assigned.
|
|
||||||
if( settings.IsTestEnabled( ERCE_DIFFERENT_UNIT_FP ) )
|
|
||||||
{
|
|
||||||
AdvancePhase( _( "Checking footprints..." ) );
|
|
||||||
tester.TestMultiunitFootprints();
|
|
||||||
}
|
|
||||||
|
|
||||||
if( settings.IsTestEnabled( ERCE_MISSING_UNIT )
|
|
||||||
|| settings.IsTestEnabled( ERCE_MISSING_INPUT_PIN )
|
|
||||||
|| settings.IsTestEnabled( ERCE_MISSING_POWER_INPUT_PIN )
|
|
||||||
|| settings.IsTestEnabled( ERCE_MISSING_BIDI_PIN ) )
|
|
||||||
{
|
|
||||||
tester.TestMissingUnits();
|
|
||||||
}
|
|
||||||
|
|
||||||
AdvancePhase( _( "Checking pins..." ) );
|
|
||||||
|
|
||||||
if( settings.IsTestEnabled( ERCE_DIFFERENT_UNIT_NET ) )
|
|
||||||
tester.TestMultUnitPinConflicts();
|
|
||||||
|
|
||||||
// Test pins on each net against the pin connection table
|
|
||||||
if( settings.IsTestEnabled( ERCE_PIN_TO_PIN_ERROR )
|
|
||||||
|| settings.IsTestEnabled( ERCE_POWERPIN_NOT_DRIVEN )
|
|
||||||
|| settings.IsTestEnabled( ERCE_PIN_NOT_DRIVEN ) )
|
|
||||||
{
|
|
||||||
tester.TestPinToPin();
|
|
||||||
}
|
|
||||||
|
|
||||||
// Test similar labels (i;e. labels which are identical when
|
|
||||||
// using case insensitive comparisons)
|
|
||||||
if( settings.IsTestEnabled( ERCE_SIMILAR_LABELS ) )
|
|
||||||
{
|
|
||||||
AdvancePhase( _( "Checking labels..." ) );
|
|
||||||
tester.TestSimilarLabels();
|
|
||||||
}
|
|
||||||
|
|
||||||
if( settings.IsTestEnabled( ERCE_UNRESOLVED_VARIABLE ) )
|
|
||||||
{
|
|
||||||
AdvancePhase( _( "Checking for unresolved variables..." ) );
|
|
||||||
tester.TestTextVars( m_parent->GetCanvas()->GetView()->GetDrawingSheet() );
|
|
||||||
}
|
|
||||||
|
|
||||||
if( settings.IsTestEnabled( ERCE_SIMULATION_MODEL ) )
|
|
||||||
{
|
|
||||||
AdvancePhase( _( "Checking SPICE models..." ) );
|
|
||||||
tester.TestSimModelIssues();
|
|
||||||
}
|
|
||||||
|
|
||||||
if( settings.IsTestEnabled( ERCE_NOCONNECT_CONNECTED ) )
|
|
||||||
{
|
|
||||||
AdvancePhase( _( "Checking no connect pins for connections..." ) );
|
|
||||||
tester.TestNoConnectPins();
|
|
||||||
}
|
|
||||||
|
|
||||||
if( settings.IsTestEnabled( ERCE_LIB_SYMBOL_ISSUES ) )
|
|
||||||
{
|
|
||||||
AdvancePhase( _( "Checking for library symbol issues..." ) );
|
|
||||||
tester.TestLibSymbolIssues();
|
|
||||||
}
|
|
||||||
|
|
||||||
if( settings.IsTestEnabled( ERCE_ENDPOINT_OFF_GRID ) )
|
|
||||||
{
|
|
||||||
AdvancePhase( _( "Checking for off grid pins and wires..." ) );
|
|
||||||
tester.TestOffGridEndpoints( m_parent->GetCanvas()->GetView()->GetGAL()->GetGridSize().x );
|
|
||||||
}
|
|
||||||
|
|
||||||
m_parent->ResolveERCExclusions();
|
|
||||||
|
|
||||||
// Update marker list:
|
// Update marker list:
|
||||||
m_markerTreeModel->Update( m_markerProvider, m_severities );
|
m_markerTreeModel->Update( m_markerProvider, m_severities );
|
||||||
|
|
||||||
|
|
115
eeschema/erc.cpp
115
eeschema/erc.cpp
|
@ -27,6 +27,7 @@
|
||||||
#include <numeric>
|
#include <numeric>
|
||||||
|
|
||||||
#include "connection_graph.h"
|
#include "connection_graph.h"
|
||||||
|
#include <advanced_config.h>
|
||||||
#include <common.h> // for ExpandEnvVarSubstitutions
|
#include <common.h> // for ExpandEnvVarSubstitutions
|
||||||
#include <erc.h>
|
#include <erc.h>
|
||||||
#include <erc_sch_pin_context.h>
|
#include <erc_sch_pin_context.h>
|
||||||
|
@ -44,6 +45,7 @@
|
||||||
#include <drawing_sheet/ds_proxy_view_item.h>
|
#include <drawing_sheet/ds_proxy_view_item.h>
|
||||||
#include <wx/ffile.h>
|
#include <wx/ffile.h>
|
||||||
#include <sim/sim_lib_mgr.h>
|
#include <sim/sim_lib_mgr.h>
|
||||||
|
#include <widgets/progress_reporter_base.h>
|
||||||
|
|
||||||
|
|
||||||
/* ERC tests :
|
/* ERC tests :
|
||||||
|
@ -1063,3 +1065,116 @@ int ERC_TESTER::TestSimModelIssues()
|
||||||
|
|
||||||
return err_count;
|
return err_count;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void ERC_TESTER::RunTests( SCHEMATIC* aSch, DS_PROXY_VIEW_ITEM* aDrawingSheet,
|
||||||
|
SCH_EDIT_FRAME* aEditFrame,
|
||||||
|
PROGRESS_REPORTER_BASE* aProgressReporter )
|
||||||
|
{
|
||||||
|
ERC_SETTINGS& settings = aSch->ErcSettings();
|
||||||
|
|
||||||
|
// Test duplicate sheet names inside a given sheet. While one can have multiple references
|
||||||
|
// to the same file, each must have a unique name.
|
||||||
|
if( settings.IsTestEnabled( ERCE_DUPLICATE_SHEET_NAME ) )
|
||||||
|
{
|
||||||
|
if( aProgressReporter )
|
||||||
|
aProgressReporter->AdvancePhase( _( "Checking sheet names..." ) );
|
||||||
|
TestDuplicateSheetNames( true );
|
||||||
|
}
|
||||||
|
|
||||||
|
if( settings.IsTestEnabled( ERCE_BUS_ALIAS_CONFLICT ) )
|
||||||
|
{
|
||||||
|
if( aProgressReporter )
|
||||||
|
aProgressReporter->AdvancePhase( _( "Checking bus conflicts..." ) );
|
||||||
|
TestConflictingBusAliases();
|
||||||
|
}
|
||||||
|
|
||||||
|
// The connection graph has a whole set of ERC checks it can run
|
||||||
|
if( aProgressReporter )
|
||||||
|
aProgressReporter->AdvancePhase( _( "Checking conflicts..." ) );
|
||||||
|
|
||||||
|
// If we are using the new connectivity, make sure that we do a full-rebuild
|
||||||
|
if( aEditFrame )
|
||||||
|
{
|
||||||
|
if( ADVANCED_CFG::GetCfg().m_IncrementalConnectivity )
|
||||||
|
aEditFrame->RecalculateConnections( nullptr, GLOBAL_CLEANUP );
|
||||||
|
else
|
||||||
|
aEditFrame->RecalculateConnections( nullptr, NO_CLEANUP );
|
||||||
|
}
|
||||||
|
|
||||||
|
aSch->ConnectionGraph()->RunERC();
|
||||||
|
|
||||||
|
if( aProgressReporter )
|
||||||
|
aProgressReporter->AdvancePhase( _( "Checking units..." ) );
|
||||||
|
|
||||||
|
// Test is all units of each multiunit symbol have the same footprint assigned.
|
||||||
|
if( settings.IsTestEnabled( ERCE_DIFFERENT_UNIT_FP ) )
|
||||||
|
{
|
||||||
|
if( aProgressReporter )
|
||||||
|
aProgressReporter->AdvancePhase( _( "Checking footprints..." ) );
|
||||||
|
TestMultiunitFootprints();
|
||||||
|
}
|
||||||
|
|
||||||
|
if( settings.IsTestEnabled( ERCE_MISSING_UNIT )
|
||||||
|
|| settings.IsTestEnabled( ERCE_MISSING_INPUT_PIN )
|
||||||
|
|| settings.IsTestEnabled( ERCE_MISSING_POWER_INPUT_PIN )
|
||||||
|
|| settings.IsTestEnabled( ERCE_MISSING_BIDI_PIN ) )
|
||||||
|
{
|
||||||
|
TestMissingUnits();
|
||||||
|
}
|
||||||
|
|
||||||
|
aProgressReporter->AdvancePhase( _( "Checking pins..." ) );
|
||||||
|
|
||||||
|
if( settings.IsTestEnabled( ERCE_DIFFERENT_UNIT_NET ) )
|
||||||
|
TestMultUnitPinConflicts();
|
||||||
|
|
||||||
|
// Test pins on each net against the pin connection table
|
||||||
|
if( settings.IsTestEnabled( ERCE_PIN_TO_PIN_ERROR )
|
||||||
|
|| settings.IsTestEnabled( ERCE_POWERPIN_NOT_DRIVEN )
|
||||||
|
|| settings.IsTestEnabled( ERCE_PIN_NOT_DRIVEN ) )
|
||||||
|
{
|
||||||
|
TestPinToPin();
|
||||||
|
}
|
||||||
|
|
||||||
|
// Test similar labels (i;e. labels which are identical when
|
||||||
|
// using case insensitive comparisons)
|
||||||
|
if( settings.IsTestEnabled( ERCE_SIMILAR_LABELS ) )
|
||||||
|
{
|
||||||
|
aProgressReporter->AdvancePhase( _( "Checking labels..." ) );
|
||||||
|
TestSimilarLabels();
|
||||||
|
}
|
||||||
|
|
||||||
|
if( settings.IsTestEnabled( ERCE_UNRESOLVED_VARIABLE ) )
|
||||||
|
{
|
||||||
|
aProgressReporter->AdvancePhase( _( "Checking for unresolved variables..." ) );
|
||||||
|
TestTextVars( aDrawingSheet );
|
||||||
|
}
|
||||||
|
|
||||||
|
if( settings.IsTestEnabled( ERCE_SIMULATION_MODEL ) )
|
||||||
|
{
|
||||||
|
aProgressReporter->AdvancePhase( _( "Checking SPICE models..." ) );
|
||||||
|
TestSimModelIssues();
|
||||||
|
}
|
||||||
|
|
||||||
|
if( settings.IsTestEnabled( ERCE_NOCONNECT_CONNECTED ) )
|
||||||
|
{
|
||||||
|
aProgressReporter->AdvancePhase( _( "Checking no connect pins for connections..." ) );
|
||||||
|
TestNoConnectPins();
|
||||||
|
}
|
||||||
|
|
||||||
|
if( settings.IsTestEnabled( ERCE_LIB_SYMBOL_ISSUES ) )
|
||||||
|
{
|
||||||
|
aProgressReporter->AdvancePhase( _( "Checking for library symbol issues..." ) );
|
||||||
|
TestLibSymbolIssues();
|
||||||
|
}
|
||||||
|
|
||||||
|
if( settings.IsTestEnabled( ERCE_ENDPOINT_OFF_GRID ) )
|
||||||
|
{
|
||||||
|
aProgressReporter->AdvancePhase( _( "Checking for off grid pins and wires..." ) );
|
||||||
|
if( aEditFrame )
|
||||||
|
TestOffGridEndpoints( aEditFrame->GetCanvas()->GetView()->GetGAL()->GetGridSize().x );
|
||||||
|
}
|
||||||
|
|
||||||
|
if( aEditFrame )
|
||||||
|
aEditFrame->ResolveERCExclusions();
|
||||||
|
}
|
|
@ -38,6 +38,8 @@ class NETLIST_OBJECT_LIST;
|
||||||
class SCH_SHEET_LIST;
|
class SCH_SHEET_LIST;
|
||||||
class SCHEMATIC;
|
class SCHEMATIC;
|
||||||
class DS_PROXY_VIEW_ITEM;
|
class DS_PROXY_VIEW_ITEM;
|
||||||
|
class SCH_EDIT_FRAME;
|
||||||
|
class PROGRESS_REPORTER_BASE;
|
||||||
|
|
||||||
|
|
||||||
extern const wxString CommentERC_H[];
|
extern const wxString CommentERC_H[];
|
||||||
|
@ -143,6 +145,10 @@ public:
|
||||||
* Test for uninstantiated units of multi unit symbols
|
* Test for uninstantiated units of multi unit symbols
|
||||||
*/
|
*/
|
||||||
int TestMissingUnits();
|
int TestMissingUnits();
|
||||||
|
|
||||||
|
void RunTests( SCHEMATIC* aSch, DS_PROXY_VIEW_ITEM* aDrawingSheet, SCH_EDIT_FRAME* aEditFrame,
|
||||||
|
PROGRESS_REPORTER_BASE* aProgressReporter );
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
|
||||||
SCHEMATIC* m_schematic;
|
SCHEMATIC* m_schematic;
|
||||||
|
|
Loading…
Reference in New Issue