diff options
Diffstat (limited to 'libraries/vendors/README.md')
-rw-r--r-- | libraries/vendors/README.md | 290 |
1 files changed, 45 insertions, 245 deletions
diff --git a/libraries/vendors/README.md b/libraries/vendors/README.md index a5d154283..72fbaee65 100644 --- a/libraries/vendors/README.md +++ b/libraries/vendors/README.md @@ -1,111 +1,42 @@ -## Compile Scripts for Vendor VHDL Libraries +# Compile Scripts for Vendor VHDL Libraries Vendors like Altera, Lattice and Xilinx have their own simulation libraries, -especially for FPGA primitives, soft and hard macros. These libraries can not be -shipped with GHDL, but we offer prepared compile scripts to pre-compile the +especially for FPGA primitives, soft and hard macros. These libraries cannot be +shipped with GHDL, but GHDL offers prepared compile scripts to pre-compile the vendor libraries, if the vendor tool is present on the computer. There are also popular simulation and verification libraries like [OSVVM][osvvm] and [UVVM][uvvm], which can be pre-compile, too. The compilation scripts are writen in the shell languages: PowerShell for Windows -and Bash for Linux. The compile scripts can colorize the GHDL warning and error -lines with the help of grc/grcat ([generic colourizer][grc]). +and Bash for Linux, MacOS, MSYS2/MinGW. The compile scripts can colorize the GHDL +warning and error lines with the help of grc/grcat ([generic colourizer][grc]). [osvvm]: http://osvvm.org/ [uvvm]: https://github.com/UVVM/UVVM_All [grc]: http://kassiopeia.juls.savba.sk/~garabik/software/grc.html -##### Supported Vendors Libraries - - - Altera Quartus (≥13.0): - - lpm, sgate - - altera, altera_mf, altera_lnsim - - 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 - - Lattice (≥3.6): - - ec - - ecp, ecp2, ecp3, ecp5u - - lptm, lptm2 - - machxo, machxo2, machxo3l - - sc, scm - - xp, xp2 - - Xilinx ISE (≥14.0): - - unisim (incl. secureip) - - unimacro - - simprim (incl. secureip) - - xilinxcorelib - - Xilinx Vivado (≥2014.1): - - unisim (incl. secureip) - - unimacro - -##### Supported Simulation and Verification Libraries - - - OSVVM (for VHDL-2008) - - osvvm - - UVVM (for VHDL-2008) - - uvvm-utilities - - uvvm-vvc-framework - - uvvm-vip-avalon_mm - - uvvm-vip-axi_lite - - uvvm-vip-axi_stream - - uvvm-vip-gpio - - uvvm-vip-i2c - - uvvm-vip-sbi - - uvvm-vip-spi - - uvvm-vip-uart +See the [GHDL Documentation](https://ghdl.github.io/ghdl) for a detailed +documentation on how to use [Precompile Scripts](https://ghdl.github.io/ghdl/getting/PrecompileVendorPrimitives.html) --------------------------------------------------------------------- -### Script Configuration - -The vendor library compile scripts need to know where the used / latest vendor -tool chain is installed. Therefore, the script implement a default installation -directory search as well as environment variable checks. If a vendor tool could -not be detected or the script choses the wrong vendor library source directory, -then it's possible to provide the path via `--source` or `-Source`. -The generated output is stored relative to the current working directory. The -scripts create a sub-directory for each vendor. The default output directory can -be overwritten by the parameter `--output` or `-Output`. - -To compile all source files with GHDL, the simulator executable is searched in -`PATH`. The found default GHDL executable can be overwritten by setting the -environment variable `GHDL` or by passing the parameter `--ghdl` or `-GHDL` to -the scripts. - -If the vendor library compilation is used very often, we recommend to configure -these parameters in `config.sh` or `config.psm1`, so the command line can be -shortened to the essential parts. - ---------------------------------------------------------------------- -### Compiling on Linux - - - **Step 0 - Configure the scripts (optional)** - See next section for how to configure `config.sh`. +## Quick Start +### Compiling in Bash (e.g. Linux) - **Step 1 - Browse to your simulation working directory** ```Bash $ cd <MySimulationFolder> ``` - - **Step 2 - Start the compilation script(s)** + - **Step 2 - Start the compilation script(s)** + Choose one of the provided pre-compilation scripts and run: ```Bash - $ /usr/local/lib/ghdl/vendors/compile-altera.sh --all - $ /usr/local/lib/ghdl/vendors/compile-lattice.sh --all - $ /usr/local/lib/ghdl/vendors/compile-xilinx-ise.sh --all - $ /usr/local/lib/ghdl/vendors/compile-xilinx-vivado.sh --all - $ /usr/local/lib/ghdl/vendors/compile-osvvm.sh --all - $ /usr/local/lib/ghdl/vendors/compile-uvvm.sh --all + $ /usr/local/lib/ghdl/vendors/compile-osvvm.sh --all --source ../path/to/osvvm ``` In most cases GHDL is installed into `/usr/local/`. The scripts are - installed into the `lib` directory. + installed into the `lib/ghdl/vendors` directory. - **Step 3 - Viewing the result** This creates vendor directories in your current working directory and @@ -114,34 +45,25 @@ shortened to the essential parts. ```Bash $ ls -ahl ... - drwxr-xr-x 2 <user> <group> 56K Nov 30 17:41 altera - drwxr-xr-x 2 <user> <group> 56K Nov 30 17:42 lattice drwxr-xr-x 2 <user> <group> 56K Nov 30 17:48 osvvm - drwxr-xr-x 2 <user> <group> 56K Nov 30 17:58 uvvm - drwxr-xr-x 2 <user> <group> 56K Nov 30 17:58 xilinx-ise - drwxr-xr-x 2 <user> <group> 56K Nov 30 17:48 xilinx-vivado + drwxr-xr-x 2 <user> <group> 56K Nov 30 17:58 osvvm_common + drwxr-xr-x 2 <user> <group> 56K Nov 30 17:58 osvvm_axi4 + drwxr-xr-x 2 <user> <group> 56K Nov 30 17:48 osvvm_uart ``` --------------------------------------------------------------------- -### Compiling on Windows - - - **Step 0 - Configure the scripts (optional)** - See next section for how to configure `config.psm1`. +### Compiling in PowerShell (e.g. Windows) - **Step 1 - Browse to your simulation working directory** ```PowerShell PS> cd <MySimulationFolder> ``` - - **Step 2 - Start the compilation script(s)** + - **Step 2 - Start the compilation script(s)** + Choose one of the provided pre-compilation scripts and run: ```PowerShell - PS> <GHDL>\libraries\vendors\compile-altera.ps1 -All - PS> <GHDL>\libraries\vendors\compile-lattice.ps1 -All - PS> <GHDL>\libraries\vendors\compile-xilinx-ise.ps1 -All - PS> <GHDL>\libraries\vendors\compile-xilinx-vivado.ps1 -All - PS> <GHDL>\libraries\vendors\compile-osvvm.ps1 -All - PS> <GHDL>\libraries\vendors\compile-uvvm.ps1 -All + PS> <GHDL>\libraries\vendors\compile-osvvm.ps1 -All -Source ..\path\to\osvvm ``` - **Step 3 - Viewing the result** @@ -154,167 +76,45 @@ shortened to the essential parts. Mode LastWriteTime Length Name ---- ------------- ------ ---- - d---- 20.11.2015 19:33 <DIR> altera - d---- 20.11.2015 19:38 <DIR> lattice - d---- 20.11.2015 19:38 <DIR> osvvm - d---- 20.11.2015 19:45 <DIR> uvvm - d---- 20.11.2015 19:06 <DIR> xilinx-ise - d---- 20.11.2015 19:40 <DIR> xilinx-vivado + d---- 20.11.2019 19:38 <DIR> osvvm + d---- 20.11.2019 19:45 <DIR> osvvm_common + d---- 20.11.2019 19:06 <DIR> osvvm_axi4 + d---- 20.11.2019 19:40 <DIR> osvvm_uart ``` --------------------------------------------------------------------- -### Configuration Files - -#### For Linux: `config.sh` - -Please open the `config.sh` file and set the dictionary entries for the -installed vendor tools to the appropriate directory to your tool's installation -directories. Use an empty string `""` for not installed tools. - -`config.sh`: -```Bash -declare -A InstallationDirectory -InstallationDirectory[AlteraQuartus]="/opt/Altera/17.1" -InstallationDirectory[LatticeDiamond]="/opt/Diamond/3.8_x64" -InstallationDirectory[OSVVM]="/home/<user>/git/GitHub/osvvm" -InstallationDirectory[UVVM]="/home/<user>/git/GitHub/uvvm_all" -InstallationDirectory[XilinxISE]="/opt/Xilinx/14.7" -InstallationDirectory[XilinxVivado]="/opt/Xilinx/Vivado/2017.4" -``` - -#### For Windows: `config.psm1` - -Please open the `config.psm1` file and set the dictionary entries for the -installed vendor tools to the appropriate directory to your tool's installation -folder. Use an empty string `""` for not installed tools. -`config.psm1`: -```PowerShell -$InstallationDirectory = @{ - "AlteraQuartus" = "C:\Altera\17.1"; - "LatticeDiamond" = "C:\Lattice\Diamond\3.8_x64"; - "XilinxISE" = "C:\Xilinx\14.7\ISE_DS"; - "XilinxVivado" = "C:\Xilinx\Vivado\2017.4"; - "OSVVM" = "D:\git\GitHub\osvvm"; - "UVVM" = "D:\git\GitHub\uvvm_all" -} -``` +## Options -### Selectable Options for the Bash Scripts: +Each script has an integrated help. Use `script.sh --help` (Bash) or +`script.ps1 -Help` (PoSh) to print all options. When setting verbose or debug +mode, scripts will print more information or all commands executed by +the script itself. -*First I should translate the scripts before writing the docu...* +With `--source` (Bash) or `-Source` (PoSh) the 3rd party libraries VHDL +directory can be specified. With `-output` (Bash) or `-Output` (PoSh) the +output directory can be specified. If GHDL is not automatically found, then +the path to the GHDL executable can be specified with `--ghdl` (Bash) or +`-GHDL` (PoSh). - - Common parameters to most scripts: +For a detailed documentation and all command line options see +[Precompile Scripts](https://ghdl.github.io/ghdl/getting/PrecompileVendorPrimitives.html) - -h --help Print the embedded help page(s). - -c --clean Cleanup directory before analyzing. - -n --no-warnings Don't show warnings. Report errors only. - -s --skip-existing Skip already compiled files (an *.o file exists). - -S --skip-largefiles Don't compile large entities like DSP and PCIe primitives. - -H --halt-on-error Stop compiling if an error occurred. - - `compile-altera.sh` - Selectable libraries: - -a --all Compile all libraries, including common libraries, packages and device libraries. - --altera Compile base libraries like 'altera' and 'altera_mf' - --max Compile device libraries for Max CPLDs - --arria Compile device libraries for Arria FPGAs - --cyclone Compile device libraries for Cyclone FPGAs - --stratix Compile device libraries for Stratix FPGAs - Compile options: - - --vhdl93 Compile selected libraries with VHDL-93 (default). - --vhdl2008 Compile selected libraries with VHDL-2008. - - `compile-xilinx-ise.sh` - Selectable libraries: - - -a --all Compile all libraries, including common libraries, packages and device libraries. - --unisim Compile the unisim primitives - --unimacro Compile the unimacro macros - --simprim Compile the simprim primitives - --corelib Compile the xilinxcorelib macros - --secureip Compile the secureip primitives - Compile options: - - --vhdl93 Compile selected libraries with VHDL-93 (default). - --vhdl2008 Compile selected libraries with VHDL-2008. - - `compile-xilinx-vivado.sh` - Selectable libraries: - - -a --all Compile all libraries, including common libraries, packages and device libraries. - --unisim Compile the unisim primitives - --unimacro Compile the unimacro macros - --secureip Compile the secureip primitives - Compile options: - - --vhdl93 Compile selected libraries with VHDL-93 (default). - --vhdl2008 Compile selected libraries with VHDL-2008. - - `compile-osvvm.sh` - Selectable libraries: - - -a --all Compile all. - --osvvm Compile the OSVVM library. - - `compile-uvvm.sh` - Selectable libraries: - - -a --all Compile all. - --uvvm Compile the UVVM library. - -### Selectable Options for the PowerShell Scripts: - - - Common parameters to all scripts: - - -Help Print the embedded help page(s). - -Clean Cleanup directory before analyzing. - -SuppressWarnings Don't show warnings. Report errors only. - - `compile-altera.ps1` - Selectable libraries: - - -All Compile all libraries, including common libraries, packages and device libraries. - -Altera Compile base libraries like 'altera' and 'altera_mf' - -Max Compile device libraries for Max CPLDs - -Arria Compile device libraries for Arria FPGAs - -Cyclone Compile device libraries for Cyclone FPGAs - -Stratix Compile device libraries for Stratix FPGAs - Compile options: - - -VHDL93 Compile selected libraries with VHDL-93 (default). - -VHDL2008 Compile selected libraries with VHDL-2008. - - `compile-xilinx-ise.ps1` - Selectable libraries: - - -All Compile all libraries, including common libraries, packages and device libraries. - -Unisim Compile the unisim primitives - -Unimacro Compile the unimacro macros - -Simprim Compile the simprim primitives - -CoreLib Compile the xilinxcorelib macros - -Secureip Compile the secureip primitives - Compile options: +--------------------------------------------------------------------- - -VHDL93 Compile selected libraries with VHDL-93 (default). - -VHDL2008 Compile selected libraries with VHDL-2008. - - `compile-xilinx-vivado.ps1` - Selectable libraries: +## TODOs - -All Compile all libraries, including common libraries, packages and device libraries. - -Unisim Compile the unisim primitives - -Unimacro Compile the unimacro macros - -Secureip Compile the secureip primitives - Compile options: +- OSVVM + - switch / search directories if normal OSVVM or OsvvmLibraries is specified as source - -VHDL93 Compile selected libraries with VHDL-93 (default). - -VHDL2008 Compile selected libraries with VHDL-2008. - - `compile-osvvm.ps1` - Selectable libraries: +- Bash scripts + - Verify `--source` is used instead of `--src` - -All Compile all. - -OSVVM Compile the OSVVM library. - - `compile-uvvm.ps1` - Selectable libraries: +- Missing features + - Implement `--clean` commands - -All Compile all. - -UVVM Compile the UVVM library. ------------------------ Author: Patrick Lehmann -Last update: 11.03.2018 +Last update: 14.01.2020 |