Skip to content

Commit 860462d

Browse files
authored
Docs updates (#1491)
* more docs updates from feedback
1 parent ef51bcb commit 860462d

File tree

14 files changed

+178
-135
lines changed

14 files changed

+178
-135
lines changed
18.2 KB
Loading

docs/source/index.rst

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -85,8 +85,8 @@ improve Adaptive Computing system design:
8585
pynq_libraries
8686
overlay_design_methodology
8787
pynq_sd_card
88-
pynq_package
8988
pynq_remote
89+
pynq_package
9090
faqs
9191
appendix
9292
changelog

docs/source/pynq_remote.rst

Lines changed: 17 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -3,22 +3,30 @@
33
PYNQ.remote
44
===========
55

6-
.. note::
7-
PYNQ.remote is currently in **beta**. Active development is ongoing, and some PYNQ features may have limited support. The API is subject to change in future releases. For more information on currently supported functionality and our development roadmap, see the :ref:`roadmap`.
8-
96
.. toctree::
107
:maxdepth: 1
118
:caption: Contents
129

1310
pynq_remote/quickstart
1411
pynq_remote/image_build
1512
pynq_remote/remote_device
16-
pynq_remote/cppindex
13+
pynq_remote/cpp_index
14+
pynq_remote/status
1715
pynq_remote/env_variables
18-
pynq_remote/roadmap
1916

2017
PYNQ.remote is an extension to the PYNQ framework that enables remote control of AMD's FPGA-based devices. By moving the Python API to the host and communicating with the target device via gRPC, PYNQ.remote brings powerful new deployment, integration, and scalability features to PYNQ users, while preserving the familiar PYNQ user experience.
2118

19+
**Introducing PYNQ.remote**
20+
21+
PYNQ.remote provides two key benefits to PYNQ. First, by moving the Python API to the host machine we create opportunities to integrate PYNQ into host-based hardware and software workflows. This allows users to take full advantage of the Python ecosystem on the host, while still controlling AMD's adaptive SoC devices remotely. This is particularly useful for applications that require high-performance computing, such as AI inference, data processing, or real-time visualisations. This allows the host to handle complex computations, while the FPGA can focus on specialised tasks.
22+
23+
Second, by using a minimal Petalinux image the target device software requirements are reduced to a PYNQ meta-layer and a minimal root file system. Additionally, we have implemented a PYNQ C++ API called `PYNQ.cpp` that runs on the target device, which provides a low-level interface to the hardware. Together, this provides a greatly reduced image size (small enough to fit on a RAM disk) and allows deployment with a minimal software footprint. This is ideal for when resources are constrained, such as edge computing or IoT applications.
24+
25+
The diagram below illustrates the key differences between Classic PYNQ and PYNQ.remote.
26+
27+
.. image:: ./images/pynqremote_block_diagram.png
28+
:align: center
29+
2230
**Key Features**
2331

2432
* Offload the Python API to your host machine, reducing on-target resource requirements.
@@ -35,4 +43,7 @@ PYNQ.remote is an extension to the PYNQ framework that enables remote control of
3543

3644
**Getting Started**
3745

38-
To get started with PYNQ.remote, follow the quickstart guide in :ref:`quickstart`. This will walk you through setting up your environment, deploying the remote image, and running your first remote application.
46+
To get started with PYNQ.remote, follow the :ref:`quickstart` guide. This will walk you through setting up your environment, deploying the remote image, and running your first remote application.
47+
48+
.. note::
49+
PYNQ.remote is currently in **beta**. Active development is ongoing, and some PYNQ features may have limited support. The API is subject to change in future releases. For more information on currently supported functionality see :ref:`status`.
Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
.. _cppindex:
2+
3+
PYNQ.cpp
4+
=====================
5+
6+
.. toctree::
7+
:maxdepth: 2
8+
:caption: Contents
9+
:titlesonly:
10+
11+
pynq_cpp/cpp_usage
12+
pynq_cpp/cpp_install
13+
pynq_cpp/cpp_api
14+
15+
**PYNQ.cpp** is a C++ hardware abstraction library that provides a C++ equivalent to PYNQ's Python API for AMD adaptive SoC platforms.
16+
It delivers the same low-level interface capabilities as PYNQ for interacting with the FPGA fabric, memory management, and device operations.
17+
18+
Like PYNQ's Python API, PYNQ.cpp is part of the PYNQ ecosystem and is specifically designed to work with PYNQ.remote, which allows remote access to PYNQ devices over a network.
19+
PYNQ.remote uses gRPC to communicate with PYNQ devices, allowing remote management of FPGA resources and memory operations.
20+
PYNQ.remote images use a gRPC server to interact with PYNQ.cpp, which provides the necessary C++ backend functionality equivalent to what PYNQ's Python API offers.
21+
22+
Because it exists as a standalone C++ library, PYNQ can be used independently of PYNQ.remote. This allows developers to create custom low-level C++ applications that interact with AMD adaptive SoC platforms using familiar PYNQ concepts.
Lines changed: 0 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -1,32 +0,0 @@
1-
.. _cppindex:
2-
3-
PYNQ.cpp
4-
=====================
5-
6-
.. toctree::
7-
:maxdepth: 2
8-
:caption: PYNQ.cpp Contents
9-
:titlesonly:
10-
11-
pynq_cpp/cppapi
12-
pynq_cpp/cppusage
13-
pynq_cpp/cppinstall
14-
15-
**PYNQ.cpp** is a C++ hardware abstraction library for AMD adaptive SoC platforms.
16-
It provides a low-level interface to interact with the FPGA fabric, memory management, and device operations.
17-
It is part of the PYNQ ecosystem, specifically designed to work with PYNQ.remote, which allows remote access to PYNQ devices over a network.
18-
PYNQ.remote uses gRPC to communicate with PYNQ devices, allowing remote management of FPGA resources and memory operations.
19-
PYNQ.remote images use a gRPC server to interact with PYNQ.cpp, which provides the necessary C++ backend functionality.
20-
21-
PYNQ.cpp is designed to be used in C++ applications running on AMD adaptive SoC platforms, providing a low-level interface to reprogram the FPGA fabric and manage memory.
22-
It is built on top of the Xilinx Runtime (XRT) library, which provides access to the FPGA Manager and other hardware resources.
23-
Because it exists as a standalone C++ library, it can be used independently of PYNQ.remote, allowing developers to create custom low-level applications that interact with PYNQ devices.
24-
25-
Key Features
26-
------------
27-
28-
* Load FPGA bitstreams via the FPGA Manager device driver.
29-
* Manage `xrt::bo` contiguous buffer objects with cacheable host-device memory mapping.
30-
* Perform memory-mapped I/O (MMIO) operations via `/dev/mem`
31-
* Directly synchronize and flush buffers to/from device memory
32-
* Filesystem operations for write/read access to bitstreams and device files.

docs/source/pynq_remote/env_variables.rst

Lines changed: 11 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -13,56 +13,41 @@ You can set environment variables in Python using the ``os`` module. This is use
1313
.. code-block:: python
1414
1515
import os
16-
os.environ['PYNQ_REMOTE_DEVICES'] - "192.168.2.99"
16+
os.environ['PYNQ_REMOTE_DEVICES'] = "192.168.2.99"
1717
1818
Setting an Environment Variable in Linux and macOS
1919
--------------------------------------------------
2020

21-
In Linux and macOS shells, you can set environment variables using the `export` command. Make sure there are no spaces around the `-` sign.
21+
In Linux and macOS shells, you can set environment variables using the ``export`` command. Make sure there are no spaces around the ``=`` sign.
2222

2323
.. code-block:: bash
2424
25-
export PYNQ_REMOTE_DEVICES-"192.168.2.99"
25+
export PYNQ_REMOTE_DEVICES="192.168.2.99"
2626
2727
The code above sets the environment variable for the current shell session. If you use a new terminal or restart your computer you will need to set it again.
2828

29-
This can be made easier in one of two ways. First, you can add the command to a shell file local to your working directory, such as `.env`. Each time you start a new terminal session, you can ``source`` this file to set the environment variable:
30-
31-
.. code-block:: bash
32-
33-
source .env
34-
35-
Alternatively, you can add the command to your shell's configuration file (e.g., `.bashrc`, `.bash_profile`, `.zshrc`), which will set the variable automatically each time you open a new terminal session:
36-
37-
To check if the variable is set, you can use the `echo` command:
38-
39-
.. code-block:: bash
40-
41-
echo $PYNQ_REMOTE_DEVICES
42-
43-
4429
Setting an Environment Variable in Windows
4530
------------------------------------------
4631

47-
In Windows, there are several ways to set environment variables, depending on which shell you are using. For Command Prompt (cmd.exe), you can use the `set` command:
32+
In Windows, there are several ways to set environment variables, depending on which shell you are using. For Command Prompt (`cmd.exe`), you can use the ``set`` command:
4833

4934
.. code-block:: powershell
5035
51-
set PYNQ_REMOTE_DEVICES-192.168.2.99
36+
set PYNQ_REMOTE_DEVICES=192.168.2.99
5237
5338
For Powershell, you can use the ``$env:`` syntax:
5439

5540
.. code-block:: powershell
5641
57-
$env:PYNQ_REMOTE_DEVICES-"192.168.2.99"
42+
$env:PYNQ_REMOTE_DEVICES="192.168.2.99"
5843
5944
Setting an Environment Variable in a Python Virtual Environment
6045
---------------------------------------------------------------
6146

62-
If you are using a Python virtual environment, you can set the environment variable in the `activate` script of your virtual environment. This way, the variable will be set automatically each time you activate the virtual environment.
47+
If you are using a Python virtual environment, you can set the environment variable in the ``activate`` script of your virtual environment. This way, the variable will be set automatically each time you activate the virtual environment.
6348

64-
For example, if you are using a virtual environment named `venv`, you can add the code above in the following directories:
49+
For example, if you are using a virtual environment named ``venv``, you can add the code above in the following directories:
6550

66-
* For Linux/macOS: Add the code above to the `venv/bin/activate`
67-
* For Windows: If using Command Prompt, add the code to `venv/Scripts/activate.bat`
68-
* For Windows: If using PowerShell, add the following line to `venv/Scripts/Activate.ps1`
51+
* For Linux/macOS: Add the code above to the ``venv/bin/activate``
52+
* For Windows: If using Command Prompt, add the code to ``venv/Scripts/activate.bat``
53+
* For Windows: If using PowerShell, add the following line to ``venv/Scripts/Activate.ps1``

docs/source/pynq_remote/image_build.rst

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,9 +10,9 @@ Unlike Classic PYNQ, there are no pre-built PYNQ.remote SD card images available
1010

1111
**Prerequisites:**
1212

13+
- Host machine with Ubuntu 2022.4 OS installed
1314
- AMD Tools: `Vivado, Vitis, and Petalinux version 2024.1 <https://www.xilinx.com/support/download/index.html/content/xilinx/en/downloadNav/vivado-design-tools/2024-1.html>`_
1415
- `Docker installation <https://docs.docker.com/engine/install/>`_
15-
- Supported Linux distribution (see `UG973 <https://docs.amd.com/r/2024.1-English/ug973-vivado-release-notes-install-license/Supported-Operating-Systems>`_)
1616

1717
**Using the Docker-base build flow:**
1818

File renamed without changes.

docs/source/pynq_remote/pynq_cpp/cppinstall.rst renamed to docs/source/pynq_remote/pynq_cpp/cpp_install.rst

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,8 +9,8 @@ Requirements for building PYNQ.cpp
99

1010
Requirements for using PYNQ.cpp on SoC devices.
1111
-----------------------------------------------
12-
- Embedded Linux with FPGA Manager support (``/sys/class/fpga_manager/``)
13-
- Root access on device (for device & filesystem operations)
12+
- Compatible Petalinux image with FPGA Manager support enabled.
13+
- Root access on device (for device & filesystem operations).
1414
- Embedded XRT 2.17 installed on the device.
1515

1616
Build Instructions

docs/source/pynq_remote/pynq_cpp/cppusage.rst renamed to docs/source/pynq_remote/pynq_cpp/cpp_usage.rst

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ C++ API Usage Examples
44
Load a Bitstream
55
----------------
66

7-
To write a bitstream file to the /lib/firmware directory, you can use the `Device` class to write the file directly.
7+
To write a bitstream file to the ``/lib/firmware directory``, you can use the `Device` class to write the file directly.
88

99
.. code-block:: cpp
1010

0 commit comments

Comments
 (0)