7
mirror of https://gitlab.com/kicad/code/kicad.git synced 2024-11-22 11:05:04 +00:00
kicad/pcbnew/drc/drc_length_report.h
JamesJCode 5187ea721d Implement within_diff_pairs and group_matched DRC skew arguments
Enables DRC to calculate skew based on new arguments to skew
constraint DRC clauses:

Using (group_matched): calculate skew across all matching nets
Using (within_diff_pairs): calculate skew within every diff pair
   found within the matching nets

Additionally fixes DRC skew calculation to calculate skew relative
to the longest net in the skew check set (in line with PNS meander
placer calculations).
2024-07-29 15:28:39 +01:00

75 lines
1.9 KiB
C++

/*
* This program source code file is part of KiCad, a free EDA CAD application.
*
* Copyright (C) 2004-2023 KiCad Developers.
*
* This program is free software: you can redistribute it and/or modify it
* under the terms of the GNU General Public License as published by the
* Free Software Foundation, either version 3 of the License, or (at your
* option) any later version.
*
* This program is distributed in the hope that it will be useful, but
* WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* General Public License for more details.
*
* You should have received a copy of the GNU General Public License along
* with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#ifndef __DRC_LENGTH_REPORT_H
#define __DRC_LENGTH_REPORT_H
#include <set>
class DRC_RULE;
class DRC_LENGTH_REPORT
{
public:
struct ENTRY
{
int netcode;
wxString netname;
NETINFO_ITEM* netinfo;
BOARD_CONNECTED_ITEM* fromItem;
BOARD_CONNECTED_ITEM* toItem;
DRC_RULE* matchingRule;
wxString from;
wxString to;
std::set<BOARD_CONNECTED_ITEM*> items;
int viaCount;
double totalRoute;
int totalVia;
int totalPadToDie;
double total;
};
DRC_LENGTH_REPORT()
{
}
~DRC_LENGTH_REPORT()
{
}
void Clear()
{
m_report.clear();
}
void Add( const ENTRY& ent )
{
m_report.push_back( ent );
}
const std::vector<ENTRY>& GetEntries() const
{
return m_report;
}
private:
std::vector<ENTRY> m_report;
};
#endif