-
Notifications
You must be signed in to change notification settings - Fork 6
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Deploying to gh-pages from @ 49219de 🚀
- Loading branch information
1 parent
a02c9ab
commit 9783763
Showing
222 changed files
with
1,845 additions
and
21 deletions.
There are no files selected for viewing
Binary file not shown.
6 changes: 6 additions & 0 deletions
6
release/_sources/comp/axis_tools/storage/asfifox/readme.rst.txt
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,6 @@ | ||
.. _axis_asfifox: | ||
|
||
AXIS_ASFIFOX | ||
------------ | ||
|
||
.. vhdl:autoentity:: AXIS_ASFIFOX |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
148 changes: 148 additions & 0 deletions
148
release/_sources/ndk_apps/minimal/tests/cocotb/readme.rst.txt
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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
61
release/_sources/ndk_cards/bittware/ia-440i/readme.rst.txt
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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``). |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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. |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.