diff options
author | Patrick Lehmann <Patrick.Lehmann@tu-dresden.de> | 2016-06-07 20:54:10 +0200 |
---|---|---|
committer | tgingold <tgingold@users.noreply.github.com> | 2016-06-07 20:54:10 +0200 |
commit | a41a009f2ebec350f0ebbcbf8353223a15cfa557 (patch) | |
tree | 44e1d7374c4aa7bea4f8541296f18c70b087682d /libraries/vendors/compile-xilinx-vivado.ps1 | |
parent | 20259a7f396e03c5bfce9237fd5732eb931e3d23 (diff) | |
download | ghdl-a41a009f2ebec350f0ebbcbf8353223a15cfa557.tar.gz ghdl-a41a009f2ebec350f0ebbcbf8353223a15cfa557.tar.bz2 ghdl-a41a009f2ebec350f0ebbcbf8353223a15cfa557.zip |
Paebbels/master (#75)
* Obviously, this is the initial commit on a .gitignore file.
* Implemented vendor specific compile scripts for: Altera Quartus-II (tested with 15.0), Xilinx ISE (tested with 14.7) and OSVVM.
* Minor fixes.
* First version of a README file for the vendor specific library compile scripts.
* Vendor specific simulation library compile scripts: Improved error handling by stream processing. Extracted configuration into a config.ps1 file.
* Minor fixes.
* Added Unisim SecureIP primitives. Added Unimacro library.
* Fixed file encoding of compile-osvvm.ps1. Implemented a 'advanced functions' to restore ghdl warning/error messages as a one-liner.
* Splitted Xilinx compile scripts into *-ise.ps1 and *-vivado.ps1.
* Added compile script for VUnit.
* Updated README.md for the vendor compile scripts.
* Added file headers. Change config.ps1 and shared.ps1 to a PowerShell module (*.psm1).
* Fixed embedded help pages in all compile scripts.
* Fixed all errors in compile script for Vivado simulation libraries: *_retarget_VCOMP.vhd was missing.
* First steps towards compile scripts for Linux.
* Translated lines from Windows script to Linux script.
* Step 3 - colors and basic control blocks.
* Changed copyright line in file header.
* Changed copyright line in file header.
* Added colorizer rules. Added skip mode for existing object files. Added cleanup mode.
* Disabled vital checks in Xilinx's simprim library. Fixed typo.
* Added '-Clean' parameter to cleanup the directory before analyzing.
* Added a new '-Help' switch to all compile scripts to show the embedded help page(s).
* Generalized config.sh. Fixed some bugs in compile-xilinx-ise.sh.
* Added command line argument parsing.
* Fixed syntax errors on Linux.
* Added --all option. Generalized GHDL parameters.
* Added '--skip-largefile' option.
* Added the 'stop compiling' feature (not working).
* Updated README.md for vendor specific compile scripts.
* Implemented a check if grcat is installed on the system. Added support to execute the script from an other directory. Changed file size test from 'du -b' to 'wc -b'.
* Fixed exit code problem in pipes. Fixed word count problem.
* Minor fixes.
* Fixed possible syntax error.
* Implemented vendor specific library compile script for OSVVM.
* Implemented vendor specific library compile script for VUnit.
* Enabled disabled messages. Fixed typos.
* Implemented vendor specific library compile script for Xilinx Vivado.
* Minor fixes.
* Implemented vendor specific library compile script for Altera Quartus-II.
* Applied chmod to all new compile scripts.
* Minor fixes.
* Fixed typos.
* Implemented 'halt-on-error' feature.
* Fixed relative path problem for grcat.
* README updates.
* Updated PoSh scripts for
- IEEE library compilation (complib.ps1)
- added VITAL2000 support for VHDL-2008
- minor fixes
- vendor compile scripts
- added VHDL93 and VHDL2008 switches to compile vendor libraries with VHDL-2008
- minor fixes
* Updated vendor library compile scripts (Bash) for Linux, too.
* Fixed error in vendor library compile scripts for osvvm and vunit.
* Windows compile scripts for mcode backend: Reworked compile.ps1.
* Changed default output directory to xilinx-ise and xilinx-vivado.
* compile-altera.sh: Skip large files
* Updated compile script for OSVVM.
* Improved OSVVM compile script for Linux.
Diffstat (limited to 'libraries/vendors/compile-xilinx-vivado.ps1')
-rw-r--r-- | libraries/vendors/compile-xilinx-vivado.ps1 | 122 |
1 files changed, 88 insertions, 34 deletions
diff --git a/libraries/vendors/compile-xilinx-vivado.ps1 b/libraries/vendors/compile-xilinx-vivado.ps1 index 8e46825a8..8628b278f 100644 --- a/libraries/vendors/compile-xilinx-vivado.ps1 +++ b/libraries/vendors/compile-xilinx-vivado.ps1 @@ -46,22 +46,29 @@ [CmdletBinding()] param( # Compile all libraries and packages. - [switch]$All = $null, + [switch]$All = $false, # Compile the Xilinx simulation library. - [switch]$Unisim = $false, + [switch]$Unisim = $false, # Compile the Xilinx macro library. - [switch]$Unimacro = $false, + [switch]$Unimacro = $false, # Compile the Xilinx secureip library. - [switch]$SecureIP = $false, + [switch]$SecureIP = $false, + + # Set VHDL Standard to '93 + [switch]$VHDL93 = $false, + # Set VHDL Standard to '08 + [switch]$VHDL2008 = $false, # Clean up directory before analyzing. - [switch]$Clean = $false, + [switch]$Clean = $false, # Skip warning messages. (Show errors only.) [switch]$SuppressWarnings = $false, + # Halt on errors + [switch]$HaltOnError = $false, # Show the embedded help page(s) [switch]$Help = $false @@ -84,16 +91,33 @@ Import-Module $PSScriptRoot\shared.psm1 $SourceDir = $InstallationDirectory["XilinxVivado"] + "\data\vhdl\src" $DestinationDir = $DestinationDirectory["XilinxVivado"] -if (-not $All) -{ $All = $false } -elseif ($All -eq $true) +if ($All -eq $true) { $Unisim = $true $Simprim = $true $Unimacro = $true $SecureIP = $true } -$StopCompiling = $false +if ($VHDL93 -eq $true) +{ $VHDLStandard = "93c" + $VHDLFlavor = "synopsys" + $DestinationDir += ".v93" +} +elseif ($VHDL2008 -eq $true) +{ $VHDLStandard = "08" + $VHDLFlavor = "standard" + $DestinationDir += ".v08" + Write-Host "Not all Xilinx primitives are VHDL-2008 compatible! Setting HaltOnError to FALSE." -ForegroundColor Red + $HaltOnError = $false +} +else +{ $VHDLStandard = "93c" + $VHDLFlavor = "synopsys" + $DestinationDir += ".v93" +} + +$StopCompiling = $false +$ErrorCount = 0 # define global GHDL Options $GlobalOptions = ("-a", "-fexplicit", "-frelaxed-rules", "--warn-binding", "--mb-comments") @@ -117,8 +141,8 @@ if ((-not $StopCompiling) -and $Unisim) { Write-Host "Compiling library 'unisim' ..." -ForegroundColor Yellow $Options = $GlobalOptions $Options += "--no-vital-checks" - $Options += "--ieee=synopsys" - $Options += "--std=93c" + $Options += "--ieee=$VHDLFlavor" + $Options += "--std=$VHDLStandard" $Files = ( "$SourceDir\unisims\unisim_VPKG.vhd", "$SourceDir\unisims\unisim_VCOMP.vhd", @@ -128,8 +152,13 @@ if ((-not $StopCompiling) -and $Unisim) { Write-Host "Analyzing package '$File'" -ForegroundColor Cyan $InvokeExpr = "ghdl.exe " + ($Options -join " ") + " --work=unisim " + $File + " 2>&1" $ErrorRecordFound = Invoke-Expression $InvokeExpr | Restore-NativeCommandStream | Write-ColoredGHDLLine $SuppressWarnings - $StopCompiling = ($LastExitCode -ne 0) - if ($StopCompiling) { break } + if ($LastExitCode -ne 0) + { $ErrorCount += 1 + if ($HaltOnError) + { $StopCompiling = $true + break + } + } } } @@ -137,15 +166,20 @@ if ((-not $StopCompiling) -and $Unisim) if ((-not $StopCompiling) -and $Unisim) { $Options = $GlobalOptions $Options += "--no-vital-checks" - $Options += "--ieee=synopsys" - $Options += "--std=93c" + $Options += "--ieee=$VHDLFlavor" + $Options += "--std=$VHDLStandard" $Files = dir "$SourceDir\unisims\primitive\*.vhd*" foreach ($File in $Files) { Write-Host "Analyzing primitive '$($File.FullName)'" -ForegroundColor Cyan $InvokeExpr = "ghdl.exe " + ($Options -join " ") + " --work=unisim " + $File.FullName + " 2>&1" $ErrorRecordFound = Invoke-Expression $InvokeExpr | Restore-NativeCommandStream | Write-ColoredGHDLLine $SuppressWarnings - $StopCompiling = ($LastExitCode -ne 0) - if ($StopCompiling) { break } + if ($LastExitCode -ne 0) + { $ErrorCount += 1 + if ($HaltOnError) + { $StopCompiling = $true + break + } + } } } @@ -153,15 +187,20 @@ if ((-not $StopCompiling) -and $Unisim) if ((-not $StopCompiling) -and $Unisim) { $Options = $GlobalOptions $Options += "--no-vital-checks" - $Options += "--ieee=synopsys" - $Options += "--std=93c" + $Options += "--ieee=$VHDLFlavor" + $Options += "--std=$VHDLStandard" $Files = dir "$SourceDir\unisims\retarget\*.vhd*" foreach ($File in $Files) { Write-Host "Analyzing retarget primitive '$($File.FullName)'" -ForegroundColor Cyan $InvokeExpr = "ghdl.exe " + ($Options -join " ") + " --work=unisim " + $File.FullName + " 2>&1" $ErrorRecordFound = Invoke-Expression $InvokeExpr | Restore-NativeCommandStream | Write-ColoredGHDLLine $SuppressWarnings - $StopCompiling = ($LastExitCode -ne 0) - #if ($StopCompiling) { break } + if ($LastExitCode -ne 0) + { $ErrorCount += 1 + if ($HaltOnError) + { $StopCompiling = $true + # break + } + } } } @@ -169,15 +208,20 @@ if ((-not $StopCompiling) -and $Unisim) if ((-not $StopCompiling) -and $Unisim -and $SecureIP) { Write-Host "Compiling library secureip primitives ..." -ForegroundColor Yellow $Options = $GlobalOptions - $Options += "--ieee=synopsys" - $Options += "--std=93c" + $Options += "--ieee=$VHDLFlavor" + $Options += "--std=$VHDLStandard" $Files = dir "$SourceDir\unisims\secureip\*.vhd*" foreach ($File in $Files) { Write-Host "Analyzing primitive '$($File.FullName)'" -ForegroundColor Cyan $InvokeExpr = "ghdl.exe " + ($Options -join " ") + " --work=secureip " + $File.FullName + " 2>&1" $ErrorRecordFound = Invoke-Expression $InvokeExpr | Restore-NativeCommandStream | Write-ColoredGHDLLine $SuppressWarnings - $StopCompiling = ($LastExitCode -ne 0) - if ($StopCompiling) { break } + if ($LastExitCode -ne 0) + { $ErrorCount += 1 + if ($HaltOnError) + { $StopCompiling = $true + break + } + } } } @@ -188,16 +232,21 @@ if ((-not $StopCompiling) -and $Unimacro) { Write-Host "Compiling library 'unimacro' ..." -ForegroundColor Yellow $Options = $GlobalOptions $Options += "--no-vital-checks" - $Options += "--ieee=synopsys" - $Options += "--std=93c" + $Options += "--ieee=$VHDLFlavor" + $Options += "--std=$VHDLStandard" $Files = @( "$SourceDir\unimacro\unimacro_VCOMP.vhd") foreach ($File in $Files) { Write-Host "Analyzing package '$File'" -ForegroundColor Cyan $InvokeExpr = "ghdl.exe " + ($Options -join " ") + " --work=unimacro " + $File + " 2>&1" $ErrorRecordFound = Invoke-Expression $InvokeExpr | Restore-NativeCommandStream | Write-ColoredGHDLLine $SuppressWarnings - $StopCompiling = ($LastExitCode -ne 0) - if ($StopCompiling) { break } + if ($LastExitCode -ne 0) + { $ErrorCount += 1 + if ($HaltOnError) + { $StopCompiling = $true + break + } + } } } @@ -205,15 +254,20 @@ if ((-not $StopCompiling) -and $Unimacro) if ((-not $StopCompiling) -and $Unimacro) { $Options = $GlobalOptions $Options += "--no-vital-checks" - $Options += "--ieee=synopsys" - $Options += "--std=93c" + $Options += "--ieee=$VHDLFlavor" + $Options += "--std=$VHDLStandard" $Files = dir "$SourceDir\unimacro\*_MACRO.vhd*" foreach ($File in $Files) { Write-Host "Analyzing primitive '$($File.FullName)'" -ForegroundColor Cyan $InvokeExpr = "ghdl.exe " + ($Options -join " ") + " --work=unimacro " + $File.FullName + " 2>&1" $ErrorRecordFound = Invoke-Expression $InvokeExpr | Restore-NativeCommandStream | Write-ColoredGHDLLine $SuppressWarnings - $StopCompiling = ($LastExitCode -ne 0) - #if ($StopCompiling) { break } + if ($LastExitCode -ne 0) + { $ErrorCount += 1 + if ($HaltOnError) + { $StopCompiling = $true + # break + } + } } } @@ -223,7 +277,7 @@ if ((-not $StopCompiling) -and $Unimacro) Write-Host "--------------------------------------------------------------------------------" Write-Host "Compiling Xilinx Vivado libraries " -NoNewline -if ($StopCompiling) +if ($ErrorCount -gt 0) { Write-Host "[FAILED]" -ForegroundColor Red } else { Write-Host "[SUCCESSFUL]" -ForegroundColor Green } |