74 const bool Z0_invalid = !std::isfinite(
Z0 ) ||
Z0 < 0;
75 const bool ANG_L_invalid = !std::isfinite(
ANG_L ) ||
ANG_L < 0;
76 const bool L_invalid = !std::isfinite( L ) || L < 0;
77 const bool W_invalid = !std::isfinite( W ) || W <= 0;
84 SetAnalysisResult( TCP::Z0,
Z0, Z0_invalid || invalid ? TRANSLINE_STATUS::TS_ERROR : TRANSLINE_STATUS::OK );
86 SetAnalysisResult( TCP::PHYS_LEN, L, L_invalid ? TRANSLINE_STATUS::WARNING : TRANSLINE_STATUS::OK );
87 SetAnalysisResult( TCP::PHYS_WIDTH, W, W_invalid ? TRANSLINE_STATUS::WARNING : TRANSLINE_STATUS::OK );
89 invalid ? TRANSLINE_STATUS::WARNING : TRANSLINE_STATUS::OK );
109 const bool Z0_invalid = !std::isfinite(
Z0 ) ||
Z0 < 0;
110 const bool ANG_L_invalid = !std::isfinite(
ANG_L ) ||
ANG_L < 0;
111 const bool L_invalid = !std::isfinite( L ) || L < 0;
112 const bool W_invalid = !std::isfinite( W ) || W <= 0;
114 bool invalid =
false;
119 SetSynthesisResult( TCP::Z0,
Z0, Z0_invalid ? TRANSLINE_STATUS::WARNING : TRANSLINE_STATUS::OK );
121 SetSynthesisResult( TCP::PHYS_LEN, L, L_invalid ? TRANSLINE_STATUS::TS_ERROR : TRANSLINE_STATUS::OK );
122 SetSynthesisResult( TCP::PHYS_WIDTH, W, W_invalid || invalid ? TRANSLINE_STATUS::TS_ERROR : TRANSLINE_STATUS::OK );
124 invalid ? TRANSLINE_STATUS::WARNING : TRANSLINE_STATUS::OK );
140 + ( 2.0 * aHeight * log( ( 2.0 * aHeight -
GetParameter( TCP::T ) ) / hmt )
141 -
GetParameter( TCP::T ) * log( aHeight * aHeight / hmt / hmt - 1.0 ) )
145 aAc *= 2.02e-6 *
GetParameter( TCP::EPSILONR ) * ZL / hmt;
146 aAc *= 1.0 + 2.0 *
GetParameter( TCP::PHYS_WIDTH ) / hmt
157 double de = 1.0 + tdw / M_PI * ( 1.0 + log( 4.0 * M_PI / tdw ) ) + 0.236 * pow( tdw, 1.65 );
164 ZL =
TC::ZF0 / 2.0 / M_PI / sqrt(
GetParameter( TCP::EPSILONR ) ) * log( 4.0 * aHeight / M_PI / de );
166 aAc *= 0.01141 / ZL / de;
167 aAc *= de / aHeight + 0.5 + tdw / 2.0 / M_PI + 0.5 / M_PI * log( 4.0 * M_PI / tdw ) + 0.1947 * pow( tdw, 0.65 )
168 - 0.0767 * pow( tdw, 1.65 );
bool Synthesize(SYNTHESIZE_OPTS aOpts) override
Synthesis track geometry parameters to match given Z0.
void SetAnalysisResults() override
Sets the output values and status following analysis.
void SetSynthesisResults() override
Sets the output values and status following synthesis.
double lineImpedance(double aHeight, double &aAc) const
Calculate characteristic impedance and conductor loss (in db/meter)
void Analyse() override
Analyse track geometry parameters to output Z0 and Ang_L.
double GetParameter(const TRANSLINE_PARAMETERS aParam) const
Gets the given calculation property.
void SetParameter(const TRANSLINE_PARAMETERS aParam, const double aValue)
Sets the given calculation property.
void SetSynthesisResult(TRANSLINE_PARAMETERS aParam, const double aValue, const TRANSLINE_STATUS aStatus=TRANSLINE_STATUS::OK)
Sets a synthesis result.
bool MinimiseZ0Error1D(TRANSLINE_PARAMETERS aOptimise, TRANSLINE_PARAMETERS aMeasure)
minimizeZ0Error1D
double SkinDepth() const
Calculate skin depth.
void SetAnalysisResult(TRANSLINE_PARAMETERS aParam, const double aValue, const TRANSLINE_STATUS aStatus=TRANSLINE_STATUS::OK)
Sets an analysis result.
static double UnitPropagationDelay(double aEpsilonEff)
Calculates the unit propagation delay (ps/cm) for the given effective permittivity.
SYNTHESIZE_OPTS
Options for specifying synthesis inputs, targets, or strategies.
TRANSLINE_PARAMETERS
All possible parameters used (as inputs or outputs) by the transmission line calculations.