From a41a009f2ebec350f0ebbcbf8353223a15cfa557 Mon Sep 17 00:00:00 2001 From: Patrick Lehmann Date: Tue, 7 Jun 2016 20:54:10 +0200 Subject: 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. --- libraries/vendors/compile-xilinx-ise.ps1 | 146 ++++++++++++++++++++++--------- 1 file changed, 106 insertions(+), 40 deletions(-) (limited to 'libraries/vendors/compile-xilinx-ise.ps1') diff --git a/libraries/vendors/compile-xilinx-ise.ps1 b/libraries/vendors/compile-xilinx-ise.ps1 index 7557a5129..610210f6c 100644 --- a/libraries/vendors/compile-xilinx-ise.ps1 +++ b/libraries/vendors/compile-xilinx-ise.ps1 @@ -47,25 +47,32 @@ [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 post-map simulation library. - [switch]$Simprim = $false, + [switch]$Simprim = $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 @@ -96,8 +103,27 @@ elseif ($All -eq $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", "--no-vital-checks", "--warn-binding", "--mb-comments") @@ -120,8 +146,8 @@ if ($Clean) if ((-not $StopCompiling) -and $Unisim) { Write-Host "Compiling library 'unisim' ..." -ForegroundColor Yellow $Options = $GlobalOptions - $Options += "--ieee=synopsys" - $Options += "--std=93c" + $Options += "--ieee=$VHDLFlavor" + $Options += "--std=$VHDLStandard" $Files = ( "$SourceDir\unisims\unisim_VPKG.vhd", "$SourceDir\unisims\unisim_VCOMP.vhd") @@ -129,23 +155,33 @@ 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 + } + } } } # compile unisim primitives if ((-not $StopCompiling) -and $Unisim) { $Options = $GlobalOptions - $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 +189,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 + } + } } } @@ -171,31 +212,41 @@ if ((-not $StopCompiling) -and $Unisim -and $SecureIP) if ((-not $StopCompiling) -and $Unimacro) { Write-Host "Compiling library 'unimacro' ..." -ForegroundColor Yellow $Options = $GlobalOptions - $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 + } + } } } # compile unimacro macros if ((-not $StopCompiling) -and $Unimacro) { $Options = $GlobalOptions - $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 + } + } } } @@ -205,8 +256,8 @@ if ((-not $StopCompiling) -and $Unimacro) if ((-not $StopCompiling) -and $Simprim) { Write-Host "Compiling library 'simprim' ..." -ForegroundColor Yellow $Options = $GlobalOptions - $Options += "--ieee=synopsys" - $Options += "--std=93c" + $Options += "--ieee=$VHDLFlavor" + $Options += "--std=$VHDLStandard" $Files = ( "$SourceDir\simprims\simprim_Vpackage.vhd", "$SourceDir\simprims\simprim_Vcomponents.vhd") @@ -214,8 +265,13 @@ if ((-not $StopCompiling) -and $Simprim) { Write-Host "Analyzing package '$File'" -ForegroundColor Cyan $InvokeExpr = "ghdl.exe " + ($Options -join " ") + " --work=simprim " + $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 + } + } } } @@ -223,15 +279,20 @@ if ((-not $StopCompiling) -and $Simprim) if ((-not $StopCompiling) -and $Simprim) { Write-Host "Compiling library 'simprim' ..." -ForegroundColor Yellow $Options = $GlobalOptions - $Options += "--ieee=synopsys" - $Options += "--std=93c" + $Options += "--ieee=$VHDLFlavor" + $Options += "--std=$VHDLStandard" $Files = dir "$SourceDir\simprims\primitive\other\*.vhd*" foreach ($File in $Files) { Write-Host "Analyzing primitive '$($File.FullName)'" -ForegroundColor Cyan $InvokeExpr = "ghdl.exe " + ($Options -join " ") + " --work=simprim " + $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 + } + } } } @@ -239,21 +300,26 @@ if ((-not $StopCompiling) -and $Simprim) if ((-not $StopCompiling) -and $Simprim -and $SecureIP) { Write-Host "Compiling secureip primitives ..." -ForegroundColor Yellow $Options = $GlobalOptions - $Options += "--ieee=synopsys" - $Options += "--std=93c" + $Options += "--ieee=$VHDLFlavor" + $Options += "--std=$VHDLStandard" $Files = dir "$SourceDir\simprims\secureip\other\*.vhd*" foreach ($File in $Files) { Write-Host "Analyzing primitive '$($File.FullName)'" -ForegroundColor Cyan $InvokeExpr = "ghdl.exe " + ($Options -join " ") + " --work=simprim " + $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 + } + } } } Write-Host "--------------------------------------------------------------------------------" Write-Host "Compiling Xilinx ISE libraries " -NoNewline -if ($StopCompiling) +if ($ErrorCount -gt 0) { Write-Host "[FAILED]" -ForegroundColor Red } else { Write-Host "[SUCCESSFUL]" -ForegroundColor Green } -- cgit v1.2.3