ngspice/tests/bin/run_cmc_check

154 lines
3.7 KiB
Bash
Executable File

#!/bin/sh
#
# Example Script to run tests and check results.
#
# This is an example script for running QA tests on a
# model and then checking the simulated results against
# reference results. A separate target is defined for each
# variant of the model. The program runQaTests.pl runs the
# tests, and that program expects a perl module SIMULATOR.pm
# to be provided for each simulator that is tested.
# Examples of these are provided.
#
qaSpecFile="qaSpec"
qaResultsDirectory="results"
testProgramName="$(dirname $0)/runQaTests.pl"
if [ -z "$testProgramFlags" ] ; then
testProgramFlags="-nwV"
fi
#testProgramFlags="-d"
help() {
cat <<-EOF
Valid targets are:
all run tests and compare results for all simulators
ngspice run tests and compare results ngspice
clean remove all previously generated simulation results
NOTE: if test results exist they are not resimulated
NOTE: to force resimulation run "make clean" first
EOF
}
run_test() {
simname="$1"
localPlatform=`${testProgramName} -platform`
localVersion=`${testProgramName} -sv -s ${simname} ${qaSpecFile}`
echo ""
echo "******"
echo "****** ${qaSpecFile} tests for ${simname}"
echo "****** (for version ${localVersion} on platform ${localPlatform})"
echo "******"
for test in `${testProgramName} -lt -s ${simname} ${qaSpecFile}` ; do
echo ""
echo "****** Checking test (${simname}): ${test}"
for variant in `${testProgramName} -lv -s ${simname} ${qaSpecFile}` ; do
${testProgramName} \
${testProgramFlags} \
-s ${simname} \
-r -t ${test} \
-var ${variant} \
--results=${qaResultsDirectory} \
${qaSpecFile}
done
done
for version in `ls -C1 ${qaResultsDirectory}/${simname}` ; do
for platform in `ls -C1 ${qaResultsDirectory}/${simname}/${version}` ; do
if [ ${version} = ${localVersion} -a ${platform} = ${localPlatform} ]
then
break
fi
echo ""
echo "******"
echo "****** Comparing previously run ${qaSpecFile} tests for ${simname}"
echo "****** (for version ${version} on platform ${platform})"
echo "******"
for test in `${testProgramName} -lt -s ${simname} ${qaSpecFile}` ; do
echo ""
echo "****** Checking test (${simname}): ${test}"
for variant in `${testProgramName} -lv -s ${simname} ${qaSpecFile}` ; do
${testProgramName} \
-c ${version} ${platform} \
-s ${simname} \
-t ${test} \
-var ${variant} \
--results=${qaResultsDirectory} \
${qaSpecFile}
done
done
done
done
}
#####
##### ngspice tests
#####
ngspice() {
run_test ngspice
}
clean() {
rm -rf ${qaResultsDirectory}/ngspice ngspiceCkt*
}
all() {
ngspice
}
while test $# -gt 0; do
case "$1" in
--srcdir=* | --executable=*)
testProgramFlags="$testProgramFlags $1"
shift
;;
--results)
qaResultsDirectory="$2"
shift ; shift
;;
-qa)
qaSpecFile="$2"
shift ; shift
;;
*)
break
;;
esac
done
for arg in $@ ; do
case "$arg" in
all | clean | ngspice)
"$arg"
;;
*)
help
;;
esac
done