cve2/examples/fpga/artya7
Pirmin Vogel ac51db259d Set FPGA_XILINX define whenever Vivado is used
This commit makes sure that whenever Vivado is used, the Verilog
define `FPGA_XILINX` is set. This define can be used to enable Xilinx
specific pragmas in the RTL code. It is currently used to implement
the performance counters with DSP slices (incl. integrated output
registers for counter widths <= 32) which helps to save logic resources
and FFs (-7% and -15% when using e.g. 10 counters).

Previously, we had to set this parameter in every single top-level .core
file using Ibex.

Signed-off-by: Pirmin Vogel <vogelpi@lowrisc.org>
2020-08-04 12:36:27 +02:00
..
data FPGA example: add support for the Arty A7-35 2020-01-27 20:18:17 +00:00
rtl [rtl] Add alert outputs 2020-07-15 09:50:23 +01:00
README.md FPGA example: add support for the Arty A7-35 2020-01-27 20:18:17 +00:00
top_artya7.core Set FPGA_XILINX define whenever Vivado is used 2020-08-04 12:36:27 +02:00

Ibex RISC-V Core SoC Example

Please see examples for a description of this example.

Requirements

Tools

  • RV32 compiler
  • srecord
  • fusesoc and its dependencies
  • Xilinx Vivado

Hardware

  • Either a Digilent Arty A7-35 oder A7-100 board

Build

The easiest way to build and execute this example is to call the following make goals from the root directory.

Use the following for the Arty A7-35

make build-arty-35 program-arty

and for the Arty A7-100

make build-arty-100 program-arty

Software

First the software must be built. Go into examples/sw/led and call:

make CC=/path/to/RISC-V-compiler

The setting of CC is only required if riscv32-unknown-elf-gcc is not available through the PATH environment variable. The path to the RV32 compiler /path/to/RISC-V-compiler depends on the environment. For example, it can be for example /opt/riscv/bin/riscv-none-embed-gcc if the whole path is required or simply the name of the executable if it is available through the PATH environment variable.

This should produce a led.vmem file which is used in the synthesis to update the SRAM storage.

Hardware

Run either of the following commands at the top level to build the respective hardware. Both variants of the Arty A7 are supported and can be selected via the --parts parameter.

fusesoc --cores-root=. run --target=synth --setup --build lowrisc:ibex:top_artya7 --part xc7a35ticsg324-1L
fusesoc --cores-root=. run --target=synth --setup --build lowrisc:ibex:top_artya7 --part xc7a100tcsg324-1

This will create a directory build which contains the output files, including the bitstream.

Program

After the board is connected to the computer it can be programmed with:

fusesoc --cores-root=. run --target=synth --run lowrisc:ibex:top_artya7

LED1/LED3 and LED0/LED2 should alternately be on after the FPGA programming is finished.