24#ifndef DRC_RE_ROUTING_DIFF_PAIR_CONSTRAINT_DATA_H_
25#define DRC_RE_ROUTING_DIFF_PAIR_CONSTRAINT_DATA_H_
42 double aMaxUncoupledLength,
double aMinWidth,
43 double aPreferredWidth,
double aMaxWidth,
44 double aMinGap,
double aPreferredGap,
61 result.AddError(
"Maximum Uncoupled Length must be greater than 0" );
65 result.AddError(
"Minimum Width must be greater than 0" );
68 result.AddError(
"Preferred Width must be greater than 0" );
71 result.AddError(
"Maximum Width must be greater than 0" );
75 result.AddError(
"Minimum Gap must be greater than 0" );
78 result.AddError(
"Preferred Gap must be greater than 0" );
81 result.AddError(
"Maximum Gap must be greater than 0" );
85 result.AddError(
"Minimum Width cannot be greater than Preferred Width" );
88 result.AddError(
"Preferred Width cannot be greater than Maximum Width" );
91 result.AddError(
"Minimum Width cannot be greater than Maximum Width" );
95 result.AddError(
"Minimum Gap cannot be greater than Preferred Gap" );
98 result.AddError(
"Preferred Gap cannot be greater than Maximum Gap" );
101 result.AddError(
"Minimum Gap cannot be greater than Maximum Gap" );
108 auto formatDistance = [&](
double aValue )
113 wxString widthClause = wxString::Format(
114 wxS(
"(constraint track_width (min %s) (opt %s) (max %s))" ),
119 wxString gapClause = wxString::Format(
120 wxS(
"(constraint diff_pair_gap (min %s) (opt %s) (max %s))" ),
125 wxString uncoupledClause = wxString::Format(
126 wxS(
"(constraint diff_pair_uncoupled (max %s))" ),
129 return buildRule( aContext, { widthClause, gapClause, uncoupledClause } );
static wxString formatDouble(double aValue, int aPrecision=6)
wxString buildRule(const RULE_GENERATION_CONTEXT &aContext, const std::vector< wxString > &aConstraintClauses) const
void CopyFrom(const ICopyable &aSource) override
DRC_RE_BASE_CONSTRAINT_DATA()=default
void SetMaxGap(double aMaxGap)
void CopyFrom(const ICopyable &aSource) override
void SetMaxUncoupledLength(double aMaxUncoupledLength)
void SetPreferredGap(double aPreferredGap)
void SetMaxWidth(double aMaxWidth)
VALIDATION_RESULT Validate() const override
Validates the constraint data.
DRC_RE_ROUTING_DIFF_PAIR_CONSTRAINT_DATA()=default
wxString GenerateRule(const RULE_GENERATION_CONTEXT &aContext) override
double m_maxUncoupledLength
DRC_RE_ROUTING_DIFF_PAIR_CONSTRAINT_DATA(int aId, int aParentId, wxString aRuleName, double aMaxUncoupledLength, double aMinWidth, double aPreferredWidth, double aMaxWidth, double aMinGap, double aPreferredGap, double aMaxGap)
void SetMinGap(double aMinGap)
DRC_RE_ROUTING_DIFF_PAIR_CONSTRAINT_DATA(const DRC_RE_BASE_CONSTRAINT_DATA &aBaseData)
void SetPreferredWidth(double aPreferredWidth)
double GetMaxUncoupledLength()
double GetPreferredWidth()
void SetMinWidth(double aMinWidth)
virtual ~DRC_RE_ROUTING_DIFF_PAIR_CONSTRAINT_DATA()=default
Abstract interface class to enable polymorphic copying between objects.
Result of a validation operation.
wxString result
Test unit parsing edge cases and error handling.