kicad-developers team mailing list archive
-
kicad-developers team
-
Mailing list archive
-
Message #20004
Re: [PATCH] Enable Eeschema ERC to Generate Errors for Unmatched Global Labels
You have some indentation issues, please review the coding style
policy at, http://ci.kicad-pcb.org/job/kicad-doxygen/ws/Documentation/doxygen/html/md_Documentation_development_coding-style-policy.html
The wxString line should probably also have a space in betweent he two
end parenthesis, but I am not sure.
I have not reviewed the patch further than that, FWIW.
2015-08-27 7:37 GMT+02:00 Joseph Chen <joseph.chen59@xxxxxxxxx>:
> I am submitting a patch file (attached as well) that enables the eeschema
> ERC to generate errors for any and all unmatched global labels.
>
> This patch resolves the issue that I reported in [Bug 1487945].
>
> I have tested the patch on Ubuntu 15.04 and it passed all my test cases
>
> The patch is based off KiCAD BZR 6129.
>
> Please feel free to correct or enhance this patch any way you see fit.
>
> --Joe
>
> ------------------------------------------- Patch Contents
> --------------------------------------
>
> diff --git a/eeschema/class_drc_erc_item.cpp
> b/eeschema/class_drc_erc_item.cpp
> index 8e35bfe..aefac14 100644
> --- a/eeschema/class_drc_erc_item.cpp
> +++ b/eeschema/class_drc_erc_item.cpp
> @@ -52,6 +52,8 @@ wxString DRC_ITEM::GetErrorText() const
> return wxString( _("Mismatch between hierarchical labels and pins
> sheets"));
> case ERCE_NOCONNECT_CONNECTED:
> return wxString( _("A no connect symbol is connected to more than 1
> pin"));
> + case ERCE_GLOBLABEL:
> + return wxString( _("A global label not connected to any other
> global label"));
>
> default:
> return wxString( wxT("Unkown.") );
> diff --git a/eeschema/class_netlist_object.cpp
> b/eeschema/class_netlist_object.cpp
> index 169a28f..8c77cd1 100644
> --- a/eeschema/class_netlist_object.cpp
> +++ b/eeschema/class_netlist_object.cpp
> @@ -228,6 +228,14 @@ bool NETLIST_OBJECT::IsLabelConnected( NETLIST_OBJECT*
> aNetItem )
> return true; //connected!
> }
> }
> + else if( ( at == NET_GLOBLABEL ) && ( bt == NET_GLOBLABEL ) )
> + {
> + const char *al = (const char *)(m_Label).mb_str();
> + const char *bl = (const char *)(aNetItem->m_Label).mb_str();
> +
> + if( strcmp(al, bl) == 0 )
> + return true;
> + }
>
> return false; //these two are unconnected
> }
> diff --git a/eeschema/dialogs/dialog_erc.cpp
> b/eeschema/dialogs/dialog_erc.cpp
> index 4dca4d5..c14aa70 100644
> --- a/eeschema/dialogs/dialog_erc.cpp
> +++ b/eeschema/dialogs/dialog_erc.cpp
> @@ -499,7 +499,6 @@ void DIALOG_ERC::TestErc( wxArrayString* aMessagesList )
> case NET_LABEL:
> case NET_BUSLABELMEMBER:
> case NET_PINLABEL:
> - case NET_GLOBLABEL:
> case NET_GLOBBUSLABELMEMBER:
> break;
>
> @@ -507,6 +506,7 @@ void DIALOG_ERC::TestErc( wxArrayString* aMessagesList )
> case NET_HIERBUSLABELMEMBER:
> case NET_SHEETLABEL:
> case NET_SHEETBUSLABELMEMBER:
> + case NET_GLOBLABEL:
>
> // ERC problems when pin sheets do not match hierarchical
> labels.
> // Each pin sheet must match a hierarchical label
> diff --git a/eeschema/erc.cpp b/eeschema/erc.cpp
> index e477610..e1a932a 100644
> --- a/eeschema/erc.cpp
> +++ b/eeschema/erc.cpp
> @@ -251,18 +251,31 @@ void Diagnose( NETLIST_OBJECT* aNetItemRef,
> NETLIST_OBJECT* aNetItemTst,
> {
> msg.Printf( _( "Hierarchical label %s is not connected to a
> sheet label." ),
> GetChars( aNetItemRef->m_Label ) );
> + marker->SetData( ERCE_HIERACHICAL_LABEL,
> + aNetItemRef->m_Start,
> + msg,
> + aNetItemRef->m_Start );
> }
> + else if( (aNetItemRef->m_Type == NET_GLOBLABEL) )
> + {
> + msg.Printf( _( "Global label %s is not connected to any other
> global label." ),
> + GetChars( aNetItemRef->m_Label ) );
> + marker->SetData( ERCE_GLOBLABEL,
> + aNetItemRef->m_Start,
> + msg,
> + aNetItemRef->m_Start );
> + }
> +
> else
> {
> msg.Printf( _( "Sheet label %s is not connected to a
> hierarchical label." ),
> GetChars( aNetItemRef->m_Label ) );
> + marker->SetData( ERCE_HIERACHICAL_LABEL,
> + aNetItemRef->m_Start,
> + msg,
> + aNetItemRef->m_Start );
> }
>
> -
> - marker->SetData( ERCE_HIERACHICAL_LABEL,
> - aNetItemRef->m_Start,
> - msg,
> - aNetItemRef->m_Start );
> return;
> }
>
> diff --git a/eeschema/erc.h b/eeschema/erc.h
> index 1e01515..908c498 100644
> --- a/eeschema/erc.h
> +++ b/eeschema/erc.h
> @@ -57,6 +57,7 @@ extern const wxString CommentERC_V[];
> #define ERCE_PIN_TO_PIN_ERROR 5 // pin connected to an other pin:
> error level
> #define ERCE_HIERACHICAL_LABEL 6 // mismatch between hierarchical
> labels and pins sheets
> #define ERCE_NOCONNECT_CONNECTED 7 // a no connect symbol is connected
> to more than 1 pin
> +#define ERCE_GLOBLABEL 8 // a global label not connected to
> any other global label
>
> /* Minimal connection table */
> #define NPI 4 // Net with Pin isolated, this pin has type Not Connected
> and must be left N.C.
>
>
> _______________________________________________
> Mailing list: https://launchpad.net/~kicad-developers
> Post to : kicad-developers@xxxxxxxxxxxxxxxxxxx
> Unsubscribe : https://launchpad.net/~kicad-developers
> More help : https://help.launchpad.net/ListHelp
>
Follow ups
References