===========================
Install
===========================
TL;DR
==============================
.. code-block:: bash
git clone https://github.com/Xilinx/RapidWright.git
cd RapidWright
./gradlew compileJava
export PATH=`pwd`/bin:$PATH
What You Need to Get Started
==============================
1. Java (1.8 minimum, 11 or later recommended) - Any distribution such as `Adoptium
`_ should work. If you already have Vivado,
it includes Java, see :ref:`Using Java distributed with Vivado` below on how to use it.
2. `Git `_ (source revision control
system)
3. [Optional] If you are running Linux and want to run the GUI portion of RapidWright, you may need an older libpng12 library. For those running Debian/Ubuntu-based distros, try the following:
.. warning:: Older versions of libpng have been found to have several vulnerabilities and is only needed for GUI use. Installing this deprecated library should be taken with caution based on the risk of the operating environment.
.. code-block:: bash
wget -O /tmp/libpng12.deb https://snapshot.debian.org/archive/debian/20160413T160058Z/pool/main/libp/libpng/libpng12-0_1.2.54-6_amd64.deb && sudo dpkg -i /tmp/libpng12.deb && rm /tmp/libpng12.deb
For CentOS/RedHat/Fedora distros, try the following:
.. code-block:: bash
sudo yum install libpng12
Additional Recommendations
============================
1. `Vivado Design Suite 2018.3 or later `_ (Not essential to run RapidWright, but makes it useful)
2. An IDE such as `IntelliJ `_ or `Eclipse `_
RapidWright includes the `Gradle Wrapper `_ (automatic build tool), so a
Gradle installation is not necessary.
Install Steps
========================
The easiest way to get RapidWright setup is to simply run these commands:
**Linux (** ``/bin/sh`` **or compatible):**
.. code-block:: bash
git clone https://github.com/Xilinx/RapidWright.git
cd RapidWright
./gradlew compileJava
export PATH=`pwd`/bin:$PATH
.. note:: C-style shells (``csh`` or ``tcsh``) should replace the last line with ``setenv PATH `pwd`/bin:$PATH``
**Windows (** ``cmd.exe`` **):**
.. code-block:: bat
git clone https://github.com/Xilinx/RapidWright.git
cd RapidWright
.\gradlew compileJava
set "PATH=%CD%\bin;%PATH%"
.. note:: For Windows Powershell users, replace the last line with ``$env:PATH="$pwd\bin;$env:PATH"``
This will clone a copy of RapidWright from GitHub, download jar
dependencies, compile the Java code and add the ``rapidwright`` wrapper to your ``PATH``. Checking out and compiling
the code can also be accomplished by using an IDE (see
:ref:`RapidWright Eclipse Setup` or :ref:`RapidWright IntelliJ Setup`).
To perform a quick test to ensure RapidWright is setup correctly, try
running the following:
.. code-block:: bash
rapidwright DeviceBrowser
.. note:: If you prefer to run with ``java`` directly (you'll need to set the ``CLASSPATH`` appropriately, see :ref:`CLASSPATH` below for details), the same tool can be invoked with: ``java com.xilinx.rapidwright.device.browser.DeviceBrowser``
You should see the GUI come up similar to this screenshot:
.. image:: images/DeviceBrowser.png
:width: 550px
:align: center
If you have gotten to this point, congrats! Your RapidWright install
is correctly configured and you are ready to start experimenting.
RapidWright Wrapper
=====================================
Some may be new to Java so RapidWright has included a ``rapidwright``
wrapper script (``rapidwright.bat`` for Windows users) that manages
setting the Java class path and provides a handy interface to the
various use modes. The directions above add the wrapper to the
``PATH``.
The ``rapidwright`` wrapper has the following options (printed when run without parameters):
.. code-block:: bash
rapidwright com.xilinx.rapidwright. -- to execute main() method of Java class
rapidwright -- to execute a specific application
rapidwright --list-apps -- to list all available applications
rapidwright jython -- to enter interactive Jython shell
rapidwright jython -c "..." -- to execute specific Jython command
To pass options to ``java``, it is recommended to use the ``_JAVA_OPTIONS`` environment
variable, for example:
.. code-block:: bash
_JAVA_OPTIONS=-Xmx32736m rapidwright RWRoute
This will set the Java Virtual Machine (JVM) upper heap memory limit to ~32GBs. This
limit is useful as it is the largest heap size available by default without causing
all references to expand from 4 bytes to 8 bytes.
Vivado Compatibility & Versioning
=====================================
RapidWright aims to be as compatible as possible with Vivado in terms of the device models
it offers and its ability to load design checkpoints (DCPs) as far back as 2018.2.
RapidWright versioning intends to indicate to the user what the latest version of Vivado
for which it will be compatible. For example, RapidWright 2023.1.0 will be compatible
with Vivado 2023.1 and previous versions back to 2018.2. Conversely, a DCP created in
Vivado 2023.1 will likely not be readable in previous versions of RapidWright
(2022.2.0, 2022.1.0, etc). This also is true for device models. If a device is released
in Vivado 2023.1, it won't be available in previous versions of RapidWright.
Notes for Advanced/Legacy Users:
=====================================
Using Java distributed with Vivado
------------------------------------
The easiest way to find out where the Java runtime is packaged with
your installation of Vivado, is to run the following at the Vivado Tcl
prompt:
.. code-block:: tcl
which java
Based on where your installed Vivado is located, it should produce a
full path, something like this:
.. code-block:: tcl
/opt/Vivado/2022.2/tps/lnx64/jre11.0.11_9/bin/java
To use this version of Java instead of the system Java or installing
it, simply update your ``PATH`` and ``JAVA_HOME`` environment variables:
.. code-block:: bash
export PATH=/opt/Vivado/2022.2/tps/lnx64/jre11.0.11_9/bin:$PATH
export JAVA_HOME=/opt/Vivado/2022.2/tps/lnx64/jre11.0.11_9
Or, if using Windows, search for "edit environment variables"
and add a new entry for ``PATH`` and ``JAVA_HOME`` appropriately.
CLASSPATH
-----------
Java has the notion of a ``CLASSPATH``, this is a list of locations where
``java`` can look for compiled Java code (``.class`` files or ``.jar``
files) to execute at runtime. The ``CLASSPATH`` can be set on the command
line (``java -cp ``) or it can be set via the
environment variable ``CLASSPATH``. If a script to set the ``CLASSPATH``
variable (in Linux) is desired, the following command can be run:
.. code-block:: bash
echo "export CLASSPATH=`pwd`/bin:`pwd`/jars/*" > bin/rapidwright_classpath.sh
This sets up the environment so the ``-cp bin:jars/*`` classpath option doesn't need to be set
as an argument when invoking ``java``, for example:
.. code-block:: bash
source bin/rapidwright_classpath.sh
java com.xilinx.rapidwright.device.browser.DeviceBrowser
Should start the ``DeviceBrowser`` just as before.
RAPIDWRIGHT_PATH
--------------------
The environment variable ``RAPIDWRIGHT_PATH`` is no longer required.
RapidWright data files have a default location (see
:ref:`RapidWright Data Files`). To override the default location, the
environment variable ``RAPIDWRIGHT_PATH`` can be set and the data files will be
placed in ``$RAPIDWRIGHT_PATH/data``.
RapidWright Installer (Obsolete)
==================================
The RapidWright installer is no longer the preferred method of
installation. Please use the steps above, it is included below for
legacy purposes.
1. Download :download:`rapidwright-installer.jar ` (or run command below in Linux) to the directory where you would like RapidWright to reside.
.. code-block:: bash
wget http://www.rapidwright.io/docs/_downloads/rapidwright-installer.jar
2. From a terminal in that directory, run (To open a terminal on Windows, search and run 'cmd.exe' from the Start orb):
.. code-block:: bash
java -jar rapidwright-installer.jar
3. Use one of the BASH/CSH/BAT scripts created at the end of the install to set the proper environment variables for subsequent invocations of RapidWright.
4. Setup your IDE (if applicable):
* :ref:`RapidWright Eclipse Setup`
* :ref:`RapidWright IntelliJ Setup`
Once complete, you can run the DeviceBrowser within your respective IDE to test the installation.