From 06906cef13381eb8a021d0822b778df219b1f7b1 Mon Sep 17 00:00:00 2001 From: Patrick Lehmann Date: Fri, 28 Jul 2017 15:45:54 +0200 Subject: Reworked and improved pre-compile scripts. Added Intel FPGA support. Extended list of UVVM verification IPs. --- libraries/vendors/compile-intel.ps1 | 555 ++++++++++++++++++++++++++++++++++++ 1 file changed, 555 insertions(+) create mode 100644 libraries/vendors/compile-intel.ps1 (limited to 'libraries/vendors/compile-intel.ps1') diff --git a/libraries/vendors/compile-intel.ps1 b/libraries/vendors/compile-intel.ps1 new file mode 100644 index 000000000..a5dd32302 --- /dev/null +++ b/libraries/vendors/compile-intel.ps1 @@ -0,0 +1,555 @@ +# 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 +# +# PowerShell Script: Script to compile the simulation libraries from Altera +# Quartus for GHDL on Windows +# +# Description: +# ------------------------------------ +# This is a PowerShell script (executable) which: +# - creates a subdirectory in the current working directory +# - compiles all Altera Quartus simulation libraries and packages +# +# ============================================================================== +# Copyright (C) 2015-2016 Patrick Lehmann - Dresden, Germany +# Copyright (C) 2017 Patrick Lehmann - Freiburg, 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. +# ============================================================================== + +# .SYNOPSIS +# This CmdLet compiles the simulation libraries from Altera. +# +# .DESCRIPTION +# This CmdLet: +# (1) creates a subdirectory in the current working directory +# (2) compiles all Altera Quartus simulation libraries and packages +# o Altera standard libraries: lpm, sgate, altera, altera_mf, altera_lnsim +# o Altera device libraries: +# - arriaii, arriaii_pcie_hip, arriaiigz +# - arriav, arriavgz, arriavgz_pcie_hip +# - cycloneiv, cycloneiv_pcie_hip, cycloneive +# - cyclonev +# - max, maxii, maxv +# - stratixiv, stratixiv_pcie_hip +# - stratixv, stratixv_pcie_hip +# - fiftyfivenm, twentynm +# +[CmdletBinding()] +param( + # Show the embedded help page(s) + [switch]$Help = $false, + + # Compile all libraries and packages. + [switch]$All = $false, + + # Compile the Altera standard libraries: lpm, sgate, altera, altera_mf, altera_lnsim + [switch]$Altera = $false, + + # Compile the Altera Max device libraries + [switch]$Max = $false, + + # Compile the Altera Cyclone device libraries + [switch]$Cyclone = $false, + + # Compile the Altera Arria device libraries + [switch]$Arria = $false, + + # Compile the Altera Stratix device libraries + [switch]$Stratix = $false, + + # Unknown device library + [switch]$Nanometer = $false, + + # Clean up directory before analyzing. + [switch]$Clean = $false, + + # Set VHDL Standard to '93. + [switch]$VHDL93 = $false, + # Set VHDL Standard to '08. + [switch]$VHDL2008 = $false, + + # Skip warning messages. (Show errors only.) + [switch]$SuppressWarnings = $false, + # Halt on errors. + [switch]$HaltOnError = $false, + + # Set vendor library source directory. + [string]$Source = "", + # Set output directory name. + [string]$Output = "", + # Set GHDL binary directory. + [string]$GHDL = "" +) + +# --------------------------------------------- +# save working directory +$WorkingDir = Get-Location + +# set default values +$EnableDebug = [bool]$PSCmdlet.MyInvocation.BoundParameters["Debug"] +$EnableVerbose = [bool]$PSCmdlet.MyInvocation.BoundParameters["Verbose"] -or $EnableDebug + +# load modules from GHDL's 'vendors' library directory +$EnableVerbose -and (Write-Host "Loading modules..." -ForegroundColor Gray ) | Out-Null +$EnableDebug -and (Write-Host " Import-Module $PSScriptRoot\config.psm1 -Verbose:`$$false -Debug:`$$false -ArgumentList `"IntelQuartus`"" -ForegroundColor DarkGray ) | Out-Null +Import-Module $PSScriptRoot\config.psm1 -Verbose:$false -Debug:$false -ArgumentList "IntelQuartus" +$EnableDebug -and (Write-Host " Import-Module $PSScriptRoot\shared.psm1 -Verbose:`$$false -Debug:`$$false -ArgumentList @(`"Intel Quartus Prime`", `"$WorkingDir`")" -ForegroundColor DarkGray ) | Out-Null +Import-Module $PSScriptRoot\shared.psm1 -Verbose:$false -Debug:$false -ArgumentList @("Intel Quartus Prime", "$WorkingDir") + +# Display help if no command was selected +$Help = $Help -or (-not ($All -or $Altera -or $Max -or $Cyclone -or $Arria -or $Stratix -or $Nanometer -or $Clean)) + +if ($Help) +{ Get-Help $MYINVOCATION.InvocationName -Detailed + Exit-CompileScript +} +if ($All) +{ $Altera = $true + $Max = $true + $Cyclone = $true + $Arria = $true + $Stratix = $true + $Nanometer = $true +} + +function Get-AlteraQuartusDirectory +{ if (Test-Path env:QUARTUS_ROOTDIR) + { return $QUARTUS_ROOTDIR + "\" + (Get-VendorToolSourceDirectory) } + else + { $EnvSourceDir = "" + foreach ($Drive in Get-DriveInfo) + { $Path = $Drive.Name + "Altera" + if (Test-Path $Path -PathType Container) + { foreach ($Major in 16..13) + { foreach ($Minor in 3..0) + { $Dir = $Path + "\" + $Major + "." + $Minor + "\quartus" + if (Test-Path $Dir -PathType Container) + { $EnvSourceDir = $Dir + "\" + (Get-VendorToolSourceDirectory) + return $EnvSourceDir + } + } + } + } + } + } +} + +$SourceDirectory = Get-SourceDirectory $Source (Get-AlteraQuartusDirectory) +$DestinationDirectory = Get-DestinationDirectory $Output +$GHDLBinary = Get-GHDLBinary $GHDL + +# create "Altera" directory and change to it +New-DestinationDirectory $DestinationDirectory +cd $DestinationDirectory + + +$VHDLVersion,$VHDLStandard,$VHDLFlavor = Get-VHDLVariables $VHDL93 $VHDL2008 + +# define global GHDL Options +$GHDLOptions = @("-a", "-fexplicit", "-frelaxed-rules", "--mb-comments", "--warn-binding", "--ieee=$VHDLFlavor", "--no-vital-checks", "--std=$VHDLStandard", "-P$DestinationDirectory") + +# extract data from configuration +# $SourceDir = $InstallationDirectory["AlteraQuartus"] + "\quartus\eda\sim_lib" + +$StopCompiling = $false +$ErrorCount = 0 + +# Cleanup directories +# ============================================================================== +if ($Clean) +{ Write-Host "[ERROR]: '-Clean' is not implemented!" -ForegroundColor Red + Exit-CompileScript -1 + + Write-Host "Cleaning up vendor directory ..." -ForegroundColor Yellow + rm *.cf +} + + +# Altera standard libraries +# ============================================================================== +# compile lpm library +if ((-not $StopCompiling) -and $Altera) +{ $Library = "lpm" + $Files = @( + "220pack.vhd", + "220model.vhd" + ) + $SourceFiles = $Files | % { "$SourceDirectory\$_" } + + $ErrorCount += 0 + Start-PackageCompilation $GHDLBinary $GHDLOptions $DestinationDirectory $Library $VHDLVersion $SourceFiles $SuppressWarnings $HaltOnError -Verbose:$EnableVerbose -Debug:$EnableDebug + $StopCompiling = $HaltOnError -and ($ErrorCount -ne 0) +} + +# compile sgate library +if ((-not $StopCompiling) -and $Altera) +{ $Library = "sgate" + $Files = @( + "sgate_pack.vhd", + "sgate.vhd" + ) + $SourceFiles = $Files | % { "$SourceDirectory\$_" } + + $ErrorCount += 0 + Start-PackageCompilation $GHDLBinary $GHDLOptions $DestinationDirectory $Library $VHDLVersion $SourceFiles $SuppressWarnings $HaltOnError -Verbose:$EnableVerbose -Debug:$EnableDebug + $StopCompiling = $HaltOnError -and ($ErrorCount -ne 0) +} + +# compile altera library +if ((-not $StopCompiling) -and $Altera) +{ $Library = "altera" + $Files = @( + "altera_europa_support_lib.vhd", + "altera_primitives_components.vhd", + "altera_primitives.vhd", + "altera_standard_functions.vhd", + "altera_syn_attributes.vhd", + "alt_dspbuilder_package.vhd" + ) + $SourceFiles = $Files | % { "$SourceDirectory\$_" } + + $ErrorCount += 0 + Start-PackageCompilation $GHDLBinary $GHDLOptions $DestinationDirectory $Library $VHDLVersion $SourceFiles $SuppressWarnings $HaltOnError -Verbose:$EnableVerbose -Debug:$EnableDebug + $StopCompiling = $HaltOnError -and ($ErrorCount -ne 0) +} + +# compile altera_mf library +if ((-not $StopCompiling) -and $Altera) +{ $Library = "altera_mf" + $Files = @( + "altera_mf_components.vhd", + "altera_mf.vhd" + ) + $SourceFiles = $Files | % { "$SourceDirectory\$_" } + + $ErrorCount += 0 + Start-PackageCompilation $GHDLBinary $GHDLOptions $DestinationDirectory $Library $VHDLVersion $SourceFiles $SuppressWarnings $HaltOnError -Verbose:$EnableVerbose -Debug:$EnableDebug + $StopCompiling = $HaltOnError -and ($ErrorCount -ne 0) +} + +# compile altera_lnsim library +if ((-not $StopCompiling) -and $Altera) +{ $Library = "altera_lnsim" + $Files = @( + "altera_lnsim_components.vhd" + ) + $SourceFiles = $Files | % { "$SourceDirectory\$_" } + + $ErrorCount += 0 + Start-PackageCompilation $GHDLBinary $GHDLOptions $DestinationDirectory $Library $VHDLVersion $SourceFiles $SuppressWarnings $HaltOnError -Verbose:$EnableVerbose -Debug:$EnableDebug + $StopCompiling = $HaltOnError -and ($ErrorCount -ne 0) +} + +# Altera device libraries +# ============================================================================== +# compile max library +if ((-not $StopCompiling) -and $Max) +{ $Library = "max" + $Files = @( + "max_atoms.vhd", + "max_components.vhd" + ) + $SourceFiles = $Files | % { "$SourceDirectory\$_" } + + $ErrorCount += 0 + Start-PackageCompilation $GHDLBinary $GHDLOptions $DestinationDirectory $Library $VHDLVersion $SourceFiles $SuppressWarnings $HaltOnError -Verbose:$EnableVerbose -Debug:$EnableDebug + $StopCompiling = $HaltOnError -and ($ErrorCount -ne 0) +} + +# compile maxii library +if ((-not $StopCompiling) -and $Max) +{ $Library = "maxii" + $Files = @( + "maxii_atoms.vhd", + "maxii_components.vhd" + ) + $SourceFiles = $Files | % { "$SourceDirectory\$_" } + + $ErrorCount += 0 + Start-PackageCompilation $GHDLBinary $GHDLOptions $DestinationDirectory $Library $VHDLVersion $SourceFiles $SuppressWarnings $HaltOnError -Verbose:$EnableVerbose -Debug:$EnableDebug + $StopCompiling = $HaltOnError -and ($ErrorCount -ne 0) +} + +# compile maxv library +if ((-not $StopCompiling) -and $Max) +{ $Library = "maxv" + $Files = @( + "maxv_atoms.vhd", + "maxv_components.vhd" + ) + $SourceFiles = $Files | % { "$SourceDirectory\$_" } + + $ErrorCount += 0 + Start-PackageCompilation $GHDLBinary $GHDLOptions $DestinationDirectory $Library $VHDLVersion $SourceFiles $SuppressWarnings $HaltOnError -Verbose:$EnableVerbose -Debug:$EnableDebug + $StopCompiling = $HaltOnError -and ($ErrorCount -ne 0) +} + +# compile arriaii library +if ((-not $StopCompiling) -and $Arria) +{ $Library = "arriaii" + $Files = @( + "arriaii_atoms.vhd", + "arriaii_components.vhd", + "arriaii_hssi_components.vhd", + "arriaii_hssi_atoms.vhd" + ) + $SourceFiles = $Files | % { "$SourceDirectory\$_" } + + $ErrorCount += 0 + Start-PackageCompilation $GHDLBinary $GHDLOptions $DestinationDirectory $Library $VHDLVersion $SourceFiles $SuppressWarnings $HaltOnError -Verbose:$EnableVerbose -Debug:$EnableDebug + $StopCompiling = $HaltOnError -and ($ErrorCount -ne 0) +} + +# compile arriaii_pcie_hip library +if ((-not $StopCompiling) -and $Arria) +{ $Library = "arriaii_pcie_hip" + $Files = @( + "arriaii_pcie_hip_components.vhd", + "arriaii_pcie_hip_atoms.vhd" + ) + $SourceFiles = $Files | % { "$SourceDirectory\$_" } + + $ErrorCount += 0 + Start-PackageCompilation $GHDLBinary $GHDLOptions $DestinationDirectory $Library $VHDLVersion $SourceFiles $SuppressWarnings $HaltOnError -Verbose:$EnableVerbose -Debug:$EnableDebug + $StopCompiling = $HaltOnError -and ($ErrorCount -ne 0) +} + +# compile arriaiigz library +if ((-not $StopCompiling) -and $Arria) +{ $Library = "arriaiigz" + $Files = @( + "arriaiigz_atoms.vhd", + "arriaiigz_components.vhd", + "arriaiigz_hssi_components.vhd" + ) + $SourceFiles = $Files | % { "$SourceDirectory\$_" } + + $ErrorCount += 0 + Start-PackageCompilation $GHDLBinary $GHDLOptions $DestinationDirectory $Library $VHDLVersion $SourceFiles $SuppressWarnings $HaltOnError -Verbose:$EnableVerbose -Debug:$EnableDebug + $StopCompiling = $HaltOnError -and ($ErrorCount -ne 0) +} + +# compile arriav library +if ((-not $StopCompiling) -and $Arria) +{ $Library = "arriav" + $Files = @( + "arriav_atoms.vhd", + "arriav_components.vhd", + "arriav_hssi_components.vhd", + "arriav_hssi_atoms.vhd" + ) + $SourceFiles = $Files | % { "$SourceDirectory\$_" } + + $ErrorCount += 0 + Start-PackageCompilation $GHDLBinary $GHDLOptions $DestinationDirectory $Library $VHDLVersion $SourceFiles $SuppressWarnings $HaltOnError -Verbose:$EnableVerbose -Debug:$EnableDebug + $StopCompiling = $HaltOnError -and ($ErrorCount -ne 0) +} + +# compile arriavgz library +if ((-not $StopCompiling) -and $Arria) +{ $Library = "arriavgz" + $Files = @( + "arriavgz_atoms.vhd", + "arriavgz_components.vhd", + "arriavgz_hssi_components.vhd", + "arriavgz_hssi_atoms.vhd" + ) + $SourceFiles = $Files | % { "$SourceDirectory\$_" } + + $ErrorCount += 0 + Start-PackageCompilation $GHDLBinary $GHDLOptions $DestinationDirectory $Library $VHDLVersion $SourceFiles $SuppressWarnings $HaltOnError -Verbose:$EnableVerbose -Debug:$EnableDebug + $StopCompiling = $HaltOnError -and ($ErrorCount -ne 0) +} + +# compile arriavgz_pcie_hip library +if ((-not $StopCompiling) -and $Arria) +{ $Library = "arriavgz_pcie_hip" + $Files = @( + "arriavgz_pcie_hip_components.vhd", + "arriavgz_pcie_hip_atoms.vhd" + ) + $SourceFiles = $Files | % { "$SourceDirectory\$_" } + + $ErrorCount += 0 + Start-PackageCompilation $GHDLBinary $GHDLOptions $DestinationDirectory $Library $VHDLVersion $SourceFiles $SuppressWarnings $HaltOnError -Verbose:$EnableVerbose -Debug:$EnableDebug + $StopCompiling = $HaltOnError -and ($ErrorCount -ne 0) +} + +# compile cycloneiv library +if ((-not $StopCompiling) -and $Cyclone) +{ $Library = "cycloneiv" + $Files = @( + "cycloneiv_atoms.vhd", + "cycloneiv_components.vhd", + "cycloneiv_hssi_components.vhd", + "cycloneiv_hssi_atoms.vhd" + ) + $SourceFiles = $Files | % { "$SourceDirectory\$_" } + + $ErrorCount += 0 + Start-PackageCompilation $GHDLBinary $GHDLOptions $DestinationDirectory $Library $VHDLVersion $SourceFiles $SuppressWarnings $HaltOnError -Verbose:$EnableVerbose -Debug:$EnableDebug + $StopCompiling = $HaltOnError -and ($ErrorCount -ne 0) +} + +# compile cycloneiv_pcie_hip library +if ((-not $StopCompiling) -and $Cyclone) +{ $Library = "cycloneiv_pcie_hip" + $Files = @( + "cycloneiv_pcie_hip_components.vhd", + "cycloneiv_pcie_hip_atoms.vhd" + ) + $SourceFiles = $Files | % { "$SourceDirectory\$_" } + + $ErrorCount += 0 + Start-PackageCompilation $GHDLBinary $GHDLOptions $DestinationDirectory $Library $VHDLVersion $SourceFiles $SuppressWarnings $HaltOnError -Verbose:$EnableVerbose -Debug:$EnableDebug + $StopCompiling = $HaltOnError -and ($ErrorCount -ne 0) +} + +# compile cycloneive library +if ((-not $StopCompiling) -and $Cyclone) +{ $Library = "cycloneive" + $Files = @( + "cycloneive_atoms.vhd", + "cycloneive_components.vhd" + ) + $SourceFiles = $Files | % { "$SourceDirectory\$_" } + + $ErrorCount += 0 + Start-PackageCompilation $GHDLBinary $GHDLOptions $DestinationDirectory $Library $VHDLVersion $SourceFiles $SuppressWarnings $HaltOnError -Verbose:$EnableVerbose -Debug:$EnableDebug + $StopCompiling = $HaltOnError -and ($ErrorCount -ne 0) +} + +# compile cyclonev library +if ((-not $StopCompiling) -and $Cyclone) +{ $Library = "cyclonev" + $Files = @( + "cyclonev_atoms.vhd", + "cyclonev_components.vhd", + "cyclonev_hssi_components.vhd", + "cyclonev_hssi_atoms.vhd" + ) + $SourceFiles = $Files | % { "$SourceDirectory\$_" } + + $ErrorCount += 0 + Start-PackageCompilation $GHDLBinary $GHDLOptions $DestinationDirectory $Library $VHDLVersion $SourceFiles $SuppressWarnings $HaltOnError -Verbose:$EnableVerbose -Debug:$EnableDebug + $StopCompiling = $HaltOnError -and ($ErrorCount -ne 0) +} + +# compile stratixiv library +if ((-not $StopCompiling) -and $Stratix) +{ $Library = "stratixiv" + $Files = @( + "stratixiv_atoms.vhd", + "stratixiv_components.vhd", + "stratixiv_hssi_components.vhd", + "stratixiv_hssi_atoms.vhd" + ) + $SourceFiles = $Files | % { "$SourceDirectory\$_" } + + $ErrorCount += 0 + Start-PackageCompilation $GHDLBinary $GHDLOptions $DestinationDirectory $Library $VHDLVersion $SourceFiles $SuppressWarnings $HaltOnError -Verbose:$EnableVerbose -Debug:$EnableDebug + $StopCompiling = $HaltOnError -and ($ErrorCount -ne 0) +} + +# compile stratixiv_pcie_hip library +if ((-not $StopCompiling) -and $Stratix) +{ $Library = "stratixiv_pcie_hip" + $Files = @( + "stratixiv_pcie_hip_components.vhd", + "stratixiv_pcie_hip_atoms.vhd" + ) + $SourceFiles = $Files | % { "$SourceDirectory\$_" } + + $ErrorCount += 0 + Start-PackageCompilation $GHDLBinary $GHDLOptions $DestinationDirectory $Library $VHDLVersion $SourceFiles $SuppressWarnings $HaltOnError -Verbose:$EnableVerbose -Debug:$EnableDebug + $StopCompiling = $HaltOnError -and ($ErrorCount -ne 0) +} + +# compile stratixv library +if ((-not $StopCompiling) -and $Stratix) +{ $Library = "stratixv" + $Files = @( + "stratixv_atoms.vhd", + "stratixv_components.vhd", + "stratixv_hssi_components.vhd", + "stratixv_hssi_atoms.vhd" + ) + $SourceFiles = $Files | % { "$SourceDirectory\$_" } + + $ErrorCount += 0 + Start-PackageCompilation $GHDLBinary $GHDLOptions $DestinationDirectory $Library $VHDLVersion $SourceFiles $SuppressWarnings $HaltOnError -Verbose:$EnableVerbose -Debug:$EnableDebug + $StopCompiling = $HaltOnError -and ($ErrorCount -ne 0) +} + +# compile stratixv_pcie_hip library +if ((-not $StopCompiling) -and $Stratix) +{ $Library = "stratixv_pcie_hip" + $Files = @( + "stratixv_pcie_hip_components.vhd", + "stratixv_pcie_hip_atoms.vhd" + ) + $SourceFiles = $Files | % { "$SourceDirectory\$_" } + + $ErrorCount += 0 + Start-PackageCompilation $GHDLBinary $GHDLOptions $DestinationDirectory $Library $VHDLVersion $SourceFiles $SuppressWarnings $HaltOnError -Verbose:$EnableVerbose -Debug:$EnableDebug + $StopCompiling = $HaltOnError -and ($ErrorCount -ne 0) +} + +# compile fiftyfivenm library +if ((-not $StopCompiling) -and $Nanometer) +{ $Library = "fiftyfivenm" + $Files = @( + "fiftyfivenm_atoms.vhd", + "fiftyfivenm_components.vhd" + ) + $SourceFiles = $Files | % { "$SourceDirectory\$_" } + + $ErrorCount += 0 + Start-PackageCompilation $GHDLBinary $GHDLOptions $DestinationDirectory $Library $VHDLVersion $SourceFiles $SuppressWarnings $HaltOnError -Verbose:$EnableVerbose -Debug:$EnableDebug + $StopCompiling = $HaltOnError -and ($ErrorCount -ne 0) +} + +# compile twentynm library +if ((-not $StopCompiling) -and $Nanometer) +{ $Library = "twentynm" + $Files = @( + "twentynm_atoms.vhd", + "twentynm_components.vhd", + "twentynm_hip_components.vhd", + "twentynm_hip_atoms.vhd", + "twentynm_hssi_components.vhd", + "twentynm_hssi_atoms.vhd" + ) + $SourceFiles = $Files | % { "$SourceDirectory\$_" } + + $ErrorCount += 0 + Start-PackageCompilation $GHDLBinary $GHDLOptions $DestinationDirectory $Library $VHDLVersion $SourceFiles $SuppressWarnings $HaltOnError -Verbose:$EnableVerbose -Debug:$EnableDebug + $StopCompiling = $HaltOnError -and ($ErrorCount -ne 0) +} + +Write-Host "--------------------------------------------------------------------------------" +Write-Host "Compiling Altera libraries " -NoNewline +if ($ErrorCount -gt 0) +{ Write-Host "[FAILED]" -ForegroundColor Red } +else +{ Write-Host "[SUCCESSFUL]" -ForegroundColor Green } + +Exit-CompileScript -- cgit v1.2.3