Skip to content

Commit

Permalink
Deploying to gh-pages from @ 49219de 🚀
Browse files Browse the repository at this point in the history
  • Loading branch information
jakubcabal committed Jan 14, 2025
1 parent a02c9ab commit 9783763
Show file tree
Hide file tree
Showing 222 changed files with 1,845 additions and 21 deletions.
Binary file modified devel/objects.inv
Binary file not shown.
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
.. _axis_asfifox:

AXIS_ASFIFOX
------------

.. vhdl:autoentity:: AXIS_ASFIFOX
4 changes: 2 additions & 2 deletions release/_sources/comp/debug/data_logger/readme.rst.txt
Original file line number Diff line number Diff line change
Expand Up @@ -205,8 +205,8 @@ Example usage of ``logger_stats`` (for more usage see `mem_logger/mem_logger.py`
def create_stats():
# Create DataLoggers
logger_0 = DataLogger(index=0, dev='/dev/nfb0')
logger_1 = DataLogger(index=1, dev='/dev/nfb0')
logger_0 = DataLogger(index=0)
logger_1 = DataLogger(index=1)
# Create Stats hierarchy
stats = Stats.LoggerStats('Example stats')
Expand Down
2 changes: 2 additions & 0 deletions release/_sources/index.rst.txt
Original file line number Diff line number Diff line change
Expand Up @@ -102,12 +102,14 @@ support a subset of these cards. A complete list of supported FPGA cards can be
ndk_cards/silicom/fb2cghh/readme
ndk_cards/silicom/n6010/readme
ndk_cards/bittware/ia-420f/readme
ndk_cards/bittware/ia-440i/readme
ndk_cards/amd/alveo-u200/readme
ndk_cards/amd/alveo-u55c/readme
ndk_cards/amd/vcu118/readme
extra/nfb-200g2ql/readme
ndk_cards/prodesign/pd-falcon/readme
ndk_cards/terasic/a2700/readme
ndk_cards/iwave/g35p/readme

--------

Expand Down
148 changes: 148 additions & 0 deletions release/_sources/ndk_apps/minimal/tests/cocotb/readme.rst.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,148 @@
=====================
Top-level simulations
=====================

The top-level simulations (TLS) are suitable for:

- software testing without access to real acceleration card
- whole design compile and basic functionality check
- address space debugging
- resets, clocks, clock domain crossings check

Basics
======

What simulation includes / excludes
-----------------------------------

The TLS doesn’t simulate IP cores but emulates their I/O signals. The
primary effort is to emulate the Ethernet and PCIe I/O and DMA for the most used FPGA families
(Xilinx US+, Intel P-TILE, Intel E-TILE, ...).

Common tips for cocotb
----------------------

- Use ``sys.stderr`` stream for ModelSim / Questa to achieve instant
display of log:

.. code:: python
logging.basicConfig(stream=sys.stderr, force=True)
- Verbose messages for all loggers except some:

.. code:: python
logging.getLogger().setLevel(logging.INFO)
logging.getLogger("cocotbext.nfb.ext.grpc.server").setLevel(logging.WARNING)
gRPC example
============

This variant enables the usage of external processes and is intended for
manual interaction. The TLS doesn’t contain any real test cases. Instead, it
starts the gRPC server, runs for a specified simulation time (e.g., 10ms), and
expects the user to execute an application that uses the acceleration
card through the ``libnfb`` gRPC extension. The application then generates
I/O read and write requests and the simulator translates them to the bus
interface and back.

A feature in ``libnfb-ext-grpc`` enables simple handling of DMA requests
from the simulated design. If the ``dma_vas`` tag is present in the device
string, the library opens a reverse stream. As soon as the DMA request
arrives in the process, ``libnfb-ext-grpc`` copies data from/to the virtual
address space of the process. Just use the virtual address for
descriptor values. There are no boundary checks and the request can
potentially harm the process, which probably gets killed by ``SIGSEGV``
signal in the case of an error.

The simple DMA request handling is most suitable for a DPDK application;
see the section below.

Prerequisites
-------------

libnfb-ext-grpc.so from the libnfb-ext-grpc package (RPM)

Running
-------

1. Prepare a Python environment and install packages

.. code:: shell
. ./prepare.sh
2. Install specific dependencies for the gRPC-based simulation

.. code:: shell
pip install .[grpc]
3. Run the simulation

.. code:: shell
make COCOTB_MODULE=cocotb_grpc
4. Wait until this message appears in the console

``gRPC server started, listening on 50051. Device string: libnfb-ext-grpc.so:grpc:localhost:50051``

5. Run your software application and specify the device string

.. code:: shell
$ nfb-eth -ri0 -d libnfb-ext-grpc.so:grpc:localhost:50051
DPDK usage
----------

DPDK needs to be executed with the ``--vdev`` argument:

.. code:: shell
sudo dpdk-testpmd --vdev=eth_vdev_nfb,dev=libnfb-ext-grpc.so:grpc+dma_vas:localhost:50051,queue_driver=native --iova-mode=va -- -i
The ``queue_driver=native`` is currently the only supported mode, for which the
``--iova-mode=va`` is essential. The ``dma_vas`` tag also
must be stated in the device string:
``libnfb-ext-grpc.so:grpc+dma_vas:localhost:50051``.

Do not forget to alloc hugepages.

Tips
----

Concurrent processes
^^^^^^^^^^^^^^^^^^^^

The simulation environment can handle requests from multiple running
applications at once. For example: start the ``dpdk-testpmd`` in
interactive mode, enable MACs with ``nfb-eth -e1`` and then type
``start`` in the DPDK app prompt. Be aware that only one application should use
the ``dma_vas`` tag in the device string at a time.

*There is an issue with nfb locks: nfb_comp_lock / nfb_comp_unlock is not
implemented. Two processes mixing requests on one lock-aware component
will probably break its function.*

Locally build libnfb-ext-grpc.so
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

If the gRPC client library is not in the standard system path (``/usr/lib``),
use the full path in the device parameter:

.. code:: shell
nfb-info -d /home/joe/ndk-sw/cmake-build/ext/libnfb-ext-grpc/libnfb-ext-grpc.so:grpc:localhost:50051
Remote access to TLS
^^^^^^^^^^^^^^^^^^^^

Listen on all IP addresses:

``NfbDmaThreadedGrpcServer(ram, dev, addr='0.0.0.0')``

and run the application on another machine with the ``target_addr:port`` string in the device parameter.

61 changes: 61 additions & 0 deletions release/_sources/ndk_cards/bittware/ia-440i/readme.rst.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,61 @@
.. _card_ia-440i:

Bittware IA-440I
----------------

- Card information:
- Vendor: Bittware
- Name: IA-440I
- Ethernet ports: 1x QSFP-DD
- PCIe conectors: Edge connector
- `FPGA Card Website <https://www.bittware.com/fpga/ia-440i/>`_
- FPGA specification:
- FPGA part number: ``AGIB023R18A1E1V``
- Ethernet Hard IP: F-Tile (up to 400G Ethernet)
- PCIe Hard IP: R-Tile (up to PCIe Gen5 x16)

NDK firmware support
^^^^^^^^^^^^^^^^^^^^

- Ethernet cores that are supported in the NDK firmware:
- :ref:`F-Tile in the Network Module <ndk_intel_net_mod>`
- PCIe cores that are supported in the NDK firmware:
- :ref:`R-Tile in the PCIe Module <ndk_intel_pcie_mod>`
- See the ``<NDK-FPGA_root_directory>/cards/bittware/ia-440i/config/card_conf.tcl`` file for supported PCIe configurations.
- Makefile targets for building the NDK firmware (valid for NDK-APP-Minimal, may vary for other apps):
- Use ``make 400g1`` command for firmware with 1x400GE (default).
- Support for booting the NDK firmware using the nfb-boot tool:
- NO.

.. note::

To build the NDK firmware for this card, you must have the Intel Quartus Prime Pro installed, including a valid license.

Boot instructions
^^^^^^^^^^^^^^^^^

Before you can work with the card, you will need to install Bittware's SDK and IA-440i Card Support Package (CSP) on your host system.
To be able to do that, you will also need Python 3 (version >= 3.8) present on your system, so be sure to get that first.
Next, proceed with the following steps:

- Download the Bittware SDK and IA-440i CSP installers from the `Bittware Developer Website <https://developer.bittware.com>`_ (version 2024.2).
- Install both downloaded packages by following the instructions in the Bittware SDK and CSP Installation manual (accessible on the same website).
- Connect your IA-440i card to the host using the dedicated USB cable.

Once this is done, you can check the card status by issuing ``bw_card_list -v``.
If everything is OK (card has been found and is available via USB), you can use the ``bw_bmc_fpga_load`` utility to manage designs for your card.

- To get more info about the usage and available subprograms of the ``bw_bmc_fpga_load`` utility, type ``bw_bmc_fpga_load -h``.
- Use ``bw_bmc_fpga_load table`` to list all stored flash images.
- Use ``bw_bmc_fpga_load program <ia-440i_design_name>.rbf <address>`` to write the image into the configuration flash on the given address.
- Use ``bw_bmc_fpga_load default <ia-440i_design_name>.rbf`` to make your design the default boot option.
- Use ``bw_bmc_fpga_load load <ia-440i_design_name>.rbf`` to configure the fpga with your design from the flash.
- Use ``bw_bmc_fpga_load stream <ia-440i_design_name>.rbf`` to configure the fpga directly without writing it into the flash.

.. note::

All designs stored inside the configuration flash (or directly loaded into the fpga) must be built using the same version of Quartus Prime Pro.

.. warning::

So far, there are features of the nfb framework that are not yet fully supported for this card (e. g. ``nfb-eth -T`` or ``nfb-boot``).
53 changes: 53 additions & 0 deletions release/_sources/ndk_cards/iwave/g35p/readme.rst.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,53 @@
.. _card_g35p:

iWave G35P
-------------

- Card information:
- Vendor: iWave
- Name: G35P
- Ethernet ports: 3x QSFP-DD
- 2x 200G
- 1x 40G
- PCIe conectors: Edge connector
- `FPGA Card Website <https://www.iwavesystems.com/product/smartnic-storage-accelerator-card-zynq-ultrascale/>`_
- FPGA specification:
- FPGA part number: ``xczu19eg-ffvc1760-2-i``
- Ethernet Hard IP: CMAC (up to 100G Ethernet)
- PCIe Hard IP: USP (up to PCIe Gen3 x16)

NDK firmware support
^^^^^^^^^^^^^^^^^^^^

- Ethernet cores that are supported in the NDK firmware:
- :ref:`CMAC in the Network Module <ndk_intel_net_mod>`
- PCIe cores that are supported in the NDK firmware:
- :ref:`USP in the PCIe Module <ndk_intel_pcie_mod>`
- See the ``<NDK-FPGA_root_directory>/card/iwave/g35p/config/card_conf.tcl`` file for supported PCIe configurations.
- Makefile targets for building the NDK firmware (valid for Minimal app, may vary for other apps):
- Use ``make 100g2`` command for firmware with 2x100GbE (default).
- Support for booting the NDK firmware using the nfb-boot tool:
- NO.

Boot instructions
^^^^^^^^^^^^^^^^^

- Set Switch 1 (SW1(3:0)) to SD1 mode:
- SW1(0) - ON
- SW1(1) - OFF
- SW1(2) - ON
- SW1(3) - OFF
- Note that default setting is set to SW1: OFF ON ON OFF
- Note that SW1 is present on the SOM module (under the heatsink)

- Write the BOOT.bin file to the SD card:
- BOOT.bin can be generated by `AMD VitisTM <https://www.amd.com/en/products/software/adaptive-socs-and-fpgas/vitis.html>`
- In order to generate BOOT.bin, it is necessary to have the fsbl.elf file (first stage boot loader) and the generated bit stream.
- [bootloader] zynqmp_fsbl.elf
- [destination_device = pl] fpga.bit

- Insert the SD card into the SD connector at the bottom of the FPGA card.

.. note::

To build the NDK firmware for this card, you must have the Xilinx Vivado installed, including a valid license.
5 changes: 1 addition & 4 deletions release/_sources/ndk_core/doc/eth.rst.txt
Original file line number Diff line number Diff line change
Expand Up @@ -4,16 +4,13 @@
The Network Module
==================

Network Module enables connection of the NDK platform to an Ethernet interface(s).
The Network Module enables connection of the NDK platform to an Ethernet interface(s).
The basic architecture is displayed below.

.. image:: img/network_module_arch.svg
:align: center
:width: 65 %

The Network Module enables connection of the NDK platform to an Ethernet interface(s).
The basic architecture is displayed below.

The Network Module utilizes Ethernet hard IP blocks of the FPGA (Stratix 10, Agilex, or UltraScale+) to implement functions of the Ethernet sublayers.
These hard IP blocks have their unique client interface.
The NDK platform standardly utilizes the MFB protocol (sometimes supported by MVB) for Ethernet frame transfers.
Expand Down
2 changes: 2 additions & 0 deletions release/app-minimal.html
Original file line number Diff line number Diff line change
Expand Up @@ -88,11 +88,13 @@
<li class="toctree-l1"><a class="reference internal" href="ndk_cards/silicom/fb2cghh/readme.html">Silicom fb2CGhh&#64;KU15P</a></li>
<li class="toctree-l1"><a class="reference internal" href="ndk_cards/silicom/n6010/readme.html">Silicom N6010</a></li>
<li class="toctree-l1"><a class="reference internal" href="ndk_cards/bittware/ia-420f/readme.html">Bittware IA-420F</a></li>
<li class="toctree-l1"><a class="reference internal" href="ndk_cards/bittware/ia-440i/readme.html">Bittware IA-440I</a></li>
<li class="toctree-l1"><a class="reference internal" href="ndk_cards/amd/alveo-u200/readme.html">AMD Alveo U200</a></li>
<li class="toctree-l1"><a class="reference internal" href="ndk_cards/amd/alveo-u55c/readme.html">AMD Alveo U55C</a></li>
<li class="toctree-l1"><a class="reference internal" href="ndk_cards/amd/vcu118/readme.html">AMD VCU118&#64;VU9P</a></li>
<li class="toctree-l1"><a class="reference internal" href="ndk_cards/prodesign/pd-falcon/readme.html">PRO DESIGN Falcon</a></li>
<li class="toctree-l1"><a class="reference internal" href="ndk_cards/terasic/a2700/readme.html">Terasic A2700</a></li>
<li class="toctree-l1"><a class="reference internal" href="ndk_cards/iwave/g35p/readme.html">iWave G35P</a></li>
</ul>

</div>
Expand Down
2 changes: 2 additions & 0 deletions release/async.html
Original file line number Diff line number Diff line change
Expand Up @@ -95,11 +95,13 @@
<li class="toctree-l1"><a class="reference internal" href="ndk_cards/silicom/fb2cghh/readme.html">Silicom fb2CGhh&#64;KU15P</a></li>
<li class="toctree-l1"><a class="reference internal" href="ndk_cards/silicom/n6010/readme.html">Silicom N6010</a></li>
<li class="toctree-l1"><a class="reference internal" href="ndk_cards/bittware/ia-420f/readme.html">Bittware IA-420F</a></li>
<li class="toctree-l1"><a class="reference internal" href="ndk_cards/bittware/ia-440i/readme.html">Bittware IA-440I</a></li>
<li class="toctree-l1"><a class="reference internal" href="ndk_cards/amd/alveo-u200/readme.html">AMD Alveo U200</a></li>
<li class="toctree-l1"><a class="reference internal" href="ndk_cards/amd/alveo-u55c/readme.html">AMD Alveo U55C</a></li>
<li class="toctree-l1"><a class="reference internal" href="ndk_cards/amd/vcu118/readme.html">AMD VCU118&#64;VU9P</a></li>
<li class="toctree-l1"><a class="reference internal" href="ndk_cards/prodesign/pd-falcon/readme.html">PRO DESIGN Falcon</a></li>
<li class="toctree-l1"><a class="reference internal" href="ndk_cards/terasic/a2700/readme.html">Terasic A2700</a></li>
<li class="toctree-l1"><a class="reference internal" href="ndk_cards/iwave/g35p/readme.html">iWave G35P</a></li>
</ul>

</div>
Expand Down
2 changes: 2 additions & 0 deletions release/base.html
Original file line number Diff line number Diff line change
Expand Up @@ -92,11 +92,13 @@
<li class="toctree-l1"><a class="reference internal" href="ndk_cards/silicom/fb2cghh/readme.html">Silicom fb2CGhh&#64;KU15P</a></li>
<li class="toctree-l1"><a class="reference internal" href="ndk_cards/silicom/n6010/readme.html">Silicom N6010</a></li>
<li class="toctree-l1"><a class="reference internal" href="ndk_cards/bittware/ia-420f/readme.html">Bittware IA-420F</a></li>
<li class="toctree-l1"><a class="reference internal" href="ndk_cards/bittware/ia-440i/readme.html">Bittware IA-440I</a></li>
<li class="toctree-l1"><a class="reference internal" href="ndk_cards/amd/alveo-u200/readme.html">AMD Alveo U200</a></li>
<li class="toctree-l1"><a class="reference internal" href="ndk_cards/amd/alveo-u55c/readme.html">AMD Alveo U55C</a></li>
<li class="toctree-l1"><a class="reference internal" href="ndk_cards/amd/vcu118/readme.html">AMD VCU118&#64;VU9P</a></li>
<li class="toctree-l1"><a class="reference internal" href="ndk_cards/prodesign/pd-falcon/readme.html">PRO DESIGN Falcon</a></li>
<li class="toctree-l1"><a class="reference internal" href="ndk_cards/terasic/a2700/readme.html">Terasic A2700</a></li>
<li class="toctree-l1"><a class="reference internal" href="ndk_cards/iwave/g35p/readme.html">iWave G35P</a></li>
</ul>

</div>
Expand Down
Loading

0 comments on commit 9783763

Please sign in to comment.