diff options
Diffstat (limited to 'doc/building')
-rw-r--r-- | doc/building/VendorPrimitives.rst | 328 | ||||
-rw-r--r-- | doc/building/index.rst | 42 |
2 files changed, 370 insertions, 0 deletions
diff --git a/doc/building/VendorPrimitives.rst b/doc/building/VendorPrimitives.rst new file mode 100644 index 000000000..49c35b5a4 --- /dev/null +++ b/doc/building/VendorPrimitives.rst @@ -0,0 +1,328 @@ +.. _VENDOR: + +Vendor Primitives +############# + +## 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 +vendor libraries, if the vendor tool is present on the computer. + +There are also popular simulation and verification libraries like [OSVVM][osvvm] +and [VUnit][vunit], 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]). + + [osvvm]: http://osvvm.org/ + [vunit]: https://github.com/LarsAsplund/vunit + [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 + - VUnit (for VHDL-2008) + - vunit_lib + +--------------------------------------------------------------------- +### 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`. + + - **Step 1 - Browse to your simulation working directory** + ```Bash + $ cd <MySimulationFolder> + ``` + + - **Step 2 - Start the compilation script(s)** + ```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-vunit.sh --all + ``` + + In most cases GHDL is installed into `/usr/local/`. The scripts are + installed into the `lib` directory. + + - **Step 3 - Viewing the result** + This creates vendor directories in your current working directory and + compiles the vendor files into them. + + ```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 vunit + 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 + ``` + + +--------------------------------------------------------------------- +### Compiling on Windows + + - **Step 0 - Configure the scripts (optional)** + See next section for how to configure `config.psm1`. + + - **Step 1 - Browse to your simulation working directory** + ```PowerShell + PS> cd <MySimulationFolder> + ``` + + - **Step 2 - Start the compilation script(s)** + ```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-vunit.ps1 -All + ``` + + - **Step 3 - Viewing the result** + This creates vendor directories in your current working directory and + compiles the vendor files into them. + + ```PowerShell + PS> dir + Directory: D:\temp\ghdl + + 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> vunit_lib + d---- 20.11.2015 19:06 <DIR> xilinx-ise + d---- 20.11.2015 19:40 <DIR> xilinx-vivado + ``` + +--------------------------------------------------------------------- +### 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/16.0" +InstallationDirectory[LatticeDiamond]="/opt/Diamond/3.8_x64" +InstallationDirectory[OSVVM]="/home/<user>/git/GitHub/osvvm" +InstallationDirectory[VUnit]="/home/<user>/git/GitHub/vunit" +InstallationDirectory[XilinxISE]="/opt/Xilinx/14.7" +InstallationDirectory[XilinxVivado]="/opt/Xilinx/Vivado/2016.3" +``` + +#### 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\16.0"; + "LatticeDiamond" = "C:\Lattice\Diamond\3.8_x64"; + "XilinxISE" = "C:\Xilinx\14.7\ISE_DS"; + "XilinxVivado" = "C:\Xilinx\Vivado\2016.3"; + "OSVVM" = "D:\git\GitHub\osvvm"; + "VUnit" = "D:\git\GitHub\vunit" +} +``` + +### Selectable Options for the Bash Scripts: + +*First I should translate the scripts before writing the docu...* + + - Common parameters to most scripts: + + -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 occured. + - `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-vunit.sh` + Selectable libraries: + + -a --all Compile all. + --osvvm Compile the VUnit 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: + + -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.ps1` + Selectable libraries: + + -All Compile all. + -OSVVM Compile the OSVVM library. + - `compile-vunit.ps1` + Selectable libraries: + + -All Compile all. + -VUnit Compile the VUnit library. + +------------------------ +Author: Patrick Lehmann +Last update: 28.10.2016 + +------------------------ + +.. TODO: topic + + - Vendor Primitives + - Alters / Intel + - Lattice + - OSVVM + - UVVM + - Xilinx ISE + - Xilinx Vivado diff --git a/doc/building/index.rst b/doc/building/index.rst new file mode 100644 index 000000000..d240ff94d --- /dev/null +++ b/doc/building/index.rst @@ -0,0 +1,42 @@ +.. _BUILD: + +Building GHDL +############# + +.. TODO: topic + + `./BUILD.txt <https://github.com/tgingold/ghdl/blob/master/BUILD.txt>`_ + Directory structure of the main branch [1138: #279] + Coverage, `gcov`, is unique to gcc. That specific difference is not explained anywhere. Should be added. + @1138 Backtraces optional -patchable- + +GCC backend +================= + +- ./dist/gcc/INSTALL +- ./gcc/README +- Linux + +LLVM backend +================= + +- Linux +- Mac OS? +- Windows MinGW 32/64 + +Mcode backend +================= + +- ./dist/mcode/README +- Linux +- Windows GNAT GPL (32 only) +- Windows MinGW 32/64 + +Test suites +================= + +---------------- + +.. TODO: topic + + @1138 explain that there are two (maybe three with vhdl08 tests)
\ No newline at end of file |