KiCad PCB EDA Suite
Loading...
Searching...
No Matches
board_design_settings.h
Go to the documentation of this file.
1/*
2 * This program source code file is part of KiCad, a free EDA CAD application.
3 *
4 * Copyright (C) 2009-2019 Jean-Pierre Charras, jp.charras at wanadoo.fr
5 * Copyright The KiCad Developers, see AUTHORS.txt for contributors.
6 *
7 * This program is free software; you can redistribute it and/or
8 * modify it under the terms of the GNU General Public License
9 * as published by the Free Software Foundation; either version 2
10 * of the License, or (at your option) any later version.
11 *
12 * This program is distributed in the hope that it will be useful,
13 * but WITHOUT ANY WARRANTY; without even the implied warranty of
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 * GNU General Public License for more details.
16 *
17 * You should have received a copy of the GNU General Public License
18 * along with this program. If not, see <https://www.gnu.org/licenses/>.
19 */
20
21#pragma once
22
23#include <memory>
24#include <optional>
25#include <set>
26#include <string>
27#include <vector>
28
31#include <drc/drc_exclusion.h>
32#include <eda_units.h>
33#include <lset.h>
36#include <widgets/ui_common.h>
37#include <zone_settings.h>
39#include <router/pns_meander.h>
40
41
42#define DEFAULT_SILK_LINE_WIDTH 0.1
43#define DEFAULT_COPPER_LINE_WIDTH 0.2
44#define DEFAULT_EDGE_WIDTH 0.05
45#define DEFAULT_COURTYARD_WIDTH 0.05
46#define DEFAULT_LINE_WIDTH 0.10
47
48#define DEFAULT_SILK_TEXT_SIZE 1.0
49#define DEFAULT_COPPER_TEXT_SIZE 1.5
50#define DEFAULT_TEXT_SIZE 1.0
51
52#define DEFAULT_SILK_TEXT_WIDTH 0.1
53#define DEFAULT_COPPER_TEXT_WIDTH 0.30
54#define DEFAULT_TEXT_WIDTH 0.15
55
56#define DEFAULT_DIMENSION_ARROW_LENGTH 50 // mils, for legacy purposes
57#define DEFAULT_DIMENSION_EXTENSION_OFFSET 0.5
58
59// Largest microvia stack pitch, in mm. Bounds the hop position arithmetic.
60#define MAX_MICROVIA_STACK_PITCH_MM 25.0
61
62// Board thickness, mainly for 3D view:
63#define DEFAULT_BOARD_THICKNESS_MM 1.6
64
65#define DEFAULT_PCB_EDGE_THICKNESS 0.15
66
67// soldermask to pad clearance. The default is 0 because usually board houses
68// create a clearance depending on their fab process: mask material, color, price, etc.
69#define DEFAULT_SOLDERMASK_EXPANSION 0.0
70
71#define DEFAULT_SOLDERMASK_TO_COPPER_CLEARANCE 0.0
72
73#define DEFAULT_SOLDERMASK_MIN_WIDTH 0.0
74
75#define DEFAULT_SOLDERPASTE_CLEARANCE 0.0
76#define DEFAULT_SOLDERPASTE_RATIO 0.0
77
78#define DEFAULT_CUSTOMTRACKWIDTH 0.2
79#define DEFAULT_CUSTOMDPAIRWIDTH 0.125
80#define DEFAULT_CUSTOMDPAIRGAP 0.18
81#define DEFAULT_CUSTOMDPAIRVIAGAP 0.18
82
83#define DEFAULT_MEANDER_SPACING 0.6
84#define DEFAULT_DP_MEANDER_SPACING 1.0
85
86#define DEFAULT_MINCLEARANCE 0.0 // overall min clearance
87#define DEFAULT_MINCONNECTION 0.0 // overall min connection width
88#define DEFAULT_TRACKMINWIDTH 0.2 // track width min value (mm)
89#define DEFAULT_VIASMINSIZE 0.5 // vias (not micro vias) min diameter
90#define DEFAULT_MINTHROUGHDRILL 0.3 // through holes (not micro vias) min drill diameter
91#define DEFAULT_MICROVIASMINSIZE 0.2 // micro vias (not vias) min diameter
92#define DEFAULT_MICROVIASMINDRILL 0.1 // micro vias (not vias) min drill diameter
93#define DEFAULT_HOLETOHOLEMIN 0.25 // minimum web thickness between two drilled holes
94#define DEFAULT_HOLECLEARANCE 0.25 // copper-to-hole clearance (from IPC level A)
95
96#define DEFAULT_COPPEREDGECLEARANCE 0.5 // clearance between copper items and edge cuts
97#define LEGACY_COPPEREDGECLEARANCE -0.01 // A flag to indicate the legacy method (based
98 // on edge cut line thicknesses) should be used.
99#define DEFAULT_SILKCLEARANCE 0.0
100#define DEFAULT_MINGROOVEWIDTH 0.0
101
102#define DEFAULT_MINRESOLVEDSPOKES 2 // Fewer resolved spokes indicates a starved thermal
103
104#define MINIMUM_ERROR_SIZE_MM 0.001 // For arc approximation
105#define MAXIMUM_ERROR_SIZE_MM 0.1 // For arc approximation
106
107class DRC_ENGINE;
108class NET_SETTINGS;
109class NETCLASS;
110
111#define MAXIMUM_CLEARANCE pcbIUScale.mmToIU( 500 ) // to prevent int-overflows
112
113// Min/max values used in dialogs to validate settings
114#define MINIMUM_LINE_WIDTH_MM 0.005 // minimal line width entered in a dialog
115#define MAXIMUM_LINE_WIDTH_MM 100.0 // max line width entered in a dialog
116
117// Default pad properties
118#define DEFAULT_PAD_WIDTH_MM 2.54
119#define DEFAULT_PAD_HEIGTH_MM 1.27
120#define DEFAULT_PAD_DRILL_DIAMETER_MM 0.8
121#define DEFAULT_PAD_RR_RADIUS_RATIO 0.15
122
128{
129 int m_Diameter; // <= 0 means use Netclass via diameter
130 int m_Drill; // <= 0 means use Netclass via drill
131
133 {
134 m_Diameter = 0;
135 m_Drill = 0;
136 }
137
138 VIA_DIMENSION( int aDiameter, int aDrill )
139 {
140 m_Diameter = aDiameter;
141 m_Drill = aDrill;
142 }
143
144 bool operator==( const VIA_DIMENSION& aOther ) const
145 {
146 return ( m_Diameter == aOther.m_Diameter ) && ( m_Drill == aOther.m_Drill );
147 }
148
149 bool operator!=( const VIA_DIMENSION& aOther ) const { return !operator==( aOther ); }
150
151 bool operator<( const VIA_DIMENSION& aOther ) const
152 {
153 if( m_Diameter != aOther.m_Diameter )
154 return m_Diameter < aOther.m_Diameter;
155
156 return m_Drill < aOther.m_Drill;
157 }
158};
159
160
166{
167 wxString m_Name;
170 bool m_Staggered = false;
171 int m_ViaSize = 0; // <= 0 means use netclass
172 int m_ViaDrill = 0;
173 bool m_UseNetclass = false;
174 bool m_Filled = true;
175 bool m_Capped = false;
176 int m_Pitch = 0; // staggered only
177
178 bool operator==( const VIA_STACK_PRESET& aOther ) const = default;
179};
180
181
187{
188 int m_Width; // <= 0 means use Netclass differential pair width
189 int m_Gap; // <= 0 means use Netclass differential pair gap
190 int m_ViaGap; // <= 0 means use Netclass differential pair via gap
191
193 {
194 m_Width = 0;
195 m_Gap = 0;
196 m_ViaGap = 0;
197 }
198
199 DIFF_PAIR_DIMENSION( int aWidth, int aGap, int aViaGap )
200 {
201 m_Width = aWidth;
202 m_Gap = aGap;
203 m_ViaGap = aViaGap;
204 }
205
206 bool operator==( const DIFF_PAIR_DIMENSION& aOther ) const
207 {
208 return ( m_Width == aOther.m_Width )
209 && ( m_Gap == aOther.m_Gap )
210 && ( m_ViaGap == aOther.m_ViaGap );
211 }
212
213 bool operator!=( const DIFF_PAIR_DIMENSION& aOther ) const { return !operator==( aOther ); }
214
215 bool operator<( const DIFF_PAIR_DIMENSION& aOther ) const
216 {
217 if( m_Width != aOther.m_Width )
218 return m_Width < aOther.m_Width;
219
220 if( m_Gap != aOther.m_Gap )
221 return m_Gap < aOther.m_Gap;
222
223 return m_ViaGap < aOther.m_ViaGap;
224 }
225};
226
227
228enum
229{
236
238};
239
240
242{
243 wxString m_Text;
246
247 TEXT_ITEM_INFO( const wxString& aText, bool aVisible, PCB_LAYER_ID aLayer )
248 {
249 m_Text = aText;
250 m_Visible = aVisible;
251 m_Layer = aLayer;
252 }
253
254 bool operator==( const TEXT_ITEM_INFO& aOther ) const
255 {
256 return m_Text.IsSameAs( aOther.m_Text )
257 && ( m_Visible == aOther.m_Visible )
258 && ( m_Layer == aOther.m_Layer );
259 }
260};
261
262
263// forward declaration from class_track.h
264enum class VIATYPE : int;
265
266// forward declarations from dimension.h
267enum class DIM_UNITS_FORMAT : int;
268enum class DIM_TEXT_POSITION : int;
269enum class DIM_UNITS_MODE : int;
270enum class DIM_PRECISION : int;
271
272class PAD;
273
278{
279public:
280 BOARD_DESIGN_SETTINGS( JSON_SETTINGS* aParent, const std::string& aPath );
281
282 virtual ~BOARD_DESIGN_SETTINGS();
283
285 {
286 wxString setting_name;
288 };
289
290 bool operator==( const BOARD_DESIGN_SETTINGS& aOther ) const;
291 bool operator!=( const BOARD_DESIGN_SETTINGS& aOther ) const
292 {
293 return !operator==( aOther );
294 }
295
297
299
300 bool LoadFromFile( const wxString& aDirectory = "" ) override;
301
304
307
312
313 SEVERITY GetSeverity( int aDRCErrorCode );
314
318 bool Ignore( int aDRCErrorCode );
319
325 std::vector<VALIDATION_ERROR> ValidateDesignRules( std::optional<EDA_UNITS> aUnits = std::nullopt ) const;
326
331
332 void SetDefaultZoneSettings( const ZONE_SETTINGS& aSettings )
333 {
334 m_defaultZoneSettings = aSettings;
335 }
336
340 const wxString& GetCurrentNetClassName() const
341 {
343 }
344
348 bool UseNetClassTrack() const { return ( m_trackWidthIndex <= 0 && !m_useCustomTrackVia ); }
349
353 bool UseNetClassVia() const { return ( m_viaSizeIndex <= 0 && !m_useCustomTrackVia ); }
354
359 {
360 return ( m_diffPairIndex == 0 && !m_useCustomDiffPair );
361 }
362
366 int GetBiggestClearanceValue() const;
367
371 int GetSmallestClearanceValue() const;
372
376 int GetTrackWidthIndex() const { return m_trackWidthIndex; }
377
383 void SetTrackWidthIndex( int aIndex );
384
391 int GetNextTrackWidthIndex( int aIndex, bool aForward ) const;
392
398 int GetCurrentTrackWidth() const;
399
408 void SetCustomTrackWidth( int aWidth ) { m_customTrackWidth = aWidth; }
410
414 int GetViaSizeIndex() const { return m_viaSizeIndex; }
415
419 inline int GetViaStackIndex() const { return m_viaStackIndex; }
420
424 inline void SetViaStackIndex( int aIndex ) { m_viaStackIndex = aIndex; }
425
431 void SetViaSizeIndex( int aIndex );
432
439 int GetNextViaSizeIndex( int aIndex, bool aForward ) const;
440
446 int GetCurrentViaSize() const;
447
456 void SetCustomViaSize( int aSize ) { m_customViaSize.m_Diameter = aSize; }
457
461 int GetCustomViaSize() const { return m_customViaSize.m_Diameter; }
462
468 int GetCurrentViaDrill() const;
469
478 void SetCustomViaDrill( int aDrill ) { m_customViaSize.m_Drill = aDrill; }
479
483 int GetCustomViaDrill() const { return m_customViaSize.m_Drill; }
484
493 void UseCustomTrackViaSize( bool aEnabled ) { m_useCustomTrackVia = aEnabled; }
494
499
503 int GetDiffPairIndex() const { return m_diffPairIndex; }
504
508 void SetDiffPairIndex( int aIndex );
509
516 int GetNextDiffPairIndex( int aIndex, bool aForward ) const;
517
524 void SetCustomDiffPairWidth( int aWidth ) { m_customDiffPair.m_Width = aWidth; }
525
529 int GetCustomDiffPairWidth() { return m_customDiffPair.m_Width; }
530
536 void SetCustomDiffPairGap( int aGap ) { m_customDiffPair.m_Gap = aGap; }
537
542
549 void SetCustomDiffPairViaGap( int aGap ) { m_customDiffPair.m_ViaGap = aGap; }
550
555 {
556 return m_customDiffPair.m_ViaGap > 0 ? m_customDiffPair.m_ViaGap : m_customDiffPair.m_Gap;
557 }
558
564 void UseCustomDiffPairDimensions( bool aEnabled ) { m_useCustomDiffPair = aEnabled; }
565
570
575 int GetCurrentDiffPairWidth() const;
576
581 int GetCurrentDiffPairGap() const;
582
588 int GetCurrentDiffPairViaGap() const;
589
595 const LSET& GetEnabledLayers() const { return m_enabledLayers; }
596
602 void SetEnabledLayers( const LSET& aMask );
603
610 bool IsLayerEnabled( PCB_LAYER_ID aLayerId ) const
611 {
612 if( aLayerId >= 0 && aLayerId < PCB_LAYER_ID_COUNT )
613 return m_enabledLayers[aLayerId];
614
615 return false;
616 }
617
622
628 void SetCopperLayerCount( int aNewLayerCount );
629
634
640 void SetUserDefinedLayerCount( int aNewLayerCount );
641
646 int GetBoardThickness() const { return m_boardThickness; }
647 void SetBoardThickness( int aThickness ) { m_boardThickness = aThickness; }
648
655 int GetDRCEpsilon() const;
656
662 int GetHolePlatingThickness() const;
663
667 int GetLineThickness( PCB_LAYER_ID aLayer ) const;
668
672 VECTOR2I GetTextSize( PCB_LAYER_ID aLayer ) const;
673
677 int GetTextThickness( PCB_LAYER_ID aLayer ) const;
678
679 bool GetTextItalic( PCB_LAYER_ID aLayer ) const;
680 bool GetTextUpright( PCB_LAYER_ID aLayer ) const;
681
682 int GetLayerClass( PCB_LAYER_ID aLayer ) const;
683
684 void SetAuxOrigin( const VECTOR2I& aOrigin ) { m_auxOrigin = aOrigin; }
685 const VECTOR2I& GetAuxOrigin() const { return m_auxOrigin; }
686
687 void SetGridOrigin( const VECTOR2I& aOrigin ) { m_gridOrigin = aOrigin; }
688 const VECTOR2I& GetGridOrigin() const { return m_gridOrigin; }
689
690 void SetDefaultMasterPad();
691
692private:
693 void initFromOther( const BOARD_DESIGN_SETTINGS& aOther );
694
695 bool migrateSchema0to1();
696 bool migrateSchema2to3();
697
698public:
699 // Note: the first value in each dimensions list is the current netclass value
700 std::vector<int> m_TrackWidthList;
701 std::vector<VIA_DIMENSION> m_ViasDimensionsList;
702 std::vector<VIA_STACK_PRESET> m_ViaStackPresets;
703 std::vector<DIFF_PAIR_DIMENSION> m_DiffPairDimensionsList;
704
711
715
717
718 bool m_UseConnectedTrackWidth; // use width of existing track when creating a new,
719 // connected track
720 bool m_TempOverrideTrackWidth; // use selected track width temporarily even when
721 // using connected track width
722 int m_MinClearance; // overall min
723 int m_MinGrooveWidth; // Minimum groove width for creepage checks
724 int m_MinConn; // overall min connection width
725 int m_TrackMinWidth; // overall min track width
726 int m_ViasMinAnnularWidth; // overall minimum width of the via copper ring
727 int m_ViasMinSize; // overall vias (not micro vias) min diameter
728 int m_MinThroughDrill; // through hole (not micro vias) min drill diameter
729 int m_MicroViasMinSize; // micro vias min diameter
730 int m_MicroViasMinDrill; // micro vias min drill diameter
732 int m_HoleClearance; // Hole to copper clearance
733 int m_HoleToHoleMin; // Min width of web between two drilled holes
734 int m_SilkClearance; // Min dist between two silk items
735 int m_MinResolvedSpokes; // Min spoke count to not be a starved thermal
736 int m_MinSilkTextHeight; // Min text height for silkscreen layers
737 int m_MinSilkTextThickness; // Min text thickness for silkscreen layers
738
739 std::shared_ptr<DRC_ENGINE> m_DRCEngine;
740 std::map<int, SEVERITY> m_DRCSeverities; // Map from DRCErrorCode to SEVERITY
741 std::set<DRC_EXCLUSION, DRC_EXCLUSION_COMPARE> m_DrcExclusions;
742
743 // When smoothing the zone's outline there's the question of external fillets (that is, those
744 // applied to concave corners). While it seems safer to never have copper extend outside the
745 // zone outline, 5.1.x and prior did indeed fill them so we leave the mode available.
747
748 // Maximum error allowed when approximating circles and arcs to segments
750
751 // Global mask margins:
752 int m_SolderMaskExpansion; // Solder mask inflation around the pad or via
753 int m_SolderMaskMinWidth; // Solder mask min width (2 areas closer than this
754 // width are merged)
755 int m_SolderMaskToCopperClearance; // Min distance allowed from copper to a mask
756 // aperture of another net
757
758 int m_SolderPasteMargin; // Solder paste margin absolute value
759 double m_SolderPasteMarginRatio; // Solder mask margin ratio value of pad size
760 // The final margin is the sum of these 2 values
762
763 bool m_TentViasFront; // The default tenting option if not overridden on an
764 bool m_TentViasBack; // individual via
765
766 bool m_CoverViasFront; // The default covering option if not overridden on an
767 bool m_CoverViasBack; // individual via
768
769 bool m_PlugViasFront; // The default plugging option if not overridden on an
770 bool m_PlugViasBack; // individual via
771
772 bool m_CapVias; // The default capping option if not overridden on an
773 // individual via
774
775 bool m_FillVias; // The default filling option if not overridden on ana
776 // individual via
777
778 std::shared_ptr<NET_SETTINGS> m_NetSettings;
779
780 // Variables used in footprint editing (default value in item/footprint creation)
781 std::vector<TEXT_ITEM_INFO> m_DefaultFPTextItems;
782
783 // Map between user layer default names and custom names
784 std::map<std::string, wxString> m_UserLayerNames;
785
786 // Default zone hatching offsets
787 std::map<PCB_LAYER_ID, ZONE_LAYER_PROPERTIES> m_ZoneLayerProperties;
788
789 // Arrays of default values for the various layer classes.
795
796 // Default values for dimension objects
805
811
812 // Miscellaneous
813 std::unique_ptr<PAD> m_Pad_Master; // A dummy pad to store all default parameters
814 // when importing values or creating a new pad
815
816 // Set to true if the board has a stackup management.
817 // If not set a default basic stackup will be used to generate the gbrjob file.
818 // Could be removed later, or at least always set to true
820
823
824private:
827
828 // Indices into the trackWidth, viaSizes and diffPairDimensions lists.
829 // The 0 index is always the current netclass value(s)
833 int m_viaStackIndex; // current selection into m_ViaStackPresets
834
835 // Custom values for track/via sizes (specified via dialog instead of netclass or lists)
839
840 // Custom values for differential pairs (specified via dialog instead of netclass/lists)
843
847
849
853
861
866
867
870};
@ LAYER_CLASS_OTHERS
@ LAYER_CLASS_COUNT
@ LAYER_CLASS_FAB
@ LAYER_CLASS_COURTYARD
@ LAYER_CLASS_SILK
@ LAYER_CLASS_COPPER
@ LAYER_CLASS_EDGES
Container for design settings for a BOARD object.
DIM_PRECISION m_DimensionPrecision
Number of digits after the decimal.
TEARDROP_PARAMETERS_LIST * GetTeadropParamsList()
void UseCustomTrackViaSize(bool aEnabled)
Enables/disables custom track/via size settings.
std::vector< TEXT_ITEM_INFO > m_DefaultFPTextItems
int GetHolePlatingThickness() const
Pad & via drills are finish size.
void SetCustomDiffPairWidth(int aWidth)
Sets custom track width for differential pairs (i.e.
VIATYPE m_CurrentViaType
(VIA_BLIND_BURIED, VIA_THROUGH, VIA_MICROVIA)
void SetEnabledLayers(const LSET &aMask)
Change the bit-mask of enabled layers to aMask.
std::shared_ptr< NET_SETTINGS > m_NetSettings
bool operator==(const BOARD_DESIGN_SETTINGS &aOther) const
void SetCustomTrackWidth(int aWidth)
Sets custom width for track (i.e.
DIM_UNITS_FORMAT m_DimensionUnitsFormat
void initFromOther(const BOARD_DESIGN_SETTINGS &aOther)
bool GetTextUpright(PCB_LAYER_ID aLayer) const
std::map< int, SEVERITY > m_DRCSeverities
VECTOR2I m_gridOrigin
origin for grid offsets
int GetTextThickness(PCB_LAYER_ID aLayer) const
Return the default text thickness from the layer class for the given layer.
std::map< PCB_LAYER_ID, ZONE_LAYER_PROPERTIES > m_ZoneLayerProperties
void SetGridOrigin(const VECTOR2I &aOrigin)
VECTOR2I m_auxOrigin
origin for plot exports
bool m_TextUpright[LAYER_CLASS_COUNT]
BOARD_DESIGN_SETTINGS(JSON_SETTINGS *aParent, const std::string &aPath)
DRILL_SYMBOL_PROFILE & GetDrillSymbolProfile()
bool GetTextItalic(PCB_LAYER_ID aLayer) const
int GetNextDiffPairIndex(int aIndex, bool aForward) const
Compute the next diff pair dimensions list index when cycling predefined sizes, skipping the index-0 ...
const wxString & GetCurrentNetClassName() const
wxString m_currentNetClassName
Current net class name used to display netclass info.
void SetViaSizeIndex(int aIndex)
Set the current via size list index to aIndex.
std::shared_ptr< DRC_ENGINE > m_DRCEngine
std::vector< DIFF_PAIR_DIMENSION > m_DiffPairDimensionsList
const DRILL_SYMBOL_PROFILE & GetDrillSymbolProfile() const
bool Ignore(int aDRCErrorCode)
Return true if the DRC error code's severity is SEVERITY_IGNORE.
void SetCustomViaSize(int aSize)
Set custom size for via diameter (i.e.
void SetViaStackIndex(int aIndex)
Set the current via stack preset index to aIndex.
const LSET & GetEnabledLayers() const
Return a bit-mask of all the layers that are enabled.
std::map< std::string, wxString > m_UserLayerNames
const VECTOR2I & GetGridOrigin() const
int GetBoardThickness() const
The full thickness of the board including copper and masks.
std::unique_ptr< PAD > m_Pad_Master
void SetCustomDiffPairGap(int aGap)
Sets custom gap for differential pairs (i.e.
int GetNextTrackWidthIndex(int aIndex, bool aForward) const
Compute the next track width list index when cycling predefined sizes, skipping the index-0 netclass ...
bool IsLayerEnabled(PCB_LAYER_ID aLayerId) const
Test whether a given layer aLayerId is enabled.
TEARDROP_PARAMETERS_LIST m_TeardropParamsList
The parameters of teardrops for the different teardrop targets (via/pad, track end).
DRILL_SYMBOL_PROFILE m_drillSymbolProfile
Grouping rules and symbol assignments shared by every drill chart and map on the board.
void SetUserDefinedLayerCount(int aNewLayerCount)
Set the number of user defined layers to aNewLayerCount.
void SetAuxOrigin(const VECTOR2I &aOrigin)
const VECTOR2I & GetAuxOrigin() const
bool operator!=(const BOARD_DESIGN_SETTINGS &aOther) const
int GetDRCEpsilon() const
Return an epsilon which accounts for rounding errors, etc.
int GetLayerClass(PCB_LAYER_ID aLayer) const
PNS::MEANDER_SETTINGS m_DiffPairMeanderSettings
bool UseNetClassVia() const
Return true if netclass values should be used to obtain appropriate via size.
BOARD_STACKUP & GetStackupDescriptor()
int m_boardThickness
Board thickness for 3D viewer.
int m_copperLayerCount
Number of copper layers for this design.
bool UseNetClassTrack() const
Return true if netclass values should be used to obtain appropriate track width.
int m_userDefinedLayerCount
Number of user defined layers for this design.
bool UseNetClassDiffPair() const
Return true if netclass values should be used to obtain appropriate diff pair dimensions.
void SetCustomViaDrill(int aDrill)
Sets custom size for via drill (i.e.
bool LoadFromFile(const wxString &aDirectory="") override
Loads the backing file from disk and then calls Load()
void SetDefaultZoneSettings(const ZONE_SETTINGS &aSettings)
PNS::MEANDER_SETTINGS m_SingleTrackMeanderSettings
void SetTrackWidthIndex(int aIndex)
Set the current track width list index to aIndex.
int m_TextThickness[LAYER_CLASS_COUNT]
ZONE_SETTINGS m_defaultZoneSettings
The default settings that will be used for new zones.
const BOARD_STACKUP & GetStackupDescriptor() const
void UseCustomDiffPairDimensions(bool aEnabled)
Enables/disables custom differential pair dimensions.
int GetNextViaSizeIndex(int aIndex, bool aForward) const
Compute the next via size list index when cycling predefined sizes, skipping the index-0 netclass pla...
SEVERITY GetSeverity(int aDRCErrorCode)
std::vector< int > m_TrackWidthList
DIFF_PAIR_DIMENSION m_customDiffPair
std::vector< VALIDATION_ERROR > ValidateDesignRules(std::optional< EDA_UNITS > aUnits=std::nullopt) const
Validate design settings values and return per-field errors.
int m_LineThickness[LAYER_CLASS_COUNT]
VECTOR2I GetTextSize(PCB_LAYER_ID aLayer) const
Return the default text size from the layer class for the given layer.
void SetBoardThickness(int aThickness)
int GetLineThickness(PCB_LAYER_ID aLayer) const
Return the default graphic segment thickness from the layer class for the given layer.
ZONE_SETTINGS & GetDefaultZoneSettings()
bool m_UseHeightForLengthCalcs
Enable inclusion of stackup height in track length measurements and length tuning.
VECTOR2I m_TextSize[LAYER_CLASS_COUNT]
PNS::MEANDER_SETTINGS m_SkewMeanderSettings
LSET m_enabledLayers
Bit-mask for layer enabling.
bool m_TextItalic[LAYER_CLASS_COUNT]
std::vector< VIA_STACK_PRESET > m_ViaStackPresets
void SetCopperLayerCount(int aNewLayerCount)
Set the copper layer count to aNewLayerCount.
DIM_TEXT_POSITION m_DimensionTextPosition
BOARD_STACKUP m_stackup
The description of layers stackup, for board fabrication only physical layers are in layers stackup.
std::vector< VIA_DIMENSION > m_ViasDimensionsList
BOARD_DESIGN_SETTINGS & operator=(const BOARD_DESIGN_SETTINGS &aOther)
std::set< DRC_EXCLUSION, DRC_EXCLUSION_COMPARE > m_DrcExclusions
void SetCustomDiffPairViaGap(int aGap)
Sets custom via gap for differential pairs (i.e.
Manage layers needed to make a physical board.
Design Rule Checker object that performs all the DRC tests.
Definition drc_engine.h:129
Grouping rules and symbol assignments, shared by reference so a chart and its map can never disagree ...
JSON_SETTINGS(const wxString &aFilename, SETTINGS_LOC aLocation, int aSchemaVersion)
LSET is a set of PCB_LAYER_IDs.
Definition lset.h:37
NESTED_SETTINGS(const std::string &aName, int aSchemaVersion, JSON_SETTINGS *aParent, const std::string &aPath, bool aLoadFromFile=true)
A collection of nets and the parameters used to route or test these nets.
Definition netclass.h:43
NET_SETTINGS stores various net-related settings in a project context.
Definition pad.h:61
Dimensions for the meandering algorithm.
Definition pns_meander.h:70
TEARDROP_PARAMETERS_LIST is a helper class to handle the list of TEARDROP_PARAMETERS needed to build ...
ZONE_SETTINGS handles zones parameters.
PCB_LAYER_ID
A quick note on layer IDs:
Definition layer_ids.h:56
@ In1_Cu
Definition layer_ids.h:62
@ PCB_LAYER_ID_COUNT
Definition layer_ids.h:167
@ F_Cu
Definition layer_ids.h:60
DIM_TEXT_POSITION
Where to place the text on a dimension.
DIM_UNITS_FORMAT
How to display the units in a dimension's text.
DIM_UNITS_MODE
Used for storing the units selection in the file because EDA_UNITS alone doesn't cut it.
DIM_PRECISION
VIATYPE
SEVERITY
Container to handle a stock of specific differential pairs each with unique track width,...
DIFF_PAIR_DIMENSION(int aWidth, int aGap, int aViaGap)
bool operator<(const DIFF_PAIR_DIMENSION &aOther) const
bool operator==(const DIFF_PAIR_DIMENSION &aOther) const
bool operator!=(const DIFF_PAIR_DIMENSION &aOther) const
TEXT_ITEM_INFO(const wxString &aText, bool aVisible, PCB_LAYER_ID aLayer)
bool operator==(const TEXT_ITEM_INFO &aOther) const
Container to handle a stock of specific vias each with unique diameter and drill sizes in the BOARD c...
bool operator==(const VIA_DIMENSION &aOther) const
VIA_DIMENSION(int aDiameter, int aDrill)
bool operator!=(const VIA_DIMENSION &aOther) const
bool operator<(const VIA_DIMENSION &aOther) const
A named microvia stack definition, chosen while routing instead of entering the values each time.
bool operator==(const VIA_STACK_PRESET &aOther) const =default
Functions to provide common constants and other functions to assist in making a consistent UI.
VECTOR2< int32_t > VECTOR2I
Definition vector2d.h:683
Class ZONE_SETTINGS used to handle zones parameters in dialogs.