aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMichalis Pardalos <m.pardalos@gmail.com>2021-03-01 20:09:24 +0000
committerMichalis Pardalos <m.pardalos@gmail.com>2021-03-01 20:09:24 +0000
commitf48c9113280b1dbe73121e5cd998e632ff19637c (patch)
treefe93170bf6e647b655819d0d4da35ce32483024c
parent890f8d7619364b725417bf1694e6192312052f74 (diff)
downloadvericert-f48c9113280b1dbe73121e5cd998e632ff19637c.tar.gz
vericert-f48c9113280b1dbe73121e5cd998e632ff19637c.zip
Add scripts for remote synthesis with vivado
-rwxr-xr-xbenchmarks/polybench-syn/setup-syn-vivado.sh25
-rwxr-xr-xbenchmarks/polybench-syn/syn-vivado.sh54
-rw-r--r--benchmarks/polybench-syn/syn-vivado.tcl6
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