74 if( stripline_a >= 0.0 )
106 const Geometry g = Geometry1();
108 const Impedances z = Run( calc );
110 BOOST_TEST( z.z0e == 55.34, boost::test_tools::tolerance( 0.05 ) );
111 BOOST_TEST( z.z0o == 43.59, boost::test_tools::tolerance( 0.05 ) );
112 BOOST_TEST( z.zdiff == 87.18, boost::test_tools::tolerance( 0.05 ) );
113 BOOST_TEST( z.zdiff == 2.0 * z.z0o, boost::test_tools::tolerance( 1e-12 ) );
121 const Geometry g = Geometry1();
124 const Impedances zBaseline = Run( baseline );
127 const Impedances zExplicit = Run( explicitCenter );
129 BOOST_TEST( zExplicit.z0e == zBaseline.z0e, boost::test_tools::tolerance( 1e-6 ) );
130 BOOST_TEST( zExplicit.z0o == zBaseline.z0o, boost::test_tools::tolerance( 1e-6 ) );
131 BOOST_TEST( zExplicit.zdiff == zBaseline.zdiff, boost::test_tools::tolerance( 1e-6 ) );
142 const Geometry g = Geometry1();
144 const Impedances z = Run( calc );
146 BOOST_TEST( z.z0e == 50.0, boost::test_tools::tolerance( 0.08 ) );
147 BOOST_TEST( z.z0o == 41.5, boost::test_tools::tolerance( 0.08 ) );
148 BOOST_TEST( z.zdiff == 83.0, boost::test_tools::tolerance( 0.08 ) );
151 const Impedances zCentered = Run( centered );
156 const double dropE = zCentered.z0e - z.z0e;
157 const double dropO = zCentered.z0o - z.z0o;
169 const Geometry g = Geometry1();
172 const Impedances zCentered = Run( centered );
175 const Impedances zOffset = Run( offsetCentered );
177 BOOST_TEST( zOffset.z0e == zCentered.z0e, boost::test_tools::tolerance( 1e-6 ) );
178 BOOST_TEST( zOffset.z0o == zCentered.z0o, boost::test_tools::tolerance( 1e-6 ) );
186 const Geometry g = Geometry1();
191 double prevZ0e = std::numeric_limits<double>::infinity();
193 for(
double a : aValues )
196 const Impedances z = Run( calc );
209 const Geometry g = Geometry1();
218 BOOST_TEST( zcomm == 0.5 * z0e, boost::test_tools::tolerance( 1e-12 ) );
219 BOOST_TEST( kc == ( z0e - z0o ) / ( z0e + z0o ), boost::test_tools::tolerance( 1e-12 ) );
224 <<
" Zcomm=" << zcomm <<
" k_c=" << kc );
232 const Geometry g = Geometry1();
235 const double zdiffTarget = 87.18;
243 BOOST_TEST( zdiff == zdiffTarget, boost::test_tools::tolerance( 0.01 ) );
253 const Geometry g = Geometry1();
273 const Geometry g = Geometry1();
276 const double zdiffTarget = 92.0;
277 const double zcommTarget = 34.0;
287 BOOST_TEST( zdiff == zdiffTarget, boost::test_tools::tolerance( 0.01 ) );
288 BOOST_TEST( zcomm == zcommTarget, boost::test_tools::tolerance( 0.01 ) );
297 const Geometry g = Geometry1();
305 const double z0oTarget = 43.59;
312 BOOST_TEST( z0o == z0oTarget, boost::test_tools::tolerance( 0.01 ) );
321 const Geometry g = Geometry1();
331 const double z0eTarget = 70.0;
332 const double z0oTarget = 35.0;
343 BOOST_TEST( z0e == z0eTarget, boost::test_tools::tolerance( 0.02 ) );
344 BOOST_TEST( z0o == z0oTarget, boost::test_tools::tolerance( 0.02 ) );
356Impedances AnalyseStack(
double topDielectric,
double signal,
double bottomDielectric )
358 Geometry g = Geometry1();
359 g.b = topDielectric + signal + bottomDielectric;
362 const double striplineA = topDielectric + 0.5 * signal;
380 const Impedances zStack = AnalyseStack( dielectric, signal, dielectric );
382 Geometry g = Geometry1();
383 g.b = 2.0 * dielectric + signal;
386 const Impedances zCentered = Run( centered );
388 BOOST_TEST( zStack.z0e == zCentered.z0e, boost::test_tools::tolerance( 1e-9 ) );
389 BOOST_TEST( zStack.z0o == zCentered.z0o, boost::test_tools::tolerance( 1e-9 ) );
390 BOOST_TEST( zStack.zdiff == zCentered.zdiff, boost::test_tools::tolerance( 1e-9 ) );
405 const Impedances zOriginal = AnalyseStack(
top, signal, bottom );
406 const Impedances zSwapped = AnalyseStack( bottom, signal,
top );
408 BOOST_TEST( zOriginal.z0e == zSwapped.z0e, boost::test_tools::tolerance( 1e-9 ) );
409 BOOST_TEST( zOriginal.z0o == zSwapped.z0o, boost::test_tools::tolerance( 1e-9 ) );
410 BOOST_TEST( zOriginal.zdiff == zSwapped.zdiff, boost::test_tools::tolerance( 1e-9 ) );
422 Geometry g = Geometry1();
427 const Impedances zMidplane = Run( calcMidplane );
430 const Impedances zTop = Run( calcTop );
432 BOOST_TEST( zMidplane.z0e == zTop.z0e, boost::test_tools::tolerance( 1e-12 ) );
433 BOOST_TEST( zMidplane.z0o == zTop.z0o, boost::test_tools::tolerance( 1e-12 ) );
void Analyse() override
Analyse track geometry parameters to output Z0 and Ang_L.
bool Synthesize(SYNTHESIZE_OPTS aOpts) override
Synthesis track geometry parameters to match given Z0.
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.
std::unordered_map< TRANSLINE_PARAMETERS, std::pair< double, TRANSLINE_STATUS > > & GetAnalysisResults()
Gets the output parameters following analysis.
constexpr double UNIT_MIL
BOOST_AUTO_TEST_CASE(HorizontalAlignment)
BOOST_AUTO_TEST_SUITE(CadstarPartParser)
BOOST_AUTO_TEST_CASE(CenteredSymmetric)
BOOST_REQUIRE(intersection.has_value()==c.ExpectedIntersection.has_value())
BOOST_AUTO_TEST_SUITE_END()
BOOST_TEST(netlist.find("R_G1 ARM_OUT1 DIE_B R='0.001 / ((SW_STATE)") !=std::string::npos)
KIBIS top(path, &reporter)
BOOST_TEST_MESSAGE("\n=== Real-World Polygon PIP Benchmark ===\n"<< formatTable(table))
TRANSLINE_PARAMETERS
All possible parameters used (as inputs or outputs) by the transmission line calculations.