| 1 |
2 |
sinclairrf |
#!/bin/bash
|
| 2 |
|
|
# Copyright 2013, Sinclair R.F., Inc.
|
| 3 |
|
|
# Test against Xilinx Spartan 6 and ISE.
|
| 4 |
|
|
#
|
| 5 |
|
|
# To replicate the performance runs (using uc_led)
|
| 6 |
|
|
# - Minimum resource utilization, use -3 speed grade, 10 ns clock, XST and MAP
|
| 7 |
|
|
# set for minimum area, and ISE 13.3 or 14.4
|
| 8 |
|
|
# - Maximum speed
|
| 9 |
|
|
# -1L 11.4 9.0 ns "-timing -t 52" ==> 9.112 ns (109.7 MHz)
|
| 10 |
|
|
# -1L 12.4 9.4 ns "-timing -t 52" ==> 9.434 ns (106.0 MHz)
|
| 11 |
|
|
# -1L 13.3 9.5 ns "-timing -t 36" ==> 9.657 ns (103.6 MHz)
|
| 12 |
|
|
# -1L 14.4 9.5 ns "-timing -t 36" ==> 9.657 ns (103.6 MHz)
|
| 13 |
|
|
# -2 11.4 7.5 ns "-timing -t 50" ==> 7.948 ns (125.8 MHz)
|
| 14 |
|
|
# -2 12.4 7.0 ns "-timing -t 6" ==> 7.544 ns (132.6 MHz)
|
| 15 |
|
|
# -2 13.3 5.7 ns "-timing -t 69" ==> 5.682 ns (176.0 MHz)
|
| 16 |
|
|
# -2 14.4 5.7 ns "-timing -t 69" ==> 5.682 ns (176.0 MHz)
|
| 17 |
|
|
# -3 11.4 5.6 ns "-timing -t 50" ==> 5.700 ns (175.4 MHz)
|
| 18 |
|
|
# -3 12.4 5.0 ns "-timing -t 28" ==> 5.064 ns (197.5 MHz)
|
| 19 |
|
|
# -3 13.3 5.0 ns "-timing -t 12" ==> 5.000 ns (200.0 MHz)
|
| 20 |
|
|
# -3 14.4 5.0 ns "-timing -t 12" ==> 5.000 ns (200.0 MHz)
|
| 21 |
|
|
|
| 22 |
|
|
TESTED="11.4 12.4 13.3 14.4 14.5";
|
| 23 |
|
|
|
| 24 |
|
|
TEST_BENCHES="";
|
| 25 |
|
|
TEST_BENCHES+=" uc_combine_instr_ds";
|
| 26 |
|
|
TEST_BENCHES+=" uc_led";
|
| 27 |
|
|
TEST_BENCHES+=" uc_peripherals";
|
| 28 |
|
|
|
| 29 |
|
|
PWD="`pwd`";
|
| 30 |
|
|
PWD="${PWD/*\/}";
|
| 31 |
|
|
|
| 32 |
|
|
while getopts "ht:v:" OPTNAME; do
|
| 33 |
|
|
case ${OPTNAME} in
|
| 34 |
|
|
( h ) echo "Usage: run [-t uc_name] [-v ISE_version]" > /dev/stderr;
|
| 35 |
|
|
echo "Where:" > /dev/stderr;
|
| 36 |
|
|
echo " uc_name is one of the .9x8 files in ../uc" > /dev/stderr;
|
| 37 |
|
|
echo " ISE_version is an ISE version number" > /dev/stderr;
|
| 38 |
|
|
exit 0;;
|
| 39 |
|
|
( t ) TEST_BENCHES="${OPTARG}";;
|
| 40 |
|
|
( v ) TESTED="${OPTARG}";;
|
| 41 |
|
|
esac
|
| 42 |
|
|
done
|
| 43 |
|
|
|
| 44 |
|
|
let nTested=0;
|
| 45 |
|
|
for VERSION in ${TESTED}; do
|
| 46 |
|
|
TOOL_DIR="/opt/Xilinx/${VERSION}";
|
| 47 |
|
|
if [ ! -e "${TOOL_DIR}" ]; then
|
| 48 |
|
|
echo "Xilinx ISE version ${VERSION} not found at ${TOOL_DIR}" > /dev/stderr;
|
| 49 |
|
|
continue;
|
| 50 |
|
|
fi
|
| 51 |
|
|
if [ -d "${TOOL_DIR}/ISE_DS" ]; then
|
| 52 |
|
|
TOOL_DIR="${TOOL_DIR}/ISE_DS";
|
| 53 |
|
|
fi
|
| 54 |
|
|
for TB in ${TEST_BENCHES}; do
|
| 55 |
|
|
let nTested+=1;
|
| 56 |
|
|
LOGFILE="log-${VERSION}-${TB}";
|
| 57 |
|
|
if [ ! -z "`./make "${TOOL_DIR}" ${TB} 2>&1 | tee "${LOGFILE}" | sed -n '/ERROR/p'`" ]; then
|
| 58 |
|
|
grep "ERROR" "${LOGFILE}" > /dev/stderr;
|
| 59 |
|
|
echo "BUILD TEST BENCH FAILED" > /dev/stderr;
|
| 60 |
|
|
echo "build directory: ${PWD}" > /dev/stderr;
|
| 61 |
|
|
echo "TOOL: ${TOOL_DIR}" > /dev/stderr;
|
| 62 |
|
|
echo "TEST: ${TB}" > /dev/stderr;
|
| 63 |
|
|
echo "LOG FILE: ${LOGFILE}" > /dev/stderr;
|
| 64 |
|
|
exit 1;
|
| 65 |
|
|
fi
|
| 66 |
|
|
echo "Build results for ${PWD} Xilinx ISE/${VERSION} ${TB}";
|
| 67 |
|
|
sed -n \
|
| 68 |
|
|
-e '/Minimum period/p' \
|
| 69 |
|
|
-e '/^ Number of occupied Slices:/p' \
|
| 70 |
|
|
-e '/^ Number of Slice LUTs:/p' \
|
| 71 |
|
|
-e '/^ Number of RAMB[0-9]*BWERs: *[1-9]/p' \
|
| 72 |
|
|
-e '/TS_i_clk = PERIOD/,+1p' \
|
| 73 |
|
|
"${LOGFILE}" \
|
| 74 |
|
|
;
|
| 75 |
|
|
done
|
| 76 |
|
|
done
|
| 77 |
|
|
|
| 78 |
|
|
if [ ${nTested} == "0" ]; then
|
| 79 |
|
|
echo "No tests performed in ${PWD/*\/}" > /dev/stderr;
|
| 80 |
|
|
else
|
| 81 |
|
|
echo "${nTested} tool versions successfully tested in ${PWD/*\/}" > /dev/stderr;
|
| 82 |
|
|
fi
|