aboutsummaryrefslogtreecommitdiffstats
path: root/scripts
diff options
context:
space:
mode:
authorClifford Wolf <clifford@clifford.at>2017-07-20 09:56:30 +0200
committerClifford Wolf <clifford@clifford.at>2017-07-20 09:56:30 +0200
commit9dbc96e3302db5b45cbcf4b14dc54d53b5b46aa6 (patch)
tree652e64fd5124494ac500d9b097288256a9219488 /scripts
parentf99cd747dae83c29d1df6e6eb2c5019854f084f7 (diff)
downloadpicorv32-9dbc96e3302db5b45cbcf4b14dc54d53b5b46aa6.tar.gz
picorv32-9dbc96e3302db5b45cbcf4b14dc54d53b5b46aa6.zip
Update vivado evaluations
Diffstat (limited to 'scripts')
-rw-r--r--scripts/vivado/Makefile16
-rw-r--r--scripts/vivado/table.sh2
-rw-r--r--scripts/vivado/tabtest.sh33
3 files changed, 34 insertions, 17 deletions
diff --git a/scripts/vivado/Makefile b/scripts/vivado/Makefile
index 4e109d2..ecade93 100644
--- a/scripts/vivado/Makefile
+++ b/scripts/vivado/Makefile
@@ -1,5 +1,5 @@
-VIVADO_BASE = /opt/Xilinx/Vivado/2016.1
+VIVADO_BASE = /opt/Xilinx/Vivado/2017.2
VIVADO = $(VIVADO_BASE)/bin/vivado
XVLOG = $(VIVADO_BASE)/bin/xvlog
XELAB = $(VIVADO_BASE)/bin/xelab
@@ -8,6 +8,9 @@ TOOLCHAIN_PREFIX = riscv64-unknown-elf-
export VIVADO
+# work-around for http://svn.clifford.at/handicraft/2016/vivadosig11
+export RDI_VERBOSE = False
+
help:
@echo ""
@echo "Simple synthesis tests:"
@@ -49,11 +52,12 @@ tab_%/results.txt:
area: synth_area_small synth_area_regular synth_area_large
-grep -B4 -A10 'Slice LUTs' synth_area_small.log synth_area_regular.log synth_area_large.log
-table.txt: tab_small_xc7a_1/results.txt tab_small_xc7a_2/results.txt tab_small_xc7a_3/results.txt
-table.txt: tab_small_xc7k_1/results.txt tab_small_xc7k_2/results.txt tab_small_xc7k_3/results.txt
-table.txt: tab_small_xc7v_1/results.txt tab_small_xc7v_2/results.txt tab_small_xc7v_3/results.txt
-table.txt: tab_small_xcku_1/results.txt tab_small_xcku_2/results.txt tab_small_xcku_3/results.txt
-table.txt: tab_small_xcvu_1/results.txt tab_small_xcvu_2/results.txt tab_small_xcvu_3/results.txt
+table.txt: tab_small_xc7k_2/results.txt tab_small_xc7k_3/results.txt
+table.txt: tab_small_xc7v_2/results.txt tab_small_xc7v_3/results.txt
+table.txt: tab_small_xcku_2/results.txt tab_small_xcku_3/results.txt
+table.txt: tab_small_xcvu_2/results.txt tab_small_xcvu_3/results.txt
+table.txt: tab_small_xckup_2/results.txt tab_small_xckup_3/results.txt
+table.txt: tab_small_xcvup_2/results.txt tab_small_xcvup_3/results.txt
table.txt:
bash table.sh > table.txt
diff --git a/scripts/vivado/table.sh b/scripts/vivado/table.sh
index f81f586..81e2cf4 100644
--- a/scripts/vivado/table.sh
+++ b/scripts/vivado/table.sh
@@ -13,6 +13,8 @@ do
xc7v) d="Xilinx Virtex-7T" ;;
xcku) d="Xilinx Kintex UltraScale" ;;
xcvu) d="Xilinx Virtex UltraScale" ;;
+ xckup) d="Xilinx Kintex UltraScale+" ;;
+ xcvup) d="Xilinx Virtex UltraScale+" ;;
esac
speedtxt=$( printf '%s.%s ns (%d MHz)' ${speed%?} ${speed#?} $((10000 / speed)) )
printf '| %-25s | %-10s | %20s |\n' "$d" "-$grade" "$speedtxt"
diff --git a/scripts/vivado/tabtest.sh b/scripts/vivado/tabtest.sh
index fa43fc3..bc3d840 100644
--- a/scripts/vivado/tabtest.sh
+++ b/scripts/vivado/tabtest.sh
@@ -8,7 +8,7 @@ mkdir -p tab_${ip}_${dev}_${grade}
cd tab_${ip}_${dev}_${grade}
best_speed=99
-speed=30
+speed=20
step=16
synth_case() {
@@ -18,17 +18,12 @@ synth_case() {
fi
case "${dev}" in
- xc7a) xl_device="xc7a15t-fgg484-${grade}" ;;
xc7k) xl_device="xc7k70t-fbg676-${grade}" ;;
xc7v) xl_device="xc7v585t-ffg1761-${grade}" ;;
- xcku) xl_device="xcku035-fbva676-${grade}" ;;
- xcvu) xl_device="xcvu065-ffvc1517-${grade}" ;;
- esac
-
- case "${dev}-${grade}" in
- xcku-1) xl_device="${xl_device}-c" ;;
- xcvu-1) xl_device="${xl_device}-i" ;;
- xcku-?|xcvu-?) xl_device="${xl_device}-e" ;;
+ xcku) xl_device="xcku035-fbva676-${grade}-e" ;;
+ xcvu) xl_device="xcvu065-ffvc1517-${grade}-e" ;;
+ xckup) xl_device="xcku3p-ffva676-${grade}-e" ;;
+ xcvup) xl_device="xcvu3p-ffvc1517-${grade}-e" ;;
esac
cat > test_${1}.tcl <<- EOT
@@ -60,19 +55,24 @@ synth_case() {
mv test_${1}.log test_${1}.txt
}
+got_violated=false
+got_met=false
+
countdown=2
while [ $countdown -gt 0 ]; do
synth_case $speed
if grep -q '^Slack.*(VIOLATED)' test_${speed}.txt; then
echo " tab_${ip}_${dev}_${grade}/test_${speed} VIOLATED"
- [ $speed -eq 38 ] || step=$((step / 2))
+ step=$((step / 2))
speed=$((speed + step))
+ got_violated=true
elif grep -q '^Slack.*(MET)' test_${speed}.txt; then
echo " tab_${ip}_${dev}_${grade}/test_${speed} MET"
[ $speed -lt $best_speed ] && best_speed=$speed
step=$((step / 2))
speed=$((speed - step))
+ got_met=true
else
echo "ERROR: No slack line found in $PWD/test_${speed}.txt!"
exit 1
@@ -85,6 +85,17 @@ while [ $countdown -gt 0 ]; do
fi
done
+if ! $got_violated; then
+ echo "ERROR: No timing violated in $PWD!"
+ exit 1
+fi
+
+if ! $got_met; then
+ echo "ERROR: No timing met in $PWD!"
+ exit 1
+fi
+
+
echo "-----------------------"
echo "Best speed for tab_${ip}_${dev}_${grade}: $best_speed"
echo "-----------------------"