diff options
Diffstat (limited to 'libraries/vendors/compile-xilinx-vivado.sh')
-rwxr-xr-x | libraries/vendors/compile-xilinx-vivado.sh | 95 |
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 |