Skip to content

Commit

Permalink
Merge branch 'release/2021.1'
Browse files Browse the repository at this point in the history
  • Loading branch information
cahz committed Jul 26, 2021
2 parents 8b21b7f + 60eb950 commit 8f77c7c
Show file tree
Hide file tree
Showing 79 changed files with 5,500 additions and 531 deletions.
38 changes: 38 additions & 0 deletions .editorconfig
@@ -0,0 +1,38 @@
root = true

[*]
end_of_line = lf
insert_final_newline = true
trim_trailing_whitespace = true
charset = utf-8

[*.{v,md,rpt,xml}]
charset = unset
end_of_line = unset
insert_final_newline = unset
trim_trailing_whitespace = unset
indent_style = unset
indent_size = unset

[Makefile]
indent_style = tab

[*.{sh,py,rs}]
indent_style = space
indent_size = 4

[*.{tcl,scala}]
indent_style = space
indent_size = 2

[{runtime,toolflow}/bin/*]
indent_style = space
indent_size = 4

[runtime/kernel/**.{c,h}]
indent_style = tab

[runtime/**.{c,h,cpp,hpp}]
indent_style = space
indent_size = 2

33 changes: 24 additions & 9 deletions .gitlab-ci.yml
Expand Up @@ -109,7 +109,7 @@ build_scala_tapasco_centos_8:
- ./gradlew buildRPM
artifacts:
paths:
- toolflow/scala/build/distributions/tapasco-2020-10.x86_64.rpm
- toolflow/scala/build/distributions/tapasco-2021-01.x86_64.rpm

build_scala_tapasco_fedora_30:
image: fedora:30
Expand All @@ -136,7 +136,7 @@ build_scala_tapasco_fedora_31:
- ./gradlew buildDEB
artifacts:
paths:
- toolflow/scala/build/distributions/tapasco_2020-10_amd64.deb
- toolflow/scala/build/distributions/tapasco_2021-01_amd64.deb

build_scala_tapasco_ubuntu_16_04:
image: ubuntu:xenial
Expand Down Expand Up @@ -265,6 +265,7 @@ build_kernel_fedora_31_debug:
variables:
PACKAGE_TYPE: "RPM"
before_script:
- dnf -y update libarchive
- dnf -y install kernel-devel make gcc gcc-c++ elfutils-libelf-devel cmake ncurses-devel python3 libatomic git rpm-build curl
artifacts:
paths:
Expand Down Expand Up @@ -392,11 +393,12 @@ tapasco_compose_ubuntu:
- source $XILINX_VIVADO/settings64.sh
- apt-get -y update
- apt-get -y install libtinfo5 build-essential
- apt -y install ./toolflow/scala/build/distributions/tapasco_2020-10_amd64.deb
- apt -y install ./toolflow/scala/build/distributions/tapasco_2021-01_amd64.deb
- /opt/tapasco/tapasco-init-toolflow.sh
- source tapasco-setup-toolflow.sh
- tapasco -v hls counter -p pynq
- tapasco -v --maxThreads 3 compose [counter x 3] @ 100 MHz -p pynq
- tapasco -v hls arrayinit -p pynq
- tapasco import toolflow/examples/Counter.zip as 14 -p pynq
- tapasco -v --maxThreads 3 compose [arrayinit x 2, Counter x 3] @ 100 MHz -p pynq

.tapasco_compose:
stage: build_hw
Expand All @@ -419,12 +421,13 @@ tapasco_compose_ubuntu:
script:
- source $XILINX_VIVADO/settings64.sh
- which vivado
- which vivado_hls
- dnf -y install toolflow/scala/build/distributions/tapasco-2020-10.x86_64.rpm
- which vivado_hls || which vitis_hls
- dnf -y install toolflow/scala/build/distributions/tapasco-2021-01.x86_64.rpm
- /opt/tapasco/tapasco-init-toolflow.sh
- source tapasco-setup-toolflow.sh
- tapasco hls counter -p $PLATFORM --skipEvaluation
- tapasco -v --maxThreads 3 compose [counter x 3] @ 100 MHz -p $PLATFORM $FLAGS
- tapasco hls arrayinit -p $PLATFORM --skipEvaluation
- tapasco import toolflow/examples/Counter.zip as 14 -p $PLATFORM --skipEvaluation
- tapasco -v --maxThreads 3 compose [arrayinit x 2, Counter x 3] @ 100 MHz -p $PLATFORM $FLAGS

tapasco_compose_17_4:
variables:
Expand Down Expand Up @@ -462,6 +465,18 @@ tapasco_compose_20_1:
XILINX_VIVADO: "/opt/cad/xilinx/vitis/Vivado/${VIVADO_VERSION}"
extends: .tapasco_compose

tapasco_compose_20_2:
variables:
VIVADO_VERSION: "2020.2"
XILINX_VIVADO: "/opt/cad/xilinx/vitis/Vivado/${VIVADO_VERSION}"
extends: .tapasco_compose

tapasco_compose_21_1:
variables:
VIVADO_VERSION: "2021.1"
XILINX_VIVADO: "/opt/cad/xilinx/vitis/Vivado/${VIVADO_VERSION}"
extends: .tapasco_compose

tapasco_compose_pcie:
variables:
VIVADO_VERSION: "2018.3"
Expand Down
46 changes: 15 additions & 31 deletions README.md
Expand Up @@ -22,6 +22,12 @@ Next to the setup and usage instructions in this README, you can find additional

We welcome contributions from anyone interested in this field, check the [contributor's guide](https://github.com/esa-tu-darmstadt/tapasco/wiki/Contributor's-Guide) for more information.

Supported FPGA devices
----------------------

* Zynq-based: PYNQ-Z1, ZC706, ZedBoard, Ultra96V2, ZCU102
* PCIe cards: VC709, NetFPGA-SUME, VCU108, VCU118, VCU1525, Alveo U250, Alveo U280, BittWare XUP-VVH


System Requirements
-------------------
Expand Down Expand Up @@ -189,40 +195,18 @@ A List of publications about TaPaSCo or TaPaSCo-related research can be found [h

If you want to cite TaPaSCo, please use the following information:

[Korinth2019] Korinth, Jens, Jaco Hofmann, Carsten Heinz, and Andreas Koch. 2019. **The
Tapasco Open-Source Toolflow for the Automated Composition of Task-Based
Parallel Reconfigurable Computing Systems.** In *International Symposium
on Applied Reconfigurable Computing (Arc)*.
[Heinz2021a] Heinz, Carsten, Jaco Hofmann, Jens Korinth, Lukas Sommer, Lukas Weber, and Andreas Koch. 2021. **The
Tapasco Open-Source Toolflow.** In *Journal of Signal Processing Systems*.

Releases
----------------

We provided pre-compiled packages for many popular Linux distributions. All packages are build for the x86_64 variant.

| Distribution | Kernel Driver | Kernel Driver (Debug) | Runtime | Runtime (Debug) | Toolflow |
|:-------------|:-------------:|:---------------------:|:-------:|:---------------:|:--------:|
| Ubuntu 16.04 | [Download](https://git.esa.informatik.tu-darmstadt.de/tapasco/tapasco/-/jobs/artifacts/master/raw/runtime/kernel/tlkm.ko?job=build_kernel_ubuntu_16_04) | [Download](https://git.esa.informatik.tu-darmstadt.de/tapasco/tapasco/-/jobs/artifacts/master/raw/runtime/kernel/tlkm.ko?job=build_kernel_ubuntu_16_04_debug) | [DEB](https://git.esa.informatik.tu-darmstadt.de/tapasco/tapasco/-/jobs/artifacts/master/raw/build/tapasco-2021.01.0-Linux.deb?job=build_tapasco_ubuntu_16_04) | [DEB](https://git.esa.informatik.tu-darmstadt.de/tapasco/tapasco/-/jobs/artifacts/master/raw/build/tapasco-2021.01.0-Linux.deb?job=build_tapasco_ubuntu_16_04_debug) | [DEB](https://git.esa.informatik.tu-darmstadt.de/tapasco/tapasco/-/jobs/artifacts/master/raw/toolflow/scala/build/distributions/tapasco_2021-01_amd64.deb?job=build_scala_tapasco_ubuntu_16_04) |
| Ubuntu 18.04 | [Download](https://git.esa.informatik.tu-darmstadt.de/tapasco/tapasco/-/jobs/artifacts/master/raw/runtime/kernel/tlkm.ko?job=build_kernel_ubuntu_18_04) | [Download](https://git.esa.informatik.tu-darmstadt.de/tapasco/tapasco/-/jobs/artifacts/master/raw/runtime/kernel/tlkm.ko?job=build_kernel_ubuntu_18_04_debug) | [DEB](https://git.esa.informatik.tu-darmstadt.de/tapasco/tapasco/-/jobs/artifacts/master/raw/build/tapasco-2021.01.0-Linux.deb?job=build_tapasco_ubuntu_18_04) | [DEB](https://git.esa.informatik.tu-darmstadt.de/tapasco/tapasco/-/jobs/artifacts/master/raw/build/tapasco-2021.01.0-Linux.deb?job=build_tapasco_ubuntu_18_04_debug) | [DEB](https://git.esa.informatik.tu-darmstadt.de/tapasco/tapasco/-/jobs/artifacts/master/raw/toolflow/scala/build/distributions/tapasco_2021-01_amd64.deb?job=build_scala_tapasco_ubuntu_18_04) |
| Fedora 30 | [Download](https://git.esa.informatik.tu-darmstadt.de/tapasco/tapasco/-/jobs/artifacts/master/raw/runtime/kernel/tlkm.ko?job=build_kernel_fedora_30) | [Download](https://git.esa.informatik.tu-darmstadt.de/tapasco/tapasco/-/jobs/artifacts/master/raw/runtime/kernel/tlkm.ko?job=build_kernel_fedora_30_debug) | [RPM](https://git.esa.informatik.tu-darmstadt.de/tapasco/tapasco/-/jobs/artifacts/master/raw/build/tapasco-2021.01.0-Linux.rpm?job=build_tapasco_fedora_30) | [RPM](https://git.esa.informatik.tu-darmstadt.de/tapasco/tapasco/-/jobs/artifacts/master/raw/build/tapasco-2021.01.0-Linux.rpm?job=build_tapasco_fedora_30_debug) | [RPM](https://git.esa.informatik.tu-darmstadt.de/tapasco/tapasco/-/jobs/artifacts/master/raw/toolflow/scala/build/distributions/tapasco-2021-01.x86_64.rpm?job=build_scala_tapasco_fedora_30) |
| Fedora 31 | [Download](https://git.esa.informatik.tu-darmstadt.de/tapasco/tapasco/-/jobs/artifacts/master/raw/runtime/kernel/tlkm.ko?job=build_kernel_fedora_31) | [Download](https://git.esa.informatik.tu-darmstadt.de/tapasco/tapasco/-/jobs/artifacts/master/raw/runtime/kernel/tlkm.ko?job=build_kernel_fedora_31_debug) | [RPM](https://git.esa.informatik.tu-darmstadt.de/tapasco/tapasco/-/jobs/artifacts/master/raw/build/tapasco-2021.01.0-Linux.rpm?job=build_tapasco_fedora_31) | [RPM](https://git.esa.informatik.tu-darmstadt.de/tapasco/tapasco/-/jobs/artifacts/master/raw/build/tapasco-2021.01.0-Linux.rpm?job=build_tapasco_fedora_31_debug) | [RPM](https://git.esa.informatik.tu-darmstadt.de/tapasco/tapasco/-/jobs/artifacts/master/raw/toolflow/scala/build/distributions/tapasco-2021-01.x86_64.rpm?job=build_scala_tapasco_fedora_31) |

### Ubuntu 16.04
[Kernel Driver](https://git.esa.informatik.tu-darmstadt.de/tapasco/tapasco/-/jobs/artifacts/master/raw/runtime/kernel/tlkm.ko?job=build_kernel_ubuntu_16_04)
[Kernel Driver Debug](https://git.esa.informatik.tu-darmstadt.de/tapasco/tapasco/-/jobs/artifacts/master/raw/runtime/kernel/tlkm.ko?job=build_kernel_ubuntu_16_04_debug)
[Runtime (DEB)](https://git.esa.informatik.tu-darmstadt.de/tapasco/tapasco/-/jobs/artifacts/master/raw/build/tapasco-2020.10.0-Linux.deb?job=build_tapasco_ubuntu_16_04)
[Runtime Debug (DEB)](https://git.esa.informatik.tu-darmstadt.de/tapasco/tapasco/-/jobs/artifacts/master/raw/build/tapasco-2020.10.0-Linux.deb?job=build_tapasco_ubuntu_16_04_debug)
[Toolflow](https://git.esa.informatik.tu-darmstadt.de/tapasco/tapasco/-/jobs/artifacts/master/raw/toolflow/scala/build/distributions/tapasco_2020-10_amd64.deb?job=build_scala_tapasco_ubuntu_16_04)

### Ubuntu 18.04
[Kernel Driver](https://git.esa.informatik.tu-darmstadt.de/tapasco/tapasco/-/jobs/artifacts/master/raw/runtime/kernel/tlkm.ko?job=build_kernel_ubuntu_18_04)
[Kernel Driver Debug](https://git.esa.informatik.tu-darmstadt.de/tapasco/tapasco/-/jobs/artifacts/master/raw/runtime/kernel/tlkm.ko?job=build_kernel_ubuntu_18_04_debug)
[Runtime (DEB)](https://git.esa.informatik.tu-darmstadt.de/tapasco/tapasco/-/jobs/artifacts/master/raw/build/tapasco-2020.10.0-Linux.deb?job=build_tapasco_ubuntu_18_04)
[Runtime Debug (DEB)](https://git.esa.informatik.tu-darmstadt.de/tapasco/tapasco/-/jobs/artifacts/master/raw/build/tapasco-2020.10.0-Linux.deb?job=build_tapasco_ubuntu_18_04_debug)
[Toolflow](https://git.esa.informatik.tu-darmstadt.de/tapasco/tapasco/-/jobs/artifacts/master/raw/toolflow/scala/build/distributions/tapasco_2020-10_amd64.deb?job=build_scala_tapasco_ubuntu_18_04)

### Fedora 30
[Kernel Driver](https://git.esa.informatik.tu-darmstadt.de/tapasco/tapasco/-/jobs/artifacts/master/raw/runtime/kernel/tlkm.ko?job=build_kernel_fedora_30)
[Kernel Driver Debug](https://git.esa.informatik.tu-darmstadt.de/tapasco/tapasco/-/jobs/artifacts/master/raw/runtime/kernel/tlkm.ko?job=build_kernel_fedora_30_debug)
[Runtime (RPM)](https://git.esa.informatik.tu-darmstadt.de/tapasco/tapasco/-/jobs/artifacts/master/raw/build/tapasco-2020.10.0-Linux.rpm?job=build_tapasco_fedora_30)
[Runtime Debug (RPM)](https://git.esa.informatik.tu-darmstadt.de/tapasco/tapasco/-/jobs/artifacts/master/raw/build/tapasco-2020.10.0-Linux.rpm?job=build_tapasco_fedora_30_debug)
[Toolflow](https://git.esa.informatik.tu-darmstadt.de/tapasco/tapasco/-/jobs/artifacts/master/raw/toolflow/scala/build/distributions/tapasco-2020-10.x86_64.rpm?job=build_scala_tapasco_fedora_30)

### Fedora 31
[Kernel Driver](https://git.esa.informatik.tu-darmstadt.de/tapasco/tapasco/-/jobs/artifacts/master/raw/runtime/kernel/tlkm.ko?job=build_kernel_fedora_31)
[Kernel Driver Debug](https://git.esa.informatik.tu-darmstadt.de/tapasco/tapasco/-/jobs/artifacts/master/raw/runtime/kernel/tlkm.ko?job=build_kernel_fedora_31_debug)
[Runtime (RPM)](https://git.esa.informatik.tu-darmstadt.de/tapasco/tapasco/-/jobs/artifacts/master/raw/build/tapasco-2020.10.0-Linux.rpm?job=build_tapasco_fedora_31)
[Runtime Debug (RPM)](https://git.esa.informatik.tu-darmstadt.de/tapasco/tapasco/-/jobs/artifacts/master/raw/build/tapasco-2020.10.0-Linux.rpm?job=build_tapasco_fedora_31_debug)
[Toolflow](https://git.esa.informatik.tu-darmstadt.de/tapasco/tapasco/-/jobs/artifacts/master/raw/toolflow/scala/build/distributions/tapasco-2020-10.x86_64.rpm?job=build_scala_tapasco_fedora_31)
54 changes: 51 additions & 3 deletions misc/documentation/sfpplus.md
Expand Up @@ -8,9 +8,10 @@ can be found [here](tapasco-features.md).

## Configuration format

The configuration format is split into two parts:
The configuration format is split into three parts:
1. The [Port Definition](#port-definition)
2. The [Connections of PEs](#pe-connections) to ports
3. (Optional) The [Mode](#mode) if the platform supports multiple modes


### Port Definition
Expand Down Expand Up @@ -101,6 +102,53 @@ SFPPLUS {
}
]
}
]
],
...
}
```


### Mode

Some platforms provide multiple modes. This can be configured by supplying the name of the mode which should be used.
If no mode is given the default mode for this platform is used.

Example:

```
SFPPLUS {
...
"Mode": "100G"
}
```
```



## 100G (UltraScale+)

The CMAC-IP (100G Ethernet) for Xilinx UltraScale(+) FPGAs has some specialities which need to be respected when using it.
Some of these concern the FPGA itself, others are for the connection partner (switch, nic, ...).
TaPaSCo will automate the FPGA-related specialities to some extent. You need to do the following:

- Configure the link partner: Disable "Auto Negotiation", fix speed to 100G, activate RS-FEC
- Load Bitstream
- The CMAC automatically resets and the Ethernet link should come up


The complete procedure as a reference:

- IP Configuration: Typically you want to configure with "Enable FCS Insertion/Stripping", "RS-FEC", "Check Preamble" and "Check SFD" enabled.
"Auto Negotiation/Link Training" can also be useful but needs a separate license and is *not* required.
- The link partner needs to be configured to match these settings (if "Auto Negotiation" is disabled): It is (at least) necessary to also disable "Auto Negotiation", fix the speed to 100G and enable RS-FEC.
- Depending on the board there may be specific QSFP28-related board pins (Enable, LowPower, Reset, Interrupt, ...) which need to be respected
- The CMAC-IP has a required startup procedure (which is only partly documented in PG203). All of these steps can be done via the input pins of the IP or via the optional AXI-Lite Interface. These are the steps for the input pins, see PG203 for the AXI-Lite:
- Enable RS-FEC: Set ctl_rx_rsfec_enable, ctl_tx_rsfec_enable, ctl_rx_rsfec_enable_correction, ctl_rx_rsfec_enable_indication to 0x1
- Reset the core via core_rx_reset and core_tx_reset
- Enable RX: ctl_rx_enable = 0x1 and ctl_tx_send_rfi = 0x1
- Wait for stat_rx_aligned (output of IP core)
- Enable TX: ctl_tx_send_rfi = 0x0 and ctl_tx_enable = 0x1
- Sometimes it may be necessary to configure the QSFP28-Transceiver. On the FPGA this is typically possible via I2C. The Transceiver has some status and configuration registers which are specified in SFF-8636. Important registers include
- Interrupt Flags (Byte 3-5, 9-14)
- Power Monitoring (Byte 34-57)
- Control (Byte 86-99)

12 changes: 6 additions & 6 deletions misc/documentation/tapasco-features.md
Expand Up @@ -40,7 +40,7 @@ FanControl {

#### SFPPLUS
The configuration for this feature can be found [here](sfpplus.md)
The ZC706 provides one SFP+ Ports (0).
The ZC706 provides one Mode (10G) with one SFP+ Ports (0).

### ZCU102

Expand Down Expand Up @@ -79,7 +79,7 @@ Cache {

#### SFPPLUS
The configuration for this feature can be found [here](sfpplus.md)
The VC709 provides four SFP+ Ports (0 - 3).
The VC709 provides one Mode (10G) with four SFP+ Ports (0 - 3).

### NetFPGA SUME

Expand All @@ -94,10 +94,10 @@ The VC709 provides four SFP+ Ports (0 - 3).

#### SFPPLUS
The configuration for this feature can be found [here](sfpplus.md)
The XUP-VVH provides four QSFP28 Cages. In TaPaSCo each cage provides four physical ports (10GbE each).
So in total you can use up to 16 ports (port numbers 0 - 15) in your design.
The ports 0 - 3 are connected to the top QSFP28 Cage (farthest away from the PCIe connector),
the ports 12 - 15 are connected to the bottom QSFP28 Cage (next to the PCIe connector)
The XUP-VVH provides four QSFP28 Cages.
There are two modes:
- In the default mode (10G) each cage provides four physical ports (10GbE each). So in total you can use up to 16 ports (port numbers 0 - 15) in your design. The ports 0 - 3 are connected to the top QSFP28 Cage (farthest away from the PCIe connector), the ports 12 - 15 are connected to the bottom QSFP28 Cage (next to the PCIe connector).
- In 100G mode there four physical ports (100GbE each). Port 0 is the top QSFP28 Cage, Port 3 is the bottom QSFP28 Cage.

#### HBM
Allows to connect a subset of the AXI master interfaces of PEs to HBM memory instead of DDR. Each AXI master will be connected to its individual memory block (-> no data sharing possible) of size 256 MB. Up to 32 AXI masters can be connected to HBM. This is configured by specifying "groups" consisting of a PE-ID, a count and one or multiple interface names.
Expand Down
4 changes: 2 additions & 2 deletions runtime/CMakeLists.txt
Expand Up @@ -23,8 +23,8 @@ project(TapascoInstall)
set(CPACK_GENERATOR "RPM" "DEB" "TGZ" "ZIP" "STGZ" "TBZ2")
set(CPACK_PACKAGE_CONTACT "tapasco@esa.tu-darmstadt.de")

set(CPACK_PACKAGE_VERSION_MAJOR 2020)
set(CPACK_PACKAGE_VERSION_MINOR 10)
set(CPACK_PACKAGE_VERSION_MAJOR 2021)
set(CPACK_PACKAGE_VERSION_MINOR 1)
set(CPACK_PACKAGE_VERSION_PATCH 0)
set(CPACK_PACKAGE_NAME tapasco)

Expand Down
2 changes: 2 additions & 0 deletions runtime/examples/CMakeLists.txt
Expand Up @@ -33,3 +33,5 @@ add_subdirectory(C++/tapasco-benchmark)
add_subdirectory(C++/bandwidth)
add_subdirectory(C++/job_completion)
add_subdirectory(C++/memtest)

add_subdirectory(Rust/libtapasco_tests)

0 comments on commit 8f77c7c

Please sign in to comment.