aboutsummaryrefslogtreecommitdiffstats
path: root/libraries/vendors/compile-xilinx-vivado.sh
diff options
context:
space:
mode:
Diffstat (limited to 'libraries/vendors/compile-xilinx-vivado.sh')
-rwxr-xr-xlibraries/vendors/compile-xilinx-vivado.sh95
1 files changed, 67 insertions, 28 deletions
diff --git a/libraries/vendors/compile-xilinx-vivado.sh b/libraries/vendors/compile-xilinx-vivado.sh
index b47a66a08..3bc06b037 100755
--- a/libraries/vendors/compile-xilinx-vivado.sh
+++ b/libraries/vendors/compile-xilinx-vivado.sh
@@ -88,6 +88,12 @@ while [[ $# > 0 ]]; do
--secureip)
SECUREIP=TRUE
;;
+ --vhdl93)
+ VHDL93=TRUE
+ ;;
+ --vhdl2008)
+ VHDL2008=TRUE
+ ;;
*) # unknown option
UNKNOWN_OPTION=TRUE
;;
@@ -125,6 +131,8 @@ elif [ "$HELP" == "TRUE" ]; then
echo " --secureip Compile the secureip library."
echo ""
echo "Library compile options:"
+ echo " --vhdl93 Compile the libraries with VHDL-93."
+ echo " --vhdl2008 Compile the libraries with VHDL-2008."
echo " -s --skip-existing Skip already compiled files (an *.o file exists)."
echo " -S --skip-largefiles Don't compile large entities like DSP and PCIe primitives."
echo " -H --halt-on-error Halt on error(s)."
@@ -142,12 +150,24 @@ if [ "$ALL" == "TRUE" ]; then
SECUREIP=TRUE
fi
+if [ "$VHDL93" == "TRUE" ]; then
+ VHDLStandard="93c"
+ VHDLFlavor="synopsys"
+elif [ "$VHDL2008" == "TRUE" ]; then
+ VHDLStandard="08"
+ VHDLFlavor="standard"
+ echo -e "${ANSI_RED}Not all Xilinx primitives are VHDL-2008 compatible! Setting HALT_ON_ERROR to FALSE.${ANSI_RESET}"
+ HALT_ON_ERROR=FALSE
+else
+ VHDLStandard="93c"
+ VHDLFlavor="synopsys"
+fi
+
# extract data from configuration
-InstallDir=${InstallationDirectory[XilinxVivado]}
-SourceDir="$InstallDir/data/vhdl/src"
+SourceDir=${SourceDirectory[XilinxVivado]}
DestinationDir=${DestinationDirectory[XilinxVivado]}
-if [ -z $InstallDir ] || [ -z $DestinationDir ]; then
+if [ -z $DestinationDir ]; then
echo -e "${COLORED_ERROR} Xilinx Vivado is not configured in '$ScriptDir/config.sh'${ANSI_RESET}"
exit -1
elif [ ! -d $SourceDir ]; then
@@ -182,6 +202,7 @@ else
fi
STOPCOMPILING=FALSE
+ERRORCOUNT=0
# Cleanup directory
# ==============================================================================
@@ -196,7 +217,7 @@ fi
if [ "$STOPCOMPILING" == "FALSE" ] && [ "$UNISIM" == "TRUE" ]; then
echo -e "${ANSI_YELLOW}Compiling library 'unisim' ...${ANSI_RESET}"
GHDL_PARAMS=(${GHDL_OPTIONS[@]})
- GHDL_PARAMS+=(--ieee=synopsys --std=93c)
+ GHDL_PARAMS+=(--ieee=$VHDLFlavor --std=$VHDLStandard)
Files=(
$SourceDir/unisims/unisim_VPKG.vhd
$SourceDir/unisims/unisim_VCOMP.vhd
@@ -211,9 +232,12 @@ if [ "$STOPCOMPILING" == "FALSE" ] && [ "$UNISIM" == "TRUE" ]; then
else
echo -e "${ANSI_CYAN}Analyzing package '$File'${ANSI_RESET}"
ghdl -a ${GHDL_PARAMS[@]} --work=unisim "$File" 2>&1 | $GRC_COMMAND
- if [ $? -ne 0 ] && [ "$HALT_ON_ERROR" == "TRUE" ]; then
- STOPCOMPILING=TRUE
- break
+ if [ $? -ne 0 ]; then
+ let ERRORCOUNT++
+ if [ "$HALT_ON_ERROR" == "TRUE" ]; then
+ STOPCOMPILING=TRUE
+ break
+ fi
fi
fi
done
@@ -222,7 +246,7 @@ fi
# compile unisim primitives
if [ "$STOPCOMPILING" == "FALSE" ] && [ "$UNISIM" == "TRUE" ]; then
GHDL_PARAMS=(${GHDL_OPTIONS[@]})
- GHDL_PARAMS+=(--ieee=synopsys --std=93c)
+ GHDL_PARAMS+=(--ieee=$VHDLFlavor --std=$VHDLStandard)
Files="$(LC_COLLATE=C ls $SourceDir/unisims/primitive/*.vhd)"
for File in $Files; do
FileName=$(basename "$File")
@@ -235,9 +259,12 @@ if [ "$STOPCOMPILING" == "FALSE" ] && [ "$UNISIM" == "TRUE" ]; then
else
echo -e "${ANSI_CYAN}Analyzing primitive '$File'${ANSI_RESET}"
ghdl -a ${GHDL_PARAMS[@]} --work=unisim "$File" 2>&1 | $GRC_COMMAND
- if [ $? -ne 0 ] && [ "$HALT_ON_ERROR" == "TRUE" ]; then
- STOPCOMPILING=TRUE
- break
+ if [ $? -ne 0 ]; then
+ let ERRORCOUNT++
+ if [ "$HALT_ON_ERROR" == "TRUE" ]; then
+ STOPCOMPILING=TRUE
+ break
+ fi
fi
fi
done
@@ -246,7 +273,7 @@ fi
# compile unisim retarget primitives
if [ "$STOPCOMPILING" == "FALSE" ] && [ "$UNISIM" == "TRUE" ]; then
GHDL_PARAMS=(${GHDL_OPTIONS[@]})
- GHDL_PARAMS+=(--ieee=synopsys --std=93c)
+ GHDL_PARAMS+=(--ieee=$VHDLFlavor --std=$VHDLStandard)
Files="$(LC_COLLATE=C ls $SourceDir/unisims/retarget/*.vhd)"
for File in $Files; do
FileName=$(basename "$File")
@@ -259,9 +286,12 @@ if [ "$STOPCOMPILING" == "FALSE" ] && [ "$UNISIM" == "TRUE" ]; then
else
echo -e "${ANSI_CYAN}Analyzing primitive '$File'${ANSI_RESET}"
ghdl -a ${GHDL_PARAMS[@]} --work=unisim "$File" 2>&1 | $GRC_COMMAND
- if [ $? -ne 0 ] && [ "$HALT_ON_ERROR" == "TRUE" ]; then
- STOPCOMPILING=TRUE
- break
+ if [ $? -ne 0 ]; then
+ let ERRORCOUNT++
+ if [ "$HALT_ON_ERROR" == "TRUE" ]; then
+ STOPCOMPILING=TRUE
+ break
+ fi
fi
fi
done
@@ -271,7 +301,7 @@ fi
if [ "$STOPCOMPILING" == "FALSE" ] && [ "$UNISIM" == "TRUE" ] && [ "$SECUREIP" == "TRUE" ]; then
echo -e "${ANSI_YELLOW}Compiling library secureip primitives${ANSI_RESET}"
GHDL_PARAMS=(${GHDL_OPTIONS[@]})
- GHDL_PARAMS+=(--ieee=synopsys --std=93c)
+ GHDL_PARAMS+=(--ieee=$VHDLFlavor --std=$VHDLStandard)
Files="$(LC_COLLATE=C ls $SourceDir/unisims/secureip/*.vhd)"
for File in $Files; do
FileName=$(basename "$File")
@@ -284,9 +314,12 @@ if [ "$STOPCOMPILING" == "FALSE" ] && [ "$UNISIM" == "TRUE" ] && [ "$SECUREIP" =
else
echo -e "${ANSI_CYAN}Analyzing primitive '$File'${ANSI_RESET}"
ghdl -a ${GHDL_PARAMS[@]} --work=secureip "$File" 2>&1 | $GRC_COMMAND
- if [ $? -ne 0 ] && [ "$HALT_ON_ERROR" == "TRUE" ]; then
- STOPCOMPILING=TRUE
- break
+ if [ $? -ne 0 ]; then
+ let ERRORCOUNT++
+ if [ "$HALT_ON_ERROR" == "TRUE" ]; then
+ STOPCOMPILING=TRUE
+ break
+ fi
fi
fi
done
@@ -298,7 +331,7 @@ fi
if [ "$STOPCOMPILING" == "FALSE" ] && [ "$UNIMACRO" == "TRUE" ]; then
echo -e "${ANSI_YELLOW}Compiling library 'unimacro' ...${ANSI_RESET}"
GHDL_PARAMS=(${GHDL_OPTIONS[@]})
- GHDL_PARAMS+=(--ieee=synopsys --std=93c)
+ GHDL_PARAMS+=(--ieee=$VHDLFlavor --std=$VHDLStandard)
Files=(
$SourceDir/unimacro/unimacro_VCOMP.vhd
)
@@ -309,9 +342,12 @@ if [ "$STOPCOMPILING" == "FALSE" ] && [ "$UNIMACRO" == "TRUE" ]; then
else
echo -e "${ANSI_CYAN}Analyzing package '$File'${ANSI_RESET}"
ghdl -a ${GHDL_PARAMS[@]} --work=unimacro "$File" 2>&1 | $GRC_COMMAND
- if [ $? -ne 0 ] && [ "$HALT_ON_ERROR" == "TRUE" ]; then
- STOPCOMPILING=TRUE
- break
+ if [ $? -ne 0 ]; then
+ let ERRORCOUNT++
+ if [ "$HALT_ON_ERROR" == "TRUE" ]; then
+ STOPCOMPILING=TRUE
+ break
+ fi
fi
fi
done
@@ -320,7 +356,7 @@ fi
# compile unimacro macros
if [ "$STOPCOMPILING" == "FALSE" ] && [ "$UNIMACRO" == "TRUE" ]; then
GHDL_PARAMS=(${GHDL_OPTIONS[@]})
- GHDL_PARAMS+=(--ieee=synopsys --std=93c)
+ GHDL_PARAMS+=(--ieee=$VHDLFlavor --std=$VHDLStandard)
Files="$(LC_COLLATE=C ls $SourceDir/unimacro/*_MACRO.vhd)"
for File in $Files; do
FileName=$(basename "$File")
@@ -329,9 +365,12 @@ if [ "$STOPCOMPILING" == "FALSE" ] && [ "$UNIMACRO" == "TRUE" ]; then
else
echo -e "${ANSI_CYAN}Analyzing macro '$File'${ANSI_RESET}"
ghdl -a ${GHDL_PARAMS[@]} --work=unimacro "$File" 2>&1 | $GRC_COMMAND
- if [ $? -ne 0 ] && [ "$HALT_ON_ERROR" == "TRUE" ]; then
- STOPCOMPILING=TRUE
- break
+ if [ $? -ne 0 ]; then
+ let ERRORCOUNT++
+ if [ "$HALT_ON_ERROR" == "TRUE" ]; then
+ STOPCOMPILING=TRUE
+ break
+ fi
fi
fi
done
@@ -343,7 +382,7 @@ fi
echo "--------------------------------------------------------------------------------"
echo -n "Compiling Xilinx Vivado libraries "
-if [ "$STOPCOMPILING" == "TRUE" ]; then
+if [ $ERRORCOUNT -gt 0 ]; then
echo -e $COLORED_FAILED
else
echo -e $COLORED_SUCCESSFUL