Skip to content

Add Support for Digilent Arty-A7 100T FPGA Board

Eclipse Webmaster requested to merge github/fork/cispa/arty-support into master

Created by: WorldofJARcraft

This patch adds support for the Arty A7 FPGA (https://github.com/openhwgroup/cva6/issues/154).

Overview

  • Adds support for Arty A7 100T FPGA variant, running CVA6 at 25 MHz
  • Connects debug module via built-in USB-JTAG
  • Connects USB UART
  • SPI/SD via JA PMOD
  • Adds cv64a6_imac configuration
  • Tested with Xilinx Vivado v2023.2

Changed

  • Added constraints and configurations for Arty A7
  • Backported BSCANE2 probe for debug interface from riscv-dbg. I have placed the updated files in a separate directory, they are only ever compiled when building for the A7. Simulation, ASIC flows and other FPGA boards continue to use the current version of riscv-dbg.
  • Backported common-cells needed for BSCANE2 debug. Not used when building anything except ARTY A7.

What I have been able to test so far:

  • Design meets timing for cv32a6_imac_sv32 @ 25 MHz
  • bootrom runs and detects that no SD card exists
  • debugging via openocd/gdb works via the built-in USB JTAG
  • zephyr hello-world example can be loaded and debugged via west debug and west flash in both 32 and 64 bit configs and runs as expected (zephyr PR coming soon)
  • Resetting the CPU with the "Reset" button
  • USB UART output works
  • A reduced 64-bit config (cv64imac) fits the board, meets timing and runs a hello world example with zephyr. I have added it to the PR.
  • A cv64imafdc_fpga configuration, in which I have enabled CVA6ConfigFpgaEn, i.e., inferring memories as block RAM, meets timing and fits the board with appx. 5000 LUTs to spare.

What I have not yet tested:

  • Booting Linux, I will have to order a microSD pmod before I can test this.
  • Other Arty variants (e.g., S7, A7-35T).

What does not work:

  • Full cv64a6_imafdc_sv39 config (i.e., without CVA6ConfigFpgaEn) does not fit the board, uses appx. 1000 LUTs too much. Might fit when sacrificing a peripheral (e.g., debug, SPI, GPIO, ...)
  • Ethernet support due to timing/resource constraints (but could possibly fit with 32 bit SoCs)

Merge request reports

Loading