aboutsummaryrefslogtreecommitdiffstats
path: root/doc/getting.rst
diff options
context:
space:
mode:
authorumarcor <unai.martinezcorral@ehu.eus>2021-01-05 22:34:14 +0100
committerumarcor <unai.martinezcorral@ehu.eus>2021-02-01 09:25:35 +0100
commit75ef931f4a7a0a4f3ddca1727d6f63ea6f4d2482 (patch)
tree3696139763213050943781d144a18272a24997c2 /doc/getting.rst
parent835eb73d7c567c3178f6f693153bea3243ecef53 (diff)
downloadghdl-75ef931f4a7a0a4f3ddca1727d6f63ea6f4d2482.tar.gz
ghdl-75ef931f4a7a0a4f3ddca1727d6f63ea6f4d2482.tar.bz2
ghdl-75ef931f4a7a0a4f3ddca1727d6f63ea6f4d2482.zip
doc: reorganise and update
Diffstat (limited to 'doc/getting.rst')
-rw-r--r--doc/getting.rst490
1 files changed, 490 insertions, 0 deletions
diff --git a/doc/getting.rst b/doc/getting.rst
new file mode 100644
index 000000000..4abab4530
--- /dev/null
+++ b/doc/getting.rst
@@ -0,0 +1,490 @@
+.. _PACKAGES:
+
+Getting | Installing
+####################
+
+Package managers
+****************
+
+Package managers of many popular distributions provide pre-built packages of GHDL. This is the case for `apt`
+(Debian/Ubuntu), `dnf` (Fedora), `pacman` (Arch Linux, MSYS2) or `brew` (macOS). Since GHDL supports three different backends
+and two library sets (*regular* or *GPL-compatible*), at least six packages with different features might be available in
+each package manager.
+
+As a rule of thumb, mcode backend is the fastest for analysis and synthesis. It also allows setting the base simulation time
+for speeding up execution. Therefore, it is the recommended pick if available on your platform (x86/amd64, on Windows x86
+only). On other platforms, or for using specific features for co-simulation or code coverage, LLVM or GCC need to be used.
+See further differences between backends in :ref:`BUILD`.
+
+.. _RELEASE:packages:
+
+Nightly packages
+****************
+
+Assets from nightly GHDL builds are available at `github.com/ghdl/ghdl/releases/nightly <https://github.com/ghdl/ghdl/releases/nightly>`__.
+These are mostly meant to be used in Continuous Integration (CI) workflows. Precisely, `setup-ghdl-ci <https://github.com/ghdl/setup-ghdl-ci>`__
+allows to easily setup nightly assets in GitHub Actions workflows.
+
+However, users on Windows (MSYS2) or Ubuntu might want to download the tarballs/zipfiles and extract/install them locally.
+
+.. _GETTING:PrecompVendor:
+
+Precompile Vendor Primitives
+****************************
+
+Vendors like Lattice, Intel (Altera) and Xilinx have their own simulation libraries,
+especially for FPGA primitives, soft and hard macros. These libraries cannot
+be shipped with GHDL, but GHDL offers prepared compile scripts to pre-compile
+these vendor libraries, if the vendor tool is present in the environment. There
+are also popular simulation and verification libraries like OSVVM [#f1]_ or
+UVVM [#f2]_, which can be pre-compiled, too.
+
+The compilation scripts are writen in the shell languages: *PowerShell* for
+*Windows™* and *Bash* for *GNU/Linux*, *MacOS* and *MSYS2*/*MinGW*. The
+compile scripts can colorize the GHDL warning and error lines with the help
+of ``grc/grcat`` [#f4]_.
+
+.. HINT::
+ Vendor precompile scripts for OSVVM and UVVM are tested periodically in `ghdl/extended-tests <https://github.com/ghdl/extended-tests>`__.
+
+Supported Vendors Libraries
+===========================
+
+* Lattice (3.6 or later):
+
+ * ``ec``
+ * ``ecp``, ``ecp2``, ``ecp3``, ``ecp5u``
+ * ``lptm``, ``lptm2``
+ * ``machxo``, ``machxo2``, ``machxo3l``, ``machxo3d``
+ * ``sc``, ``scm``
+ * ``xp``, ``xp2``
+ * ...
+
+* Intel (Altera) Quartus (13.0 or later):
+
+ * ``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``
+ * ...
+
+* Xilinx ISE (14.0 or later):
+
+ * ``unisim`` (incl. ``secureip``)
+ * ``unimacro``
+ * ``simprim`` (incl. ``secureip``)
+ * ``xilinxcorelib``
+
+* Xilinx Vivado (2014.1 or later):
+
+ * ``unisim`` (incl. ``secureip``)
+ * ``unimacro``
+
+Supported Simulation and Verification Libraries
+===============================================
+
+* OSVVM [#f1]_ (for VHDL-2008)
+* UVVM [#f2]_ (for VHDL-2008)
+
+
+---------------------------------------------------------------------
+
+Script Configuration
+====================
+
+The vendor library compile scripts need to know where the used / latest vendor
+tool chain is installed. Therefore, the scripts implement a default installation
+directory search as well as environment variable checks. If a vendor tool cannot
+be detected or the script chooses the wrong vendor library source directory,
+then it's possible to provide the path via ``--source`` (Bash) or ``-Source``
+(PoSh).
+
+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`` (Bash) or ``-Output`` (PoSh).
+
+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`` (Bash) or
+``-GHDL`` (PoSh) to the scripts.
+
+If the vendor library compilation is used very often, it's recommend to configure
+these parameters in ``config.sh`` (Bash) or ``config.psm1`` (PoSh), so the command
+line can be shortened to the essential parts.
+
+---------------------------------------------------------------------
+
+Compiling in Bash
+=================
+
+The provided Bash scripts support these environments:
+
+* Linux
+* MacOS
+* MSYS2 / MinGW
+* WSL (Windows Subsystem for Linux)
+
+
+Follow these steps:
+
+* **Step 0 - Configure the scripts (optional)**
+
+ See the next section for how to configure ``config.sh``.
+
+* **Step 1 - Browse to your simulation working directory**
+
+ .. code-block:: Bash
+
+ $ cd <MySimulationFolder>
+
+
+* **Step 2 - Start the compilation script(s)**
+
+ Choose one or multiple of the following scripts to run the pre-compilation
+ process.
+
+ .. code-block:: Bash
+
+ $ /usr/local/lib/ghdl/vendors/compile-altera.sh --all
+ $ /usr/local/lib/ghdl/vendors/compile-intel.sh --all
+ $ /usr/local/lib/ghdl/vendors/compile-lattice.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-xilinx-ise.sh --all
+ $ /usr/local/lib/ghdl/vendors/compile-xilinx-vivado.sh --all
+
+
+ In most cases GHDL is installed into ``/usr/local/``. The scripts are
+ installed into the ``lib\ghdl\vendors`` directory.
+
+* **Step 3 - Viewing the result**
+
+ This creates vendor directories in your current working directory and
+ compiles the vendor files into them.
+
+
+ .. code-block:: Bash
+
+ $ ls -ahl
+ ...
+ drwxr-xr-x 2 <user> <group> 56K Mar 09 17:41 altera
+ drwxr-xr-x 2 <user> <group> 56K Mar 09 17:42 intel
+ drwxr-xr-x 2 <user> <group> 56K Mar 09 17:42 lattice
+ drwxr-xr-x 2 <user> <group> 56K Mar 09 17:48 osvvm
+ drwxr-xr-x 2 <user> <group> 56K Mar 09 17:58 uvvm
+ drwxr-xr-x 2 <user> <group> 56K Mar 09 17:58 xilinx-ise
+ drwxr-xr-x 2 <user> <group> 56K Mar 09 17:48 xilinx-vivado
+
+
+
+---------------------------------------------------------------------
+
+Compiling in PowerShell
+=======================
+
+The provided PowerShell scripts support these environments:
+
+* Windows™ 10 (PowerShell 5 and PowerShell 6)
+
+
+Follow these steps:
+
+* **Step 0 - Configure the scripts (optional)**
+
+ See the next section for how to configure ``config.psm1``.
+
+* **Step 1 - Browse to your simulation working directory**
+
+ .. code-block:: PowerShell
+
+ PS> cd <MySimulationFolder>
+
+* **Step 2 - Start the compilation script(s)**
+
+ Choose one or multiple of the following scripts to run the pre-compilation
+ process.
+
+ .. code-block:: PowerShell
+
+ PS> <GHDL>\lib\ghdl\vendors\compile-altera.ps1 -All
+ PS> <GHDL>\lib\ghdl\vendors\compile-intel.ps1 -All
+ PS> <GHDL>\lib\ghdl\vendors\compile-lattice.ps1 -All
+ PS> <GHDL>\lib\ghdl\vendors\compile-osvvm.ps1 -All
+ PS> <GHDL>\lib\ghdl\vendors\compile-uvvm.ps1 -All
+ PS> <GHDL>\lib\ghdl\vendors\compile-xilinx-ise.ps1 -All
+ PS> <GHDL>\lib\ghdl\vendors\compile-xilinx-vivado.ps1 -All
+
+ .. # In most cases GHDL is installed into ``/usr/local/``.
+
+ The scripts are installed into the ``lib\ghdl\vendors`` directory.
+
+* **Step 3 - Viewing the result**
+
+ This creates vendor directories in your current working directory and
+ compiles the vendor files into them.
+
+ .. code-block::
+
+ PS> dir
+ Directory: D:\temp\ghdl
+
+ Mode LastWriteTime Length Name
+ ---- ------------- ------ ----
+ d---- 09.03.2018 19:33 <DIR> altera
+ d---- 09.03.2018 19:38 <DIR> intel
+ d---- 09.03.2018 19:38 <DIR> lattice
+ d---- 09.03.2018 19:38 <DIR> osvvm
+ d---- 09.03.2018 19:45 <DIR> uvvm
+ d---- 09.03.2018 19:06 <DIR> xilinx-ise
+ d---- 09.03.2018 19:40 <DIR> xilinx-vivado
+
+
+---------------------------------------------------------------------
+
+Configuration Files
+===================
+
+For Bash: `config.sh`
+---------------------
+
+Please open the ``config.sh`` file and set the dictionary entries for the
+installed vendor tools to your tool's installation directories. Use an empty
+string ``""`` for not installed tools.
+
+``config.sh``:
+
+.. code-block:: Bash
+
+ declare -A InstallationDirectory
+ InstallationDirectory[AlteraQuartus]="/opt/Altera/16.0"
+ InstallationDirectory[IntelQuartus]="/opt/intelFPGA/20.1"
+ InstallationDirectory[LatticeDiamond]="/opt/Diamond/3.10_x64"
+ InstallationDirectory[OSVVM]="/home/<user>/git/GitHub/OSVVM"
+ InstallationDirectory[UVVM]="/home/<user>/git/GitHub/UVVM"
+ InstallationDirectory[XilinxISE]="/opt/Xilinx/14.7"
+ InstallationDirectory[XilinxVivado]="/opt/Xilinx/Vivado/2020.2"
+
+
+For PowerShell: `config.psm1`
+-----------------------------
+
+Please open the ``config.psm1`` file and set the dictionary entries for the
+installed vendor tools to your tool's installation
+folder. Use an empty string ``""`` for not installed tools.
+
+``config.psm1``:
+
+.. code-block:: PowerShell
+
+ $InstallationDirectory = @{
+ "AlteraQuartus" = "C:\Altera\16.0";
+ "IntelQuartus" = "C:\Altera\20.1";
+ "LatticeDiamond" = "C:\Lattice\Diamond\3.10_x64";
+ "XilinxISE" = "C:\Xilinx\14.7\ISE_DS";
+ "XilinxVivado" = "C:\Xilinx\Vivado\2020.2";
+ "OSVVM" = "C:\git\GitHub\OSVVM";
+ "UVVM" = "C:\git\GitHub\UVVM"
+ }
+
+
+Additional Script Parameters
+============================
+
+Each script supports partial compilations e.g. of shared packages and
+individual parts. In addition, the amount of printout to the console can be
+controlled. Some scripts may offer vendor specific options.
+
+
+For Bash Scripts:
+-----------------
+
+* Common parameters to most scripts:
+
+ .. code-block:: none
+
+ --help, -h Print the embedded help page(s).
+ --clean, -c Cleanup directory before analyzing.
+ --no-warnings, -n Don't show warnings. Report errors only.
+ --skip-existing, -s Skip already compiled files (an *.o file exists).
+ --skip-largefiles, -S Don't compile large entities like DSP and PCIe primitives.
+ --halt-on-error, -H Stop compiling if an error occurred.
+
+* ``compile-altera.sh``
+
+ Selectable libraries:
+
+ .. code-block:: none
+
+ --all, -a 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:
+
+ .. code-block:: none
+
+ --vhdl93 Compile selected libraries with VHDL-93 (default).
+ --vhdl2008 Compile selected libraries with VHDL-2008.
+
+* ``compile-xilinx-ise.sh``
+
+ Selectable libraries:
+
+ .. code-block:: none
+
+ --all, -a 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:
+
+ .. code-block:: none
+
+ --vhdl93 Compile selected libraries with VHDL-93 (default).
+ --vhdl2008 Compile selected libraries with VHDL-2008.
+
+* ``compile-xilinx-vivado.sh``
+
+ Selectable libraries:
+
+ .. code-block:: none
+
+ --all, -a 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:
+
+ .. code-block:: none
+
+ --vhdl93 Compile selected libraries with VHDL-93 (default).
+ --vhdl2008 Compile selected libraries with VHDL-2008.
+
+* ``compile-osvvm.sh``
+
+ Selectable libraries:
+
+ .. code-block:: none
+
+ --all, -a Compile all.
+ --osvvm Compile the OSVVM library.
+
+* ``compile-uvvm.sh``
+
+ Selectable libraries:
+
+ .. code-block:: none
+
+ --all, -a Compile all.
+ --uvvm Compile the UVVM libraries.
+
+
+For PowerShell Scripts:
+-----------------------
+
+* Common parameters to all scripts:
+
+ .. code-block:: none
+
+ -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:
+
+ .. code-block:: none
+
+ -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:
+
+ .. code-block:: none
+
+ -VHDL93 Compile selected libraries with VHDL-93 (default).
+ -VHDL2008 Compile selected libraries with VHDL-2008.
+
+* ``compile-xilinx-ise.ps1``
+
+ Selectable libraries:
+
+ .. code-block:: none
+
+ -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:
+
+ .. code-block:: none
+
+ -VHDL93 Compile selected libraries with VHDL-93 (default).
+ -VHDL2008 Compile selected libraries with VHDL-2008.
+
+* ``compile-xilinx-vivado.ps1``
+
+ Selectable libraries:
+
+ .. code-block:: none
+
+ -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:
+
+ .. code-block:: none
+
+ -VHDL93 Compile selected libraries with VHDL-93 (default).
+ -VHDL2008 Compile selected libraries with VHDL-2008.
+
+* ``compile-osvvm.ps1``
+
+ Selectable libraries:
+
+ .. code-block:: none
+
+ -All Compile all.
+ -OSVVM Compile the OSVVM library.
+
+* ``compile-uvvm.ps1``
+
+ Selectable libraries:
+
+ .. code-block:: none
+
+ -All Compile all.
+ -UVVM Compile the UVVM libraries.
+
+--------------------------------------------------------------------------------
+
+.. container:: footnotes
+
+ .. rubric:: Footnotes
+
+ .. [#f1] OSVVM http://github.com/OSVVM/OSVVM
+ .. [#f2] UVVM https://github.com/UVVM/UVVM_All
+ .. [#f4] Generic Colourizer http://kassiopeia.juls.savba.sk/~garabik/software/grc.html