introduce vivado wrapper

This fixes the problem that when sourcing the vivado settings file the
library search path is modified resulting in non-vivado binaries not working
due to being dynamically linked against the vivado libraries instead of the
system ones.

Signed-off-by: Felix Held <felix-github@felixheld.de>
This commit is contained in:
Felix Held 2018-12-28 18:58:28 +01:00
parent a7e7a5d1e7
commit 0d6e327229
59 changed files with 69 additions and 64 deletions

View File

@ -12,10 +12,10 @@ More documentation can be found published on [prjxray ReadTheDocs site](http://p
# Quickstart Guide
Install Vivado 2017.2 (2017.3 has a known compatibility issue, see
https://github.com/SymbiFlow/prjxray/issues/14). Then source the settings
script, ie
https://github.com/SymbiFlow/prjxray/issues/14). Then set the environment variable
XRAY_VIVADO_SETTINGS to point to the settings64.sh file of the installed vivado version, ie
source /opt/Xilinx/Vivado/2017.2/settings64.sh
export XRAY_VIVADO_SETTINGS=/opt/Xilinx/Vivado/2017.2/settings64.sh
Pull submodules:

View File

@ -5,7 +5,7 @@ source ${XRAY_GENHEADER}
echo '`define SEED 32'"'h$(echo $1 | md5sum | cut -c1-8)" > setseed.vh
vivado -mode batch -source ../generate.tcl
${XRAY_VIVADO} -mode batch -source ../generate.tcl
${XRAY_BITREAD} -F $XRAY_ROI_FRAMES -o design.bits -z -y design.bit
python3 ../generate.py

View File

@ -73,7 +73,7 @@ close \$fp
EOT
rm -rf design design.log
vivado -nojournal -log design.log -mode batch -source design.tcl
${XRAY_VIVADO} -nojournal -log design.log -mode batch -source design.tcl
#${XRAY_BITREAD} -o design_roi.bits -z -y design_roi_partial.bit
${XRAY_BITREAD} -F $XRAY_ROI_FRAMES -o design.bits -z -y design.bit

View File

@ -17,7 +17,7 @@ $(SPECIMENS_OK): todo.txt
touch $@
todo.txt:
vivado -mode batch -source piplist.tcl
${XRAY_VIVADO} -mode batch -source piplist.tcl
python3 maketodo.py | sort -R | head -n10 > todo.txt
clean:

View File

@ -2,7 +2,7 @@
source ${XRAY_GENHEADER}
vivado -mode batch -source ../generate.tcl
${XRAY_VIVADO} -mode batch -source ../generate.tcl
${XRAY_BITREAD} -F $XRAY_ROI_FRAMES -o design.bits -z -y design.bit
python3 ../generate.py

View File

@ -21,7 +21,7 @@ $(SPECIMENS_OK): todo.txt
touch $@
todo.txt:
vivado -mode batch -source piplist.tcl
${XRAY_VIVADO} -mode batch -source piplist.tcl
python3 maketodo.py > todo.txt
clean:

View File

@ -2,7 +2,7 @@
source ${XRAY_GENHEADER}
vivado -mode batch -source ../generate.tcl
${XRAY_VIVADO} -mode batch -source ../generate.tcl
for x in design_[0-9][0-9][0-9].bit; do
${XRAY_BITREAD} -F $XRAY_ROI_FRAMES -o ${x}s -z -y $x

View File

@ -2,4 +2,4 @@ part.yaml: design.perframecrc.bit
${XRAY_TOOLS_DIR}/gen_part_base_yaml $< -f > $@
design.bit design.perframecrc.bit: ../generate.tcl
vivado -mode batch -source ../generate.tcl
${XRAY_VIVADO} -mode batch -source ../generate.tcl

View File

@ -10,7 +10,7 @@ if [ -f $FUZDIR/top.py ] ; then
XRAY_DATABASE_ROOT=$FUZDIR/../build/basicdb python3 $FUZDIR/top.py >top.v
fi
vivado -mode batch -source $FUZDIR/generate.tcl
${XRAY_VIVADO} -mode batch -source $FUZDIR/generate.tcl
test -z "$(fgrep CRITICAL vivado.log)"
for x in design*.bit; do

View File

@ -5,7 +5,7 @@ PRJ=$2
export FUZDIR=$PWD
source ${XRAY_GENHEADER}
vivado -mode batch -source $FUZDIR/generate_$PRJ.tcl
${XRAY_VIVADO} -mode batch -source $FUZDIR/generate_$PRJ.tcl
test -z "$(fgrep CRITICAL vivado.log)"
if [ $PRJ != "tiles" ] ; then

View File

@ -5,5 +5,5 @@ set -ex
source ${XRAY_GENHEADER}
TIMFUZ_DIR=$XRAY_DIR/fuzzers/007-timing
vivado -mode batch -source ../generate.tcl
${XRAY_VIVADO} -mode batch -source ../generate.tcl

View File

@ -3,6 +3,6 @@
set -ex
source ../generate.sh
vivado -mode batch -source ../generate.tcl
${XRAY_VIVADO} -mode batch -source ../generate.tcl
timing_txt2csv

View File

@ -3,6 +3,6 @@
set -ex
source ../generate.sh
vivado -mode batch -source ../generate.tcl
${XRAY_VIVADO} -mode batch -source ../generate.tcl
timing_txt2csv

View File

@ -6,6 +6,6 @@ source ${XRAY_GENHEADER}
TIMFUZ_DIR=$XRAY_DIR/fuzzers/007-timing
python ../generate.py --sdx 4 --sdy 4 >top.v
vivado -mode batch -source ../generate.tcl
${XRAY_VIVADO} -mode batch -source ../generate.tcl
python3 $TIMFUZ_DIR/timing_txt2csv.py --speed-json $TIMFUZ_DIR/speed/build/speed.json --out timing4.csv timing4.txt

View File

@ -4,6 +4,6 @@ set -ex
source ../generate.sh
python ../generate.py --sdx 4 --sdy 4 >top.v
vivado -mode batch -source ../generate.tcl
${XRAY_VIVADO} -mode batch -source ../generate.tcl
timing_txt2csv

View File

@ -4,6 +4,6 @@ set -ex
source ../generate.sh
python ../generate.py --sdx 4 --sdy 4 >top.v
vivado -mode batch -source ../generate.tcl
${XRAY_VIVADO} -mode batch -source ../generate.tcl
timing_txt2csv

View File

@ -2,7 +2,7 @@ all: build/speed.json
build/node.txt: speed_json.py generate.tcl
mkdir -p build
cd build && vivado -mode batch -source ../generate.tcl
cd build && ${XRAY_VIVADO} -mode batch -source ../generate.tcl
build/speed.json: build/node.txt
cd build && python ../speed_json.py speed_model.txt node.txt speed.json

View File

@ -2,7 +2,7 @@ all: build/timgrid.json
build/timgrid.txt: generate.tcl
mkdir -p build
cd build && vivado -mode batch -source ../generate.tcl
cd build && ${XRAY_VIVADO} -mode batch -source ../generate.tcl
build/timgrid.json: build/timgrid.txt
cd build && python3 ../tile_txt2json.py --speed-json ../../speed/build/speed.json timgrid.txt timgrid-s.json

View File

@ -2,7 +2,7 @@
source ${XRAY_GENHEADER}
vivado -mode batch -source ../generate.tcl
${XRAY_VIVADO} -mode batch -source ../generate.tcl
for x in design*.bit; do
${XRAY_BITREAD} -F $XRAY_ROI_FRAMES -o ${x}s -z -y $x

View File

@ -5,7 +5,7 @@ source ${XRAY_GENHEADER}
echo '`define SEED 32'"'h$(echo $1 | md5sum | cut -c1-8)" > setseed.vh
vivado -mode batch -source $FUZDIR/generate.tcl
${XRAY_VIVADO} -mode batch -source $FUZDIR/generate.tcl
for i in 0 1 2; do
${XRAY_BITREAD} -F $XRAY_ROI_FRAMES -o design_$i.bits -z -y design_$i.bit

View File

@ -1,6 +1,6 @@
#!/bin/bash
set -ex
if [ $(vivado -h |grep Vivado |cut -d\ -f 2) != "v2017.2" ] ; then echo "FIXME: requires Vivado 2017.2. See https://github.com/SymbiFlow/prjxray/issues/14"; exit 1; fi
if [ $(${XRAY_VIVADO} -h |grep Vivado |cut -d\ -f 2) != "v2017.2" ] ; then echo "FIXME: requires Vivado 2017.2. See https://github.com/SymbiFlow/prjxray/issues/14"; exit 1; fi
source ${XRAY_DIR}/utils/top_generate.sh

View File

@ -1,6 +1,6 @@
#!/bin/bash
set -ex
if [ $(vivado -h |grep Vivado |cut -d\ -f 2) != "v2017.2" ] ; then echo "FIXME: requires Vivado 2017.2. See https://github.com/SymbiFlow/prjxray/issues/14"; exit 1; fi
if [ $(${XRAY_VIVADO} -h |grep Vivado |cut -d\ -f 2) != "v2017.2" ] ; then echo "FIXME: requires Vivado 2017.2. See https://github.com/SymbiFlow/prjxray/issues/14"; exit 1; fi
source ${XRAY_DIR}/utils/top_generate.sh

View File

@ -1,6 +1,6 @@
#!/bin/bash
set -ex
if [ $(vivado -h |grep Vivado |cut -d\ -f 2) != "v2017.2" ] ; then echo "FIXME: requires Vivado 2017.2. See https://github.com/SymbiFlow/prjxray/issues/14"; exit 1; fi
if [ $(${XRAY_VIVADO} -h |grep Vivado |cut -d\ -f 2) != "v2017.2" ] ; then echo "FIXME: requires Vivado 2017.2. See https://github.com/SymbiFlow/prjxray/issues/14"; exit 1; fi
source ${XRAY_DIR}/utils/top_generate.sh

View File

@ -12,7 +12,7 @@ cd $BUILD_DIR
export TOP_V=$SRC_DIR/top.v
vivado -mode batch -source $SRC_DIR/runme.tcl
${XRAY_VIVADO} -mode batch -source $SRC_DIR/runme.tcl
${XRAY_BITREAD} -F $XRAY_ROI_FRAMES -o design.bits -z -y design.bit
test -z "$(fgrep CRITICAL vivado.log)"

View File

@ -6,7 +6,7 @@ FUZDIR=$PWD
source ${XRAY_GENHEADER}
python3 $FUZDIR/top.py >top.v
vivado -mode batch -source $FUZDIR/generate.tcl
${XRAY_VIVADO} -mode batch -source $FUZDIR/generate.tcl
test -z "$(fgrep CRITICAL vivado.log)"
for x in design*.bit; do

View File

@ -12,7 +12,7 @@ cd $BUILD_DIR
export TOP_V=$SRC_DIR/top.v
vivado -mode batch -source $SRC_DIR/runme.tcl
${XRAY_VIVADO} -mode batch -source $SRC_DIR/runme.tcl
${XRAY_BITREAD} -F $XRAY_ROI_FRAMES -o design.bits -z -y design.bit
test -z "$(fgrep CRITICAL vivado.log)"

View File

@ -12,7 +12,7 @@ cd $BUILD_DIR
export TOP_V=$SRC_DIR/top.v
vivado -mode batch -source $SRC_DIR/runme.tcl
${XRAY_VIVADO} -mode batch -source $SRC_DIR/runme.tcl
${XRAY_BITREAD} -F $XRAY_ROI_FRAMES -o design.bits -z -y design.bit
test -z "$(fgrep CRITICAL vivado.log)"

View File

@ -12,7 +12,7 @@ cd $BUILD_DIR
export TOP_V=$SRC_DIR/tcl.v
vivado -mode batch -source $SRC_DIR/$PROJECT.tcl
${XRAY_VIVADO} -mode batch -source $SRC_DIR/$PROJECT.tcl
for x in design*.bit; do
${XRAY_BITREAD} -F $XRAY_ROI_FRAMES -o ${x}s -z -y $x
done

View File

@ -65,7 +65,7 @@ $(SPECIMENS_OK): build/todo.txt
build/pips_int_l.txt: $(XRAY_DIR)/fuzzers/piplist.tcl
mkdir -p build/$(ITER)
cd build && vivado -mode batch -source $(XRAY_DIR)/fuzzers/piplist.tcl
cd build && ${XRAY_VIVADO} -mode batch -source $(XRAY_DIR)/fuzzers/piplist.tcl
build/todo.txt: build/pips_int_l.txt $(XRAY_DIR)/fuzzers/int_maketodo.py
# Doesn't pushdb until very end. Compare against db so far

View File

@ -7,7 +7,7 @@ source ${XRAY_GENHEADER}
echo '`define SEED 32'"'h$(echo $1 | md5sum | cut -c1-8)" > setseed.vh
vivado -mode batch -source $FUZDIR/generate.tcl
${XRAY_VIVADO} -mode batch -source $FUZDIR/generate.tcl
${XRAY_BITREAD} -F $XRAY_ROI_FRAMES -o design.bits -z -y design.bit
python3 $FUZDIR/generate.py

View File

@ -2,7 +2,7 @@
source ${XRAY_GENHEADER}
vivado -mode batch -source ../generate.tcl
${XRAY_VIVADO} -mode batch -source ../generate.tcl
${XRAY_BITREAD} -F $XRAY_ROI_FRAMES -o design.bits -z -y design.bit
python3 ../generate.py

View File

@ -2,7 +2,7 @@
source ${XRAY_GENHEADER}
vivado -mode batch -source ../generate.tcl
${XRAY_VIVADO} -mode batch -source ../generate.tcl
${XRAY_BITREAD} -F $XRAY_ROI_FRAMES -o design.bits -z -y design.bit
python3 ../generate.py

View File

@ -2,7 +2,7 @@
source ${XRAY_GENHEADER}
vivado -mode batch -source ../generate.tcl
${XRAY_VIVADO} -mode batch -source ../generate.tcl
${XRAY_BITREAD} -F $XRAY_ROI_FRAMES -o design.bits -z -y design.bit
python3 ../generate.py

View File

@ -4,7 +4,7 @@ echo "test: $PWD"
FUZDIR=$PWD
source ${XRAY_GENHEADER}
vivado -mode batch -source ../generate.tcl
${XRAY_VIVADO} -mode batch -source ../generate.tcl
${XRAY_BITREAD} -F $XRAY_ROI_FRAMES -o design.bits -z -y design.bit
python3 ../generate.py

View File

@ -3,7 +3,7 @@
FUZDIR=$PWD
source ${XRAY_GENHEADER}
vivado -mode batch -source $FUZDIR/generate.tcl
${XRAY_VIVADO} -mode batch -source $FUZDIR/generate.tcl
${XRAY_BITREAD} -F $XRAY_ROI_FRAMES -o design.bits -z -y design.bit
python3 $FUZDIR/generate.py

View File

@ -2,7 +2,7 @@
source ${XRAY_GENHEADER}
while ! vivado -mode batch -source ../generate.tcl; do
while ! ${XRAY_VIVADO} -mode batch -source ../generate.tcl; do
rm -rf design*
done

View File

@ -2,7 +2,7 @@
source ${XRAY_GENHEADER}
vivado -mode batch -source $FUZDIR/generate.tcl
${XRAY_VIVADO} -mode batch -source $FUZDIR/generate.tcl
for x in design_*.bit; do
${XRAY_BITREAD} -F $XRAY_ROI_FRAMES -o ${x}s -z -y ${x}

View File

@ -2,5 +2,5 @@
source ${XRAY_GENHEADER}
vivado -mode batch -source ../generate.tcl
${XRAY_VIVADO} -mode batch -source ../generate.tcl

View File

@ -2,4 +2,4 @@
source ${XRAY_GENHEADER}
vivado -mode batch -source ../generate.tcl
${XRAY_VIVADO} -mode batch -source ../generate.tcl

View File

@ -2,4 +2,4 @@
source ${XRAY_GENHEADER}
vivado -mode batch -source ../generate.tcl
${XRAY_VIVADO} -mode batch -source ../generate.tcl

View File

@ -2,6 +2,6 @@
source ${XRAY_GENHEADER}
vivado -mode batch -source ../generate.tcl
${XRAY_VIVADO} -mode batch -source ../generate.tcl
cd .. && ./generate_after_dump.sh

View File

@ -4,7 +4,7 @@ set -ex
source ${XRAY_GENHEADER}
vivado -mode batch -source $FUZDIR/generate.tcl
${XRAY_VIVADO} -mode batch -source $FUZDIR/generate.tcl
for i in {10..29}; do
${XRAY_BITREAD} -F $XRAY_ROI_FRAMES -o design_${i}.bits -z -y design_${i}.bit

View File

@ -62,7 +62,7 @@ $(SPECIMENS_OK): build/todo.txt
build/$(PIP_TYPE)_l.txt: $(XRAY_DIR)/fuzzers/piplist.tcl
mkdir -p build/$(ITER)
cd build && vivado -mode batch -source $(PIPLIST_TCL)
cd build && ${XRAY_VIVADO} -mode batch -source $(PIPLIST_TCL)
# Used 1) to see if we are done 2) pips to try in generate.tcl
build/todo.txt: build/$(PIP_TYPE)_l.txt $(XRAY_DIR)/fuzzers/int_maketodo.py build/database/seeded

View File

@ -50,7 +50,7 @@ source tiledata.tcl
EOT
rm -f design.log
vivado -nojournal -log design.log -mode batch -source design.tcl
${XRAY_VIVADO} -nojournal -log design.log -mode batch -source design.tcl
{
sed -e '/^--tiledata--/ { s/[^ ]* //; p; }; d;' design.log

View File

@ -1,6 +1,6 @@
#!/bin/bash
set -ex
vivado -mode batch -source runme.tcl
${XRAY_VIVADO} -mode batch -source runme.tcl
${XRAY_BITREAD} -F $XRAY_ROI_FRAMES -o design.bits -z -y design.bit
${XRAY_SEGPRINT} design.bits SLICE_X16Y100 SLICE_X16Y101 SLICE_X16Y102 SLICE_X16Y103

View File

@ -1,7 +1,7 @@
#!/bin/bash
set -ex
vivado -mode batch -source runme.tcl
${XRAY_VIVADO} -mode batch -source runme.tcl
${XRAY_BITREAD} -F $XRAY_ROI_FRAMES -o design.bits -z -y design.bit
${XRAY_SEGPRINT} -bzd design.bits > design.segs

View File

@ -1,6 +1,6 @@
#!/bin/bash
set -ex
vivado -mode batch -source runme.tcl
${XRAY_VIVADO} -mode batch -source runme.tcl
${XRAY_BITREAD} -F $XRAY_ROI_FRAMES -z -y -C -o design.bits design.bit
grep -h _050_ design.bits | cut -f4 -d_ | sort | uniq -c

View File

@ -1,7 +1,7 @@
#!/bin/bash
set -ex
vivado -mode batch -source runme.tcl
${XRAY_VIVADO} -mode batch -source runme.tcl
for ff in fdre fdse fdce fdce_inv fdpe ldce ldpe; do
${XRAY_BITREAD} -F $XRAY_ROI_FRAMES -o design_$ff.bits -z -y design_$ff.bit
${XRAY_SEGPRINT} -z design_$ff.bits >design_$ff.seg

View File

@ -1,7 +1,7 @@
#!/bin/bash
set -ex
vivado -mode batch -source runme.tcl
${XRAY_VIVADO} -mode batch -source runme.tcl
${XRAY_BITREAD} -F $XRAY_ROI_FRAMES -o design_a.bits -z -y design_a.bit
${XRAY_BITREAD} -F $XRAY_ROI_FRAMES -o design_b.bits -z -y design_b.bit
${XRAY_SEGPRINT} design_a.bits INT_L_X12Y132 INT_L_X14Y132 INT_L_X16Y132

View File

@ -18,25 +18,25 @@
# feature. inv.v is used as a sample reconfiguration design as one is
# required to generate a partial reconfiguration design.
harness_synth.dcp: harness_synthesize.tcl harness.v
vivado -mode batch -source harness_synthesize.tcl
${XRAY_VIVADO} -mode batch -source harness_synthesize.tcl
harness_impl.dcp: harness_synth.dcp inv_synth.dcp harness_implement.tcl
vivado -mode batch -source harness_implement.tcl
${XRAY_VIVADO} -mode batch -source harness_implement.tcl
# Synthesize an ROI design
%_synth.dcp: %.v roi_synthesize.tcl
vivado -mode batch -source roi_synthesize.tcl -tclargs $< $@
${XRAY_VIVADO} -mode batch -source roi_synthesize.tcl -tclargs $< $@
# Implement an ROI design
%_impl.dcp: %_synth.dcp harness_impl.dcp roi_implement.tcl
vivado -mode batch -source roi_implement.tcl -tclargs $< $@
${XRAY_VIVADO} -mode batch -source roi_implement.tcl -tclargs $< $@
# Generate bitstreams from an implemented design. Two bitstreams are
# generated: one containing a complete design including the harness (.bit) and
# one that only contains the frames that implement the ROI design
# (_roi_partial.bit).
%.bit: %_impl.dcp write_bitstream.tcl
vivado -mode batch -source write_bitstream.tcl -tclargs $< $@
${XRAY_VIVADO} -mode batch -source write_bitstream.tcl -tclargs $< $@
%_roi_partial.bit: %.bit ;
# Conversions between various formats.

View File

@ -1,7 +1,7 @@
#!/bin/bash
set -ex
vivado -mode batch -source runme.tcl
${XRAY_VIVADO} -mode batch -source runme.tcl
${XRAY_BITREAD} -F $XRAY_ROI_FRAMES -o design.bits -z -y design.bit
test -z "$(fgrep CRITICAL vivado.log)"
${XRAY_SEGPRINT} -z -D design.bits >design.txt

View File

@ -2,7 +2,7 @@
set -ex
yosys run_yosys.ys
vivado -mode batch -source runme.tcl
${XRAY_VIVADO} -mode batch -source runme.tcl
${XRAY_BITREAD} -F $XRAY_ROI_FRAMES -o design.bits -z -y design.bit
test -z "$(fgrep CRITICAL vivado.log)"
${XRAY_SEGPRINT} -z -D design.bits >design.txt

View File

@ -52,7 +52,7 @@ cat >defines.v <<EOF
\`endif
EOF
vivado -mode batch -source ../runme.tcl
${XRAY_VIVADO} -mode batch -source ../runme.tcl
test -z "$(fgrep CRITICAL vivado.log)"
${XRAY_BITREAD} -F $XRAY_ROI_FRAMES -o design.bits -z -y design.bit

View File

@ -1,6 +1,6 @@
#!/bin/bash
vivado -mode batch -source runme.tcl
${XRAY_VIVADO} -mode batch -source runme.tcl
${XRAY_BITREAD} -F $XRAY_ROI_FRAMES -o design.bits -z -y design.bit
${XRAY_BITREAD} -F $XRAY_ROI_FRAMES -o routes.bits -z -y routes.bit
${XRAY_SEGPRINT} routes.bits INT_L_X12Y119 INT_L_X12Y117 INT_L_X12Y115

View File

@ -1,7 +1,7 @@
#!/bin/bash
set -e
vivado -mode batch -source runme.tcl
${XRAY_VIVADO} -mode batch -source runme.tcl
echo "=========================================================="
md5sum wires_{INT,CLBLL,CLBLM}_[LR]_*.txt | sed -re 's,X[0-9]+Y[0-9]+,XY,' | sort | uniq -c | sort -k3
echo "=========================================================="

View File

@ -1,7 +1,7 @@
#!/bin/bash
set -ex
vivado -mode batch -source $XRAY_DIR/minitests/util/runme.tcl
${XRAY_VIVADO} -mode batch -source $XRAY_DIR/minitests/util/runme.tcl
${XRAY_BITREAD} -F $XRAY_ROI_FRAMES -o design.bits -z -y design.bit
test -z "$(fgrep CRITICAL vivado.log)"
${XRAY_SEGPRINT} -z -D design.bits >design.txt

View File

@ -32,4 +32,4 @@ export XRAY_BITTOOL="${XRAY_TOOLS_DIR}/bittool"
export XRAY_BLOCKWIDTH="python3 ${XRAY_UTILS_DIR}/blockwidth.py"
export XRAY_PARSEDB="python3 ${XRAY_UTILS_DIR}/parsedb.py"
export XRAY_TCL_REFORMAT="${XRAY_UTILS_DIR}/tcl-reformat.sh"
export XRAY_VIVADO="${XRAY_UTILS_DIR}/vivado.sh"

View File

@ -12,7 +12,7 @@ if [ -f $FUZDIR/top.py ] ; then
python3 $FUZDIR/top.py >top.v
fi
vivado -mode batch -source $FUZDIR/generate.tcl
${XRAY_VIVADO} -mode batch -source $FUZDIR/generate.tcl
test -z "$(fgrep CRITICAL vivado.log)"
for x in design*.bit; do

5
utils/vivado.sh Executable file
View File

@ -0,0 +1,5 @@
#!/bin/bash
source "${XRAY_VIVADO_SETTINGS:-/opt/Xilinx/Vivado/2017.2/settings64.sh}"
vivado "$@"