aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPatrick Lehmann <Patrick.Lehmann@tu-dresden.de>2016-11-10 03:31:25 +0100
committerPatrick Lehmann <Patrick.Lehmann@tu-dresden.de>2016-11-10 03:31:25 +0100
commit6422a9d338ed0cd7816a721e16e0b2b5701772ef (patch)
treebee6417450d4798f54cba22a932a6f4a6b0e61af
parent34e5a9ee00d04b8c48935b0142f3817ba9f65ea0 (diff)
downloadghdl-6422a9d338ed0cd7816a721e16e0b2b5701772ef.tar.gz
ghdl-6422a9d338ed0cd7816a721e16e0b2b5701772ef.tar.bz2
ghdl-6422a9d338ed0cd7816a721e16e0b2b5701772ef.zip
Implemented vendor compile script for UVVM (Bash).
-rw-r--r--libraries/vendors/compile-uvvm.sh386
-rwxr-xr-xlibraries/vendors/compile-vunit.sh4
-rw-r--r--libraries/vendors/config.sh3
3 files changed, 391 insertions, 2 deletions
diff --git a/libraries/vendors/compile-uvvm.sh b/libraries/vendors/compile-uvvm.sh
new file mode 100644
index 000000000..94485421e
--- /dev/null
+++ b/libraries/vendors/compile-uvvm.sh
@@ -0,0 +1,386 @@
+#! /usr/bin/env bash
+# EMACS settings: -*- tab-width: 2; indent-tabs-mode: t -*-
+# vim: tabstop=2:shiftwidth=2:noexpandtab
+# kate: tab-width 2; replace-tabs off; indent-width 2;
+#
+# ==============================================================================
+# Authors: Patrick Lehmann
+#
+# Bash Script: Script to compile the UVVM library for GHDL on Linux
+#
+# Description:
+# ------------------------------------
+# This is a Bash script (executable) which:
+# - creates a subdirectory in the current working directory
+# - compiles all UVVM packages
+#
+# ==============================================================================
+# Copyright (C) 2015-2016 Patrick Lehmann - Dresden, Germany
+#
+# GHDL is free software; you can redistribute it and/or modify it under
+# the terms of the GNU General Public License as published by the Free
+# Software Foundation; either version 2, or (at your option) any later
+# version.
+#
+# GHDL is distributed in the hope that it will be useful, but WITHOUT ANY
+# WARRANTY; without even the implied warranty of MERCHANTABILITY or
+# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+# for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with GHDL; see the file COPYING. If not, write to the Free
+# Software Foundation, 59 Temple Place - Suite 330, Boston, MA
+# 02111-1307, USA.
+# ==============================================================================
+
+# ---------------------------------------------
+# work around for Darwin (Mac OS)
+READLINK=readlink; if [[ $(uname) == "Darwin" ]]; then READLINK=greadlink; fi
+
+# save working directory
+WorkingDir=$(pwd)
+ScriptDir="$(dirname $0)"
+ScriptDir="$($READLINK -f $ScriptDir)"
+
+# source configuration file from GHDL's 'vendors' library directory
+source $ScriptDir/config.sh
+source $ScriptDir/shared.sh
+
+# command line argument processing
+NO_COMMAND=1
+SUPPRESS_WARNINGS=0
+HALT_ON_ERROR=0
+GHDLBinDir=""
+DestDir=""
+SrcDir=""
+while [[ $# > 0 ]]; do
+ key="$1"
+ case $key in
+ -c|--clean)
+ CLEAN=TRUE
+ NO_COMMAND=0
+ ;;
+ -a|--all)
+ COMPILE_ALL=TRUE
+ NO_COMMAND=0
+ ;;
+ --uvvm)
+ COMPILE_UVVM=TRUE
+ NO_COMMAND=0
+ ;;
+ --uvvm-vip)
+ COMPILE_UVVM_VIP=TRUE
+ NO_COMMAND=0
+ ;;
+ -h|--help)
+ HELP=TRUE
+ NO_COMMAND=0
+ ;;
+ -n|--no-warnings)
+ SUPPRESS_WARNINGS=1
+ ;;
+ -H|--halt-on-error)
+ HALT_ON_ERROR=1
+ ;;
+ --ghdl)
+ GHDLBinDir="$2"
+ shift # skip argument
+ ;;
+ --src)
+ SrcDir="$2"
+ shift # skip argument
+ ;;
+ --out)
+ DestDir="$2"
+ shift # skip argument
+ ;;
+ *) # unknown option
+ echo 1>&2 -e "${COLORED_ERROR} Unknown command line option '$key'.${ANSI_NOCOLOR}"
+ exit -1
+ ;;
+ esac
+ shift # past argument or value
+done
+
+# makes no sense to enable it for UVVM
+SKIP_EXISTING_FILES=0
+
+if [ $NO_COMMAND -eq 1 ]; then
+ HELP=TRUE
+fi
+
+if [ "$HELP" == "TRUE" ]; then
+ test $NO_COMMAND -eq 1 && echo 1>&2 -e "/n${COLORED_ERROR} No command selected."
+ echo ""
+ echo "Synopsis:"
+ echo " A script to compile the simulation library 'uvvm_util' for GHDL on Linux."
+ echo " A library folder 'uvvm_util/v08' will be created relative to the current"
+ echo " working directory."
+ echo ""
+ echo " Use the adv. options or edit 'config.sh' to supply paths and default params."
+ echo ""
+ echo "Usage:"
+ echo " compile-uvvm.sh <common command>|<library> [<options>] [<adv. options>]"
+ echo ""
+ echo "Common commands:"
+ echo " -h --help Print this help page"
+ echo " -c --clean Remove all generated files"
+ echo ""
+ echo "Libraries:"
+ echo " -a --all Compile all libraries."
+ echo " --uvvm Compile UVVM library packages."
+ echo " --uvvm-vip Compile UVVM Verification IPs (VIPs)."
+ echo ""
+ echo "Library compile options:"
+ echo " -H --halt-on-error Halt on error(s)."
+ echo ""
+ echo "Advanced options:"
+ echo " --ghdl <GHDL bin dir> Path to GHDL's binary directory, e.g. /usr/local/bin"
+ echo " --out <dir name> Name of the output directory, e.g. uvvm_util"
+ echo " --src <Path to UVVM> Path to the sources."
+ echo ""
+ echo "Verbosity:"
+ echo " -n --no-warnings Suppress all warnings. Show only error messages."
+ echo ""
+ exit 0
+fi
+
+if [ "$COMPILE_ALL" == "TRUE" ]; then
+ COMPILE_UVVM=TRUE
+ COMPILE_UVVM_VIP=TRUE
+fi
+if [ "$COMPILE_UVVM" == "TRUE" ]; then
+ COMPILE_UVVM_UTILITIES=TRUE
+ COMPILE_UVVM_VVC_FRAMEWORK=TRUE
+fi
+if [ "$COMPILE_UVVM_VIP" == "TRUE" ]; then
+ COMPILE_UVVM_VIP_AXILITE=TRUE
+ COMPILE_UVVM_VIP_AXISTREAM=TRUE
+ COMPILE_UVVM_VIP_I2C=TRUE
+ COMPILE_UVVM_VIP_SBI=TRUE
+ COMPILE_UVVM_VIP_UART=TRUE
+fi
+
+# -> $SourceDirectories
+# -> $DestinationDirectories
+# -> $SrcDir
+# -> $DestDir
+# -> $GHDLBinDir
+# <= $SourceDirectory
+# <= $DestinationDirectory
+# <= $GHDLBinary
+SetupDirectories UVVM "UVVM"
+
+# create "uvvm_util" directory and change to it
+# => $DestinationDirectory
+CreateDestinationDirectory
+cd $DestinationDirectory
+
+
+# => $SUPPRESS_WARNINGS
+# <= $GRC_COMMAND
+SetupGRCat
+
+
+# define global GHDL Options
+GHDL_OPTIONS=(-fexplicit -frelaxed-rules --no-vital-checks --warn-binding --mb-comments)
+
+# create a set of GHDL parameters
+GHDL_PARAMS=(${GHDL_OPTIONS[@]})
+GHDL_PARAMS+=(--std=08 -P$DestinationDirectory)
+
+# Cleanup directory
+# ==============================================================================
+if [ "$CLEAN" == "TRUE" ]; then
+ echo -e "${ANSI_YELLOW}Cleaning up vendor directory ...${ANSI_NOCOLOR}"
+ rm *.o 2> /dev/null
+ rm *.cf 2> /dev/null
+fi
+
+# UVVM libraries
+# ==============================================================================
+# compile uvvm_util packages
+ERRORCOUNT=0
+if [ "$COMPILE_UVVM" == "TRUE" ]; then
+ Library="uvvm_util"
+ VHDLVersion="v08"
+ Files=(
+ uvvm_util/src/types_pkg.vhd
+ uvvm_util/src/adaptations_pkg.vhd
+ uvvm_util/src/string_methods_pkg.vhd
+ uvvm_util/src/protected_types_pkg.vhd
+ uvvm_util/src/hierarchy_linked_list_pkg.vhd
+ uvvm_util/src/alert_hierarchy_pkg.vhd
+ uvvm_util/src/license_pkg.vhd
+ uvvm_util/src/methods_pkg.vhd
+ uvvm_util/src/bfm_common_pkg.vhd
+ uvvm_util/src/uvvm_util_context.vhd
+ )
+
+ # append absolute source path
+ SourceFiles=()
+ for File in ${Files[@]}; do
+ SourceFiles+=("$SourceDirectory/$File")
+ done
+
+ GHDLCompilePackages
+fi
+
+# compile uvvm_vvc_framework packages
+ERRORCOUNT=0
+if [ "$COMPILE_UVVM" == "TRUE" ]; then
+ Library="uvvm_vvc_framework"
+ VHDLVersion="v08"
+ Files=(
+ uvvm_vvc_framework/src/ti_vvc_framework_support_pkg.vhd
+ uvvm_vvc_framework/src/ti_generic_queue_pkg.vhd
+ uvvm_vvc_framework/src/ti_data_queue_pkg.vhd
+ uvvm_vvc_framework/src/ti_data_fifo_pkg.vhd
+ uvvm_vvc_framework/src/ti_data_stack_pkg.vhd
+ )
+
+ # append absolute source path
+ SourceFiles=()
+ for File in ${Files[@]}; do
+ SourceFiles+=("$SourceDirectory/$File")
+ done
+
+ GHDLCompilePackages
+fi
+
+# Verification IPs
+# ==============================================================================
+# compile bitvis_vip_axilite packages
+ERRORCOUNT=0
+if [ "$COMPILE_UVVM_VIP_AXILITE" == "TRUE" ]; then
+ Library="bitvis_vip_axilite"
+ VHDLVersion="v08"
+ Files=(
+ bitvis_vip_axilite/src/axilite_bfm_pkg.vhd
+ bitvis_vip_axilite/src/vvc_cmd_pkg.vhd
+ uvvm_vvc_framework/src_target_dependent/td_target_support_pkg.vhd
+ uvvm_vvc_framework/src_target_dependent/td_vvc_framework_common_methods_pkg.vhd
+ bitvis_vip_axilite/src/vvc_methods_pkg.vhd
+ uvvm_vvc_framework/src_target_dependent/td_queue_pkg.vhd
+ uvvm_vvc_framework/src_target_dependent/td_vvc_entity_support_pkg.vhd
+ bitvis_vip_axilite/src/axilite_vvc.vhd
+ )
+
+ # append absolute source path
+ SourceFiles=()
+ for File in ${Files[@]}; do
+ SourceFiles+=("$SourceDirectory/$File")
+ done
+
+ GHDLCompilePackages
+fi
+
+# compile bitvis_vip_axistream packages
+ERRORCOUNT=0
+if [ "$COMPILE_UVVM_VIP_AXISTREAM" == "TRUE" ]; then
+ Library="bitvis_vip_axistream"
+ VHDLVersion="v08"
+ Files=(
+ bitvis_vip_axistream/src/axistream_bfm_pkg.vhd
+ bitvis_vip_axistream/src/vvc_cmd_pkg.vhd
+ uvvm_vvc_framework/src_target_dependent/td_target_support_pkg.vhd
+ uvvm_vvc_framework/src_target_dependent/td_vvc_framework_common_methods_pkg.vhd
+ bitvis_vip_axistream/src/vvc_methods_pkg.vhd
+ uvvm_vvc_framework/src_target_dependent/td_queue_pkg.vhd
+ uvvm_vvc_framework/src_target_dependent/td_vvc_entity_support_pkg.vhd
+ bitvis_vip_axistream/src/axistream_vvc.vhd
+ )
+
+ # append absolute source path
+ SourceFiles=()
+ for File in ${Files[@]}; do
+ SourceFiles+=("$SourceDirectory/$File")
+ done
+
+ GHDLCompilePackages
+fi
+
+# compile bitvis_vip_i2c packages
+ERRORCOUNT=0
+if [ "$COMPILE_UVVM_VIP_I2C" == "TRUE" ]; then
+ Library="bitvis_vip_i2c"
+ VHDLVersion="v08"
+ Files=(
+ bitvis_vip_i2c/src/i2c_bfm_pkg.vhd
+ bitvis_vip_i2c/src/vvc_cmd_pkg.vhd
+ uvvm_vvc_framework/src_target_dependent/td_target_support_pkg.vhd
+ uvvm_vvc_framework/src_target_dependent/td_vvc_framework_common_methods_pkg.vhd
+ bitvis_vip_i2c/src/vvc_methods_pkg.vhd
+ uvvm_vvc_framework/src_target_dependent/td_queue_pkg.vhd
+ uvvm_vvc_framework/src_target_dependent/td_vvc_entity_support_pkg.vhd
+ bitvis_vip_i2c/src/i2c_vvc.vhd
+ )
+
+ # append absolute source path
+ SourceFiles=()
+ for File in ${Files[@]}; do
+ SourceFiles+=("$SourceDirectory/$File")
+ done
+
+ GHDLCompilePackages
+fi
+
+# compile bitvis_vip_sbi packages
+ERRORCOUNT=0
+if [ "$COMPILE_UVVM_VIP_SBI" == "TRUE" ]; then
+ Library="bitvis_vip_sbi"
+ VHDLVersion="v08"
+ Files=(
+ bitvis_vip_sbi/src/sbi_bfm_pkg.vhd
+ bitvis_vip_sbi/src/vvc_cmd_pkg.vhd
+ uvvm_vvc_framework/src_target_dependent/td_target_support_pkg.vhd
+ uvvm_vvc_framework/src_target_dependent/td_vvc_framework_common_methods_pkg.vhd
+ bitvis_vip_sbi/src/vvc_methods_pkg.vhd
+ uvvm_vvc_framework/src_target_dependent/td_queue_pkg.vhd
+ uvvm_vvc_framework/src_target_dependent/td_vvc_entity_support_pkg.vhd
+ bitvis_vip_sbi/src/sbi_vvc.vhd
+ )
+
+ # append absolute source path
+ SourceFiles=()
+ for File in ${Files[@]}; do
+ SourceFiles+=("$SourceDirectory/$File")
+ done
+
+ GHDLCompilePackages
+fi
+
+# compile bitvis_vip_uart packages
+ERRORCOUNT=0
+if [ "$COMPILE_UVVM_VIP_UART" == "TRUE" ]; then
+ Library="bitvis_vip_uart"
+ VHDLVersion="v08"
+ Files=(
+ bitvis_vip_uart/src/uart_bfm_pkg.vhd
+ bitvis_vip_uart/src/vvc_cmd_pkg.vhd
+ uvvm_vvc_framework/src_target_dependent/td_target_support_pkg.vhd
+ uvvm_vvc_framework/src_target_dependent/td_vvc_framework_common_methods_pkg.vhd
+ bitvis_vip_uart/src/vvc_methods_pkg.vhd
+ uvvm_vvc_framework/src_target_dependent/td_queue_pkg.vhd
+ uvvm_vvc_framework/src_target_dependent/td_vvc_entity_support_pkg.vhd
+ bitvis_vip_uart/src/uart_rx_vvc.vhd
+ bitvis_vip_uart/src/uart_tx_vvc.vhd
+ bitvis_vip_uart/src/uart_vvc.vhd
+ )
+
+ # append absolute source path
+ SourceFiles=()
+ for File in ${Files[@]}; do
+ SourceFiles+=("$SourceDirectory/$File")
+ done
+
+ GHDLCompilePackages
+fi
+
+echo "--------------------------------------------------------------------------------"
+echo -n "Compiling UVVM packages "
+if [ $ERRORCOUNT -gt 0 ]; then
+ echo -e $COLORED_FAILED
+else
+ echo -e $COLORED_SUCCESSFUL
+fi
diff --git a/libraries/vendors/compile-vunit.sh b/libraries/vendors/compile-vunit.sh
index 0f98d2cd6..277ec47ef 100755
--- a/libraries/vendors/compile-vunit.sh
+++ b/libraries/vendors/compile-vunit.sh
@@ -110,7 +110,7 @@ if [ "$HELP" == "TRUE" ]; then
echo ""
echo "Synopsis:"
echo " A script to compile the simulation library 'vunit_lib' for GHDL on Linux."
- echo " A library folder 'vunit/v08' will be created relative to the current"
+ echo " A library folder 'vunit_lib/v08' will be created relative to the current"
echo " working directory."
echo ""
echo " Use the adv. options or edit 'config.sh' to supply paths and default params."
@@ -131,7 +131,7 @@ if [ "$HELP" == "TRUE" ]; then
echo ""
echo "Advanced options:"
echo " --ghdl <GHDL bin dir> Path to GHDL's binary directory, e.g. /usr/local/bin"
- echo " --out <dir name> Name of the output directory, e.g. vunit"
+ echo " --out <dir name> Name of the output directory, e.g. vunit_lib"
echo " --src <Path to VUnit> Path to the sources."
echo ""
echo "Verbosity:"
diff --git a/libraries/vendors/config.sh b/libraries/vendors/config.sh
index 357236f61..d4606512b 100644
--- a/libraries/vendors/config.sh
+++ b/libraries/vendors/config.sh
@@ -43,6 +43,7 @@ declare -A InstallationDirectories
InstallationDirectories[AlteraQuartus]="" # "/opt/altera/16.0/quartus"
InstallationDirectories[LatticeDiamond]="" # "/usr/local/diamond/3.7_x64"
InstallationDirectories[OSVVM]="" # "~/git/github/osvvm"
+InstallationDirectories[UVVM]="" # "~/git/github/uvvm_all"
InstallationDirectories[VUnit]="" # "~/git/github/vunit"
InstallationDirectories[XilinxISE]="" # "/opt/Xilinx/14.7/ISE_DS/ISE"
InstallationDirectories[XilinxVivado]="" # "/opt/Xilinx/Vivado/2016.2"
@@ -52,6 +53,7 @@ declare -A DestinationDirectories
DestinationDirectories[AlteraQuartus]="altera"
DestinationDirectories[LatticeDiamond]="lattice"
DestinationDirectories[OSVVM]="." # "osvvm"
+DestinationDirectories[UVVM]="."
DestinationDirectories[VUnit]="." # "vunit_lib"
DestinationDirectories[XilinxISE]="xilinx-ise"
DestinationDirectories[XilinxVivado]="xilinx-vivado"
@@ -63,6 +65,7 @@ SourceDirectories[XilinxISE]="vhdl/src"
SourceDirectories[XilinxVivado]="data/vhdl/src"
SourceDirectories[LatticeDiamond]="cae_library/simulation/vhdl"
SourceDirectories[OSVVM]="."
+SourceDirectories[UVVM]="."
SourceDirectories[VUnit]="vunit/vhdl"
# input files greater than $LARGE_FILESIZE are skipped if '--skip-largefiles' is set