diff options
-rwxr-xr-x | benchmarks/polybench-syn/setup-syn-vivado.sh | 25 | ||||
-rwxr-xr-x | benchmarks/polybench-syn/syn-vivado.sh | 54 | ||||
-rw-r--r-- | benchmarks/polybench-syn/syn-vivado.tcl | 6 |
3 files changed, 85 insertions, 0 deletions
diff --git a/benchmarks/polybench-syn/setup-syn-vivado.sh b/benchmarks/polybench-syn/setup-syn-vivado.sh new file mode 100755 index 0000000..3441c0f --- /dev/null +++ b/benchmarks/polybench-syn/setup-syn-vivado.sh @@ -0,0 +1,25 @@ +#!/bin/bash + +#set up +sshhost="$1" +basedir=${2:-"poly-syn-vivado"} + +echo "Setting up in $sshhost:$basedir" + +echo "Creating directory" +ssh -q "$sshhost" "cd ~; rm -r $basedir; mkdir $basedir" + +echo "Copying scripts over" +scp -q syn-vivado.tcl "$sshhost:$basedir" +scp -q syn-vivado.sh "$sshhost:$basedir" +rm syn-list + +while read -r benchmark; do +echo "Copying $benchmark over" +name=$(echo "$benchmark" | awk -v FS="/" '{print $NF}') +scp -q "$benchmark.v" "$sshhost:~/$basedir" +echo "$name" >> syn-list +done < benchmark-list-master + +echo "Copying syn-list" +scp -q syn-list "$sshhost:$basedir" diff --git a/benchmarks/polybench-syn/syn-vivado.sh b/benchmarks/polybench-syn/syn-vivado.sh new file mode 100755 index 0000000..f4d5fa7 --- /dev/null +++ b/benchmarks/polybench-syn/syn-vivado.sh @@ -0,0 +1,54 @@ +#! /bin/bash + +#setup +while read -r benchmark; do + echo "Setting up $benchmark" + rm -r "$benchmark-vivado" + mkdir "$benchmark-vivado" + cp "$benchmark.v" "$benchmark-vivado/top.v" +done < syn-list + +#synthesis +count=0 +while read -r benchmark; do + echo "Synthesising $benchmark" + + cd "$benchmark-vivado" || { + echo "$benchmark dir does not exist" + continue + } + vivado -mode batch -source ../syn-vivado.tcl + cd .. + (( count=count+1 )) + + if [ "$count" -eq 4 ]; then + echo "I am here" + wait + count=0 + fi +done < syn-list + +if [ $count -lt 4 ]; then +wait +fi + +#extract +while read -r benchmark ; do + cd "$benchmark-vivado" || { + echo "$benchmark-vivado does not exist" + continue + } + + pwd + logfile="vivado.log" + timingfile="worst_timing.txt" + + luts=$(grep "|LUT" "$logfile" | cut -d'|' -f 4 | paste -sd + | bc) + brams=$(sed -n -e "s/BRAMs: \([0-9]\+\).*$/\1/p" "$logfile") + dsps=$(sed -n -e "s/DSPs: \([0-9]\+\).*$/\1/p" "$logfile") + cells=$(grep -A4 "Report Instance Areas:" "$logfile" | tail -1 | cut -d '|' -f5 | tr -d [:space:]) + slack=$(sed -n -e 's/\s\+slack\s\+\(-\?[0-9.]\+\)/\1ns/p' "$timingfile" | tr -d [:space:]) + + echo "$benchmark,$slack,$luts,$brams,$dsps" >> results +done < syn-list + diff --git a/benchmarks/polybench-syn/syn-vivado.tcl b/benchmarks/polybench-syn/syn-vivado.tcl new file mode 100644 index 0000000..733a94e --- /dev/null +++ b/benchmarks/polybench-syn/syn-vivado.tcl @@ -0,0 +1,6 @@ +create_project -in_memory -part xc7k70t +read_verilog top.v +synth_design -part xc7k70t -top main +create_clock -name clk -period 5.000 [get_ports clk] +report_timing -nworst 1 -path_type full -input_pins -file worst_timing.txt +write_verilog -force out.v |