diff options
Diffstat (limited to 'libraries/vendors/compile-lattice.sh')
-rwxr-xr-x | libraries/vendors/compile-lattice.sh | 598 |
1 files changed, 0 insertions, 598 deletions
diff --git a/libraries/vendors/compile-lattice.sh b/libraries/vendors/compile-lattice.sh deleted file mode 100755 index a7cdfd7c3..000000000 --- a/libraries/vendors/compile-lattice.sh +++ /dev/null @@ -1,598 +0,0 @@ -#! /usr/bin/env bash -# ============================================================================== -# Authors: -# Markus Koch -# Patrick Lehmann -# -# Bash Script (executable): -# Script to compile the simulation libraries from Lattice Diamond for GHDL on -# Linux -# -# Description: -# - Creates a subdirectory in the current working directory -# - Compiles all Lattice Diamond simulation libraries and packages -# -# ============================================================================== -# Copyright (C) 2017-2021 Patrick Lehmann - Boetzingen, Germany -# Copyright (C) 2015-2016 Patrick Lehmann - Dresden, Germany -# Copyright (C) 2015-2016 Markus Koch -# -# This program 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 of the License, or -# (at your option) any later version. -# -# This program 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 this program. If not, see <gnu.org/licenses>. -# ============================================================================== - -# Work around for Darwin (Mac OS) -test greadlink --version > /dev/null 2>&1 && READLINK=greadlink || READLINK=readlink - -# Save working directory -WorkingDir=$(pwd) -ScriptDir="$(dirname $0)" -ScriptDir="$($READLINK -f $ScriptDir)" - -# Source Bash utilities -source $ScriptDir/../ansi_color.sh -if [[ $? -ne 0 ]]; then echo 1>&2 -e "${COLORED_ERROR} While loading Bash utilities.${ANSI_NOCOLOR}" ; exit 1; fi - - -DeviceList="EC ECP ECP2 ECP3 ECP5U LPTM LPTM2 MACHXO MACHXO2 MACHXO3L SC SCM XP XP2" -for Device in $DeviceList; do - declare "DEV_${Device}_Enable"=0 -done - - -# Command line argument processing -COMMAND=1 -CLEAN=0 -VERBOSE=0 -DEBUG=0 -FILTERING=1 -SUPPRESS_WARNINGS=0 -HALT_ON_ERROR=0 -VHDLStandard=93 -DestDir="" -SrcDir="" -while [[ $# -gt 0 ]]; do - case "$1" in - -c|--clean) - COMMAND=3 - CLEAN=1 - ;; - -a|--all) - COMMAND=2 - ;; - --vhdl93) - VHDLStandard=93 - ;; - --vhdl2008) - VHDLStandard=2008 - ;; - -v|--verbose) - VERBOSE=1 - ;; - -d|--debug) - VERBOSE=1 - DEBUG=1 - ;; - -h|--help) - COMMAND=0 - break - ;; - -n|--no-filter) - FILTERING=0 - ;; - -N|--no-warnings) - SUPPRESS_WARNINGS=1 - ;; - -H|--halt-on-error) - HALT_ON_ERROR=1 - ;; - --ghdl) - GHDL="$2" # overwrite a potentially existing GHDL environment variable - shift # skip argument - ;; - --source) - SrcDir="$2" - shift # skip argument - ;; - --output) - DestDir="$2" - shift # skip argument - ;; - *) # unknown option - FOUND=0 - if [[ "${1:0:2}" == "--" ]]; then - key=${1:2}; key=${key,,} - for Device in $DeviceList; do - if [[ $key == "${Device,,}" ]]; then - declare "DEV_${Device}_Enable"=1 - COMMAND=3 - FOUND=1 - break - fi - done - fi - if [[ $FOUND -eq 0 ]]; then - echo 1>&2 -e "\n${COLORED_ERROR} Unknown command line option '$1'.${ANSI_NOCOLOR}" - COMMAND=0 - break - fi - ;; - esac - shift # parsed argument or value -done - -ERRORCOUNT=0 -Libraries=() - -if [[ $COMMAND -le 1 ]]; then - test $COMMAND -eq 1 && echo 1>&2 -e "\n${COLORED_ERROR} No command selected.${ANSI_NOCOLOR}" - echo "" - echo "Synopsis:" - echo " A script to compile the Lattice Diamond simulation libraries for GHDL on Linux." - echo " One library folder 'lib/v??' per VHDL library 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-lattice.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 Lattice simulation libraries." - for Device in $DeviceList; do - printf " --%-23s Device primitives for '%s'.\n" "${Device,,}" "$Device" - done - echo "" - echo "Library compile options:" - echo " --vhdl93 Compile the libraries with VHDL-93." - echo " --vhdl2008 Compile the libraries with VHDL-2008." - echo " -H --halt-on-error Halt on error(s)." - echo "" - echo "Advanced options:" - echo " --ghdl <GHDL binary> Path to GHDL's executable, e.g. /usr/local/bin/ghdl" - echo " --output <dir name> Name of the output directory, e.g. lattice" - echo " --source <Path to Diamond>Path to the sources." - echo "" - echo "Verbosity:" - echo " -v --verbose Print verbose messages." - echo " -d --debug Print debug messages." - echo " -n --no-filter Disable output filtering scripts." - echo " -N --no-warnings Suppress all warnings. Show only error messages." - echo "" - exit $COMMAND -fi - -if [[ $COMMAND -eq 2 ]]; then - for Device in $DeviceList; do - declare "DEV_${Device}_Enable"=1 - done -fi - - -# Source configuration file from GHDL's 'vendors' library directory -echo -e "${ANSI_MAGENTA}Loading environment...${ANSI_NOCOLOR}" -source $ScriptDir/config.sh -if [[ $? -ne 0 ]]; then echo 1>&2 -e "${COLORED_ERROR} While loading configuration.${ANSI_NOCOLOR}" ; exit 1; fi -source $ScriptDir/shared.sh -if [[ $? -ne 0 ]]; then echo 1>&2 -e "${COLORED_ERROR} While loading further procedures.${ANSI_NOCOLOR}"; exit 1; fi - -# Warn that some files might not be VHDL-2008 ready. Thus enabled continue on error. -if [[ $VHDLStandard -eq 2008 ]]; then - echo -e "${ANSI_RED}Not all Lattice packages are VHDL-2008 compatible! Setting CONTINUE_ON_ERROR to TRUE.${ANSI_NOCOLOR}" - CONTINUE_ON_ERROR=1 -fi - -# Search Lattice Diamond in default installation locations -DefaultDirectories=("/usr/local/diamond" "/opt/Diamond" "/opt/diamond" "/c/Lattice/Diamond") -if [ ! -z $LSC_DIAMOND ]; then - EnvSourceDir="$FOUNDRY/../${Lattice_Diamond_Settings[SourceDirectory]}" -else - for DefaultDir in "${DefaultDirectories[@]}"; do - for Major in 3; do - for Minor in 12 11 10 9 8 7 6 5; do - Dir=$DefaultDir/${Major}.${Minor}_x64 - if [ -d $Dir ]; then - EnvSourceDir="$Dir/${Lattice_Diamond_Settings[SourceDirectory]}" - break 3 - fi - done - done - done -fi - - -# <= $VHDLVersion -# <= $VHDLStandard -# <= $VHDLFlavor -GHDLSetup $VHDLStandard - -# -> $SourceDirectories -# -> $DestinationDirectories -# -> $SrcDir -# -> $EnvSourceDir -# -> $DestDir -# <= $SourceDirectory -# <= $DestinationDirectory -SetupDirectories LatticeDiamond "Lattice Diamond" - -# create "lattice" directory and change to it -# => $DestinationDirectory -CreateDestinationDirectory -cd $DestinationDirectory - - -# Extend global GHDL Options TODO: move to GHDLSetup -Analyze_Parameters+=( - -fexplicit - -Wbinding -) -if [[ $DEBUG -eq 0 ]]; then - Analyze_Parameters+=( - -Wno-hide - ) -fi -if [[ ! (VERBOSE -eq 1) && ($DEBUG -eq 1) ]]; then - Analyze_Parameters+=( - -Wno-others - -Wno-static - ) -fi -Analyze_Parameters+=( - --ieee=$VHDLFlavor - --no-vital-checks - --std=$VHDLStandard - -frelaxed - -P$DestinationDirectory -) - - -# Cleanup directory -# ============================================================================== -if [[ $CLEAN -eq 1 ]]; then - echo 1>&2 -e "${COLORED_ERROR} '--clean' is not implemented!" - exit 1 - echo -e "${ANSI_YELLOW}Cleaning up vendor directory ...${ANSI_NOCOLOR}" - rm *.o 2> /dev/null - rm *.cf 2> /dev/null -fi - -# Excluded: pmi -# -# Lattice device libraries -# ============================================================================== -# EC devices -StructName="EC" -SourceDir="ec/src" -Files=( - ORCA_CMB.vhd - ORCA_SEQ.vhd - ORCACOMP.vhd - ORCA_LUT.vhd - ORCA_MISC.vhd - ORCA_CNT.vhd - ORCA_IO.vhd - ORCA_MEM.vhd -) -if [[ -f "$SourceDirectory/$SourceDir/${Files[0]}" ]]; then - test $DEBUG -eq 1 && echo -e " ${ANSI_DARK_GRAY}Found device 'EC'.${ANSI_NOCOLOR}" - CreateLibraryStruct $StructName "ec" $SourceDir $VHDLVersion "${Files[@]}" - - VarName="DEV_${StructName}_Enable" - test ${!VarName} -eq 1 && Libraries+=("$StructName") -#else -# echo "not found: $SourceDirectory/${Files[0]}" -fi - -# ECP devices -StructName="ECP" -SourceDir="ecp/src" -Files=( - ORCA_CMB.vhd - ORCA_SEQ.vhd - ORCACOMP.vhd - ORCA_LUT.vhd - ORCA_MISC.vhd - ORCA_CNT.vhd - ORCA_IO.vhd - ORCA_MEM.vhd -) -if [[ -f "$SourceDirectory/$SourceDir/${Files[0]}" ]]; then - test $DEBUG -eq 1 && echo -e " ${ANSI_DARK_GRAY}Found device 'ECP'.${ANSI_NOCOLOR}" - CreateLibraryStruct $StructName "ecp" $SourceDir $VHDLVersion "${Files[@]}" - - VarName="DEV_${StructName}_Enable" - test ${!VarName} -eq 1 && Libraries+=("$StructName") -fi - - -# ECP2 devices -StructName="ECP2" -SourceDir="ecp2/src" -Files=( - ECP2_CMB.vhd - ECP2_SEQ.vhd - ECP2COMP.vhd - ECP2_CNT.vhd - ECP2_IO.vhd - ECP2_LUT.vhd - ECP2_MEM.vhd - ECP2_MISC.vhd - ECP2_MULT.vhd - ECP2_SL.vhd -) -if [[ -f "$SourceDirectory/$SourceDir/${Files[0]}" ]]; then - test $DEBUG -eq 1 && echo -e " ${ANSI_DARK_GRAY}Found device 'ECP2'.${ANSI_NOCOLOR}" - CreateLibraryStruct $StructName "ecp2" $SourceDir $VHDLVersion "${Files[@]}" - - VarName="DEV_${StructName}_Enable" - test ${!VarName} -eq 1 && Libraries+=("$StructName") -fi - -# ECP3 devices -StructName="ECP3" -SourceDir="ecp3/src" -Files=( - ECP3_CMB.vhd - ECP3_SEQ.vhd - ECP3COMP.vhd - ECP3_CNT.vhd - ECP3_IO.vhd - ECP3_LUT.vhd - ECP3_MEM.vhd - ECP3_MISC.vhd - ECP3_MULT.vhd - ECP3_SL.vhd -) -if [[ -f "$SourceDirectory/$SourceDir/${Files[0]}" ]]; then - test $DEBUG -eq 1 && echo -e " ${ANSI_DARK_GRAY}Found device 'ECP3'.${ANSI_NOCOLOR}" - CreateLibraryStruct $StructName "ecp3" $SourceDir $VHDLVersion "${Files[@]}" - - VarName="DEV_${StructName}_Enable" - test ${!VarName} -eq 1 && Libraries+=("$StructName") -fi - -# ECP5U devices -StructName="ECP5U" -SourceDir="ecp5u/src" -Files=( - ECP5U_CMB.vhd - ECP5U_SEQ.vhd - ECP5UCOMP.vhd - ECP5U_IO.vhd - ECP5U_LUT.vhd - ECP5U_MEM.vhd - ECP5U_MISC.vhd - ECP5U_SL.vhd - gsr_pur_assign.vhd -) -if [[ -f "$SourceDirectory/$SourceDir/${Files[0]}" ]]; then - test $DEBUG -eq 1 && echo -e " ${ANSI_DARK_GRAY}Found device 'ECP5U'.${ANSI_NOCOLOR}" - CreateLibraryStruct $StructName "ecp5u" $SourceDir $VHDLVersion "${Files[@]}" - - VarName="DEV_${StructName}_Enable" - test ${!VarName} -eq 1 && Libraries+=("$StructName") -fi - -# LPTM devices -StructName="LPTM" -SourceDir="lptm/src" -Files=( - MACHXO_CMB.vhd - MACHXO_SEQ.vhd - MACHXOCOMP.vhd - MACHXO_CNT.vhd - MACHXO_IO.vhd - MACHXO_LUT.vhd - MACHXO_MEM.vhd - MACHXO_MISC.vhd -) -if [[ -f "$SourceDirectory/$SourceDir/${Files[0]}" ]]; then - test $DEBUG -eq 1 && echo -e " ${ANSI_DARK_GRAY}Found device 'LPTM'.${ANSI_NOCOLOR}" - CreateLibraryStruct $StructName "lptm" $SourceDir $VHDLVersion "${Files[@]}" - - VarName="DEV_${StructName}_Enable" - test ${!VarName} -eq 1 && Libraries+=("$StructName") -fi - -# LPTM2 devices -StructName="LPTM2" -SourceDir="lptm2/src" -Files=( - MACHXO2_CMB.vhd - MACHXO2_SEQ.vhd - MACHXO2COMP.vhd - gsr_pur_assign.vhd - MACHXO2_CNT.vhd - MACHXO2_IO.vhd - MACHXO2_LUT.vhd - MACHXO2_MEM.vhd - MACHXO2_MISC.vhd -) -if [[ -f "$SourceDirectory/$SourceDir/${Files[0]}" ]]; then - test $DEBUG -eq 1 && echo -e " ${ANSI_DARK_GRAY}Found device 'LPTM2'.${ANSI_NOCOLOR}" - CreateLibraryStruct $StructName "lptm2" $SourceDir $VHDLVersion "${Files[@]}" - - VarName="DEV_${StructName}_Enable" - test ${!VarName} -eq 1 && Libraries+=("$StructName") -fi - -# MachXO devices -StructName="MACHXO" -SourceDir="machxo/src" -Files=( - MACHXO_CMB.vhd - MACHXO_SEQ.vhd - MACHXOCOMP.vhd - MACHXO_CNT.vhd - MACHXO_IO.vhd - MACHXO_LUT.vhd - MACHXO_MEM.vhd - MACHXO_MISC.vhd -) -if [[ -f "$SourceDirectory/$SourceDir/${Files[0]}" ]]; then - test $DEBUG -eq 1 && echo -e " ${ANSI_DARK_GRAY}Found device 'MachXO'.${ANSI_NOCOLOR}" - CreateLibraryStruct $StructName "machxo" $SourceDir $VHDLVersion "${Files[@]}" - - VarName="DEV_${StructName}_Enable" - test ${!VarName} -eq 1 && Libraries+=("$StructName") -fi - -# MachXO2 devices -StructName="MACHXO2" -SourceDir="machxo2/src" -Files=( - MACHXO2_CMB.vhd - MACHXO2_SEQ.vhd - MACHXO2COMP.vhd - MACHXO2_CNT.vhd - gsr_pur_assign.vhd - MACHXO2_IO.vhd - MACHXO2_LUT.vhd - MACHXO2_MEM.vhd - MACHXO2_MISC.vhd -) -if [[ -f "$SourceDirectory/$SourceDir/${Files[0]}" ]]; then - test $DEBUG -eq 1 && echo -e " ${ANSI_DARK_GRAY}Found device 'MachXO2'.${ANSI_NOCOLOR}" - CreateLibraryStruct $StructName "machxo2" $SourceDir $VHDLVersion "${Files[@]}" - - VarName="DEV_${StructName}_Enable" - test ${!VarName} -eq 1 && Libraries+=("$StructName") -fi - -# MachXO3L devices -StructName="MACHXO3L" -SourceDir="machxo3l/src" -Files=( - MACHXO3L_CMB.vhd - MACHXO3L_SEQ.vhd - MACHXO3LCOMP.vhd - gsr_pur_assign.vhd - MACHXO3L_CNT.vhd - MACHXO3L_IO.vhd - MACHXO3L_LUT.vhd - MACHXO3L_MEM.vhd - MACHXO3L_MISC.vhd -) -if [[ -f "$SourceDirectory/$SourceDir/${Files[0]}" ]]; then - test $DEBUG -eq 1 && echo -e " ${ANSI_DARK_GRAY}Found device 'MachXO3L'.${ANSI_NOCOLOR}" - CreateLibraryStruct $StructName "machxo3l" $SourceDir $VHDLVersion "${Files[@]}" - - VarName="DEV_${StructName}_Enable" - test ${!VarName} -eq 1 && Libraries+=("$StructName") -fi - -# SC devices -StructName="SC" -SourceDir="sc/src" -Files=( - ORCA_CMB.vhd - ORCA_SEQ.vhd - ORCACOMP.vhd - ORCA_CNT.vhd - ORCA_IO.vhd - ORCA_MEM.vhd - ORCA_MIS.vhd - ORCA_SL.vhd -) -if [[ -f "$SourceDirectory/$SourceDir/${Files[0]}" ]]; then - test $DEBUG -eq 1 && echo -e " ${ANSI_DARK_GRAY}Found device 'SC'.${ANSI_NOCOLOR}" - CreateLibraryStruct $StructName "sc" $SourceDir $VHDLVersion "${Files[@]}" - - VarName="DEV_${StructName}_Enable" - test ${!VarName} -eq 1 && Libraries+=("$StructName") -fi - -# SCM devices -StructName="SCM" -SourceDir="scm/src" -Files=( - ORCA_CMB.vhd - ORCA_SEQ.vhd - ORCACOMP.vhd - ORCA_CNT.vhd - ORCA_IO.vhd - ORCA_MEM.vhd - ORCA_MIS.vhd - ORCA_SL.vhd -) -if [[ -f "$SourceDirectory/$SourceDir/${Files[0]}" ]]; then - test $DEBUG -eq 1 && echo -e " ${ANSI_DARK_GRAY}Found device 'SCM'.${ANSI_NOCOLOR}" - CreateLibraryStruct $StructName "scm" $SourceDir $VHDLVersion "${Files[@]}" - - VarName="DEV_${StructName}_Enable" - test ${!VarName} -eq 1 && Libraries+=("$StructName") -fi - -# XP devices -StructName="XP" -SourceDir="xp/src" -Files=( - ORCA_CMB.vhd - ORCA_SEQ.vhd - ORCACOMP.vhd - ORCA_LUT.vhd - ORCA_MISC.vhd - ORCA_CNT.vhd - ORCA_IO.vhd - ORCA_MEM.vhd -) -if [[ -f "$SourceDirectory/$SourceDir/${Files[0]}" ]]; then - test $DEBUG -eq 1 && echo -e " ${ANSI_DARK_GRAY}Found device 'XP'.${ANSI_NOCOLOR}" - CreateLibraryStruct $StructName "xp" $SourceDir $VHDLVersion "${Files[@]}" - - VarName="DEV_${StructName}_Enable" - test ${!VarName} -eq 1 && Libraries+=("$StructName") -fi - -# XP2 devices -StructName="XP2" -SourceDir="xp2/src" -Files=( - XP2_CMB.vhd - XP2_SEQ.vhd - XP2COMP.vhd - XP2_CNT.vhd - XP2_IO.vhd - XP2_LUT.vhd - XP2_MEM.vhd - XP2_MISC.vhd - XP2_MULT.vhd - XP2_SL.vhd -) -if [[ -f "$SourceDirectory/$SourceDir/${Files[0]}" ]]; then - test $DEBUG -eq 1 && echo -e " ${ANSI_DARK_GRAY}Found device 'XP2'.${ANSI_NOCOLOR}" - CreateLibraryStruct $StructName "xp2" $SourceDir $VHDLVersion "${Files[@]}" - - VarName="DEV_${StructName}_Enable" - test ${!VarName} -eq 1 && Libraries+=("$StructName") -fi - -# if [[ $DEBUG -eq 1 ]]; then - # for StructName in ${Libraries[*]}; do - # PrintLibraryStruct $StructName " " - # done -# fi - -# Compile libraries -if [[ ${#Libraries[@]} -ne 0 ]]; then - Compile "$SourceDirectory" "${Libraries[*]}" - - echo "--------------------------------------------------------------------------------" - echo -e "Compiling Lattice device libraries $(test $ERRORCOUNT -eq 0 && echo $COLORED_SUCCESSFUL || echo $COLORED_FAILED)" -else - echo -e "${ANSI_RED}No Lattice device library selected.${ANSI_NOCOLOR}" -fi |