RUNNING Mextram TESTS ===================== Tests for the various variants of the Mextram model for bipolar devices, bjt504 - with substrate, without self-heating, bjt504t - with substrate, with self-heating, bjtd504 - without substrate, without self-heating, bjtd504t - without substrate, with self-heating, can be executed in the corresponding directories, by means of the commands run_all_tests_bjt504t $simulator_name etc, e.g. run_all_tests_bjt504t hspice These commands print some information to the screen and in turn run the scripts run_all_tests_mult_1p0 run_all_tests_mult_1p5 that are kept in the scripts directory. These scripts basically select the value for Mextrams `Mult' parameter that is to be applied in all the tests that are to be executed next. The templates for these latter tests are kept in the test_specs directory. More explanation about both the handling of Mult and test templates can be found below. Within the scripts run_all_tests_mult_*, actual tests are launched by the sequence: make $1 - all tests that should show near npn/pnp symmetry; automated polarity check is included. make -f Makefile_npn $1 - dedicated tests for npn type; no polarity check make -f Makefile_pnp $1 - dedicated tests for pnp type; no polarity check Examples of the dedicated tests are tests in the avalanche regime. The top-level script run_all_tests simply runs all the tests for all the model variants bjt*. SPECIFICATIONS OF TESTS ADDRESSING Mextram ========================================== The actual test specifications are kept in the directory test_specs/. These test specifications are general and are applied in the bjt* directories with appropriate adjustments to all the variants of the model. The *.inc files in the various directories serve these adjustments. In our experience, working with general test templates that can be applied to any of the variants of the model helps keeping the test suite maintainable. FOCUS OF THE TESTS ================== The purpose of the tests is to help in conformance checking between various implementations. Tests have been carefully developed to focus on physically relevant parts of the transistor characteristics and avoid extremely low- or extremely high current regimes, where the output of simulations is known to be highly simulator dependent. Large bias steps and extreme initial steps have been avoided, so as to avoid bearing on the convergency aids of the numerical solvers involved. Robustness testing is explicitly not within the focus of this test suite. TYPICAL OUTPUT ============== In our experience, typical output when running tests and comparing output of different sound simulator / model implementation combinations looks like: 504.7/bjt504t> run_all_tests_bjt504t ads ****** ****** qaSpec tests for ads ****** (for version 313.200 on platform x86_64_Linux_2.6.18.8-0.10-default) ****** ****** Checking test (ads): FGummel_low_Ic variant: standard (compared to: reference) DIFFER (max rel error is 0.0297%) variant: noFlip_P (compared to: standard ) MATCH (within specified tolerances) ****** Checking test (ads): FGummel_low_Ib variant: standard (compared to: reference) DIFFER (max rel error is 0.0309%) variant: noFlip_P (compared to: standard ) MATCH (within specified tolerances) ****** Checking test (ads): FGummel_low_MLF_Ic variant: standard (compared to: reference) DIFFER (max rel error is 0.0297%) variant: noFlip_P (compared to: standard ) MATCH (within specified tolerances) etc. The above may serve as an impression of the relative errors that can be expected when comparing different, but correct, model implementations as evaluated by different simulators. As shown above, the typical result of a test is the maximum relative error that was observed during the test. To make interpretation of this quantity easier, we have drastically limited the number of output quantities for the individual tests. We have also avoided nested sweeps. MULT SCALING ============ In Verilog-A, Mextram's MULT parameter is a model parameter. Therefore, in the Q&A test suite it is addressed as a model parameter. In some simulator interfaces the MULT parameter is defined to be an instance parameter. In the qaSpec files this can be taken into account by defining the variable MULT_INSTANCE by means of: `define MULT_INSTANCE If this variable is set, MULT will be addressed as an instance parameter in the tests. As indicated above, the scipts scripts/run_all_tests_mult_1p0 and scripts/run_all_tests_mult_1p5 control the value of the Mult parameter. The scripts also control the reference data. Reference data correspondoing to mult=1.0 is kept in the directories */reference_mult_1p0/ whereas reference data correspondoing to mult=1.5 is kept in the directories */reference_mult_1p5. The data from these is copied to the corresponding /reference directory by the scripts when corresponding tests are to be run. In this way, all tests can be run automatically for different values of Mult. July 28, 2008, Delft University of Technology, RvdT.