diff options
Diffstat (limited to 'benchmarks/polybench-syn')
-rw-r--r-- | benchmarks/polybench-syn/benchmark-list-master | 1 | ||||
-rwxr-xr-x | benchmarks/polybench-syn/setup-syn-vivado.sh | 25 | ||||
-rwxr-xr-x | benchmarks/polybench-syn/syn-quartus.sh (renamed from benchmarks/polybench-syn/syn-remote.sh) | 0 | ||||
-rw-r--r-- | benchmarks/polybench-syn/syn-quartus.tcl (renamed from benchmarks/polybench-syn/quartus_synth.tcl) | 0 | ||||
-rwxr-xr-x | benchmarks/polybench-syn/syn-vivado.sh | 56 | ||||
-rw-r--r-- | benchmarks/polybench-syn/syn-vivado.tcl | 6 |
6 files changed, 87 insertions, 1 deletions
diff --git a/benchmarks/polybench-syn/benchmark-list-master b/benchmarks/polybench-syn/benchmark-list-master index ef0d0d0..142c7c6 100644 --- a/benchmarks/polybench-syn/benchmark-list-master +++ b/benchmarks/polybench-syn/benchmark-list-master @@ -1,4 +1,3 @@ -stencils/adi stencils/heat-3d stencils/fdtd-2d stencils/jacobi-1d 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-remote.sh b/benchmarks/polybench-syn/syn-quartus.sh index 879db2e..879db2e 100755 --- a/benchmarks/polybench-syn/syn-remote.sh +++ b/benchmarks/polybench-syn/syn-quartus.sh diff --git a/benchmarks/polybench-syn/quartus_synth.tcl b/benchmarks/polybench-syn/syn-quartus.tcl index 6edbf0c..6edbf0c 100644 --- a/benchmarks/polybench-syn/quartus_synth.tcl +++ b/benchmarks/polybench-syn/syn-quartus.tcl diff --git a/benchmarks/polybench-syn/syn-vivado.sh b/benchmarks/polybench-syn/syn-vivado.sh new file mode 100755 index 0000000..2b310cb --- /dev/null +++ b/benchmarks/polybench-syn/syn-vivado.sh @@ -0,0 +1,56 @@ +#! /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:]) + + cd .. + + 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 |