NPX Tutorial:
From Spike-Based Learning to FPGA Prototyping

Hyunguk Jang and Kyuseung Han
ETRI, Daejeon, South Korea

v2025-12-06 or later

Overview

This tutorial offers step-by-step guidance covering the process from spike-based learning to FPGA prototyping.

Prerequisites

Things to Know

Installing the Xarvis and RVX Environment

Follow the two tutorials in the Prerequisites to install both the Xarvis and RVX.
The directories cloned from npx-xarvis.git and npx-tutorials.git are called ${XARVIS_HOME} and #(tutorial dir), respectively.
In this tutorial, we’ll use #(tutorial dir)/platform/starc_neugemm as the platform directory, referred to as #(platform dir).

Synchronizing with Xarvis

cmd) source #(tutorial dir)/rvx_setup.sh
cmd) source ${XARVIS_HOME}/rvx_setup.sh
cmd) cd #(platform dir)/util/npx
cmd) make setup

Synthesizing the Processor

cmd) cd #(platform dir)
cmd) make syn

Training an Example Application

cmd) cd #(platform dir)/util/npx
cmd) make mnist_app

Running an NPX Application via RTL Simulation

Not recommended because it takes a long time.

cmd) source #(tutorial dir)/rvx_setup.sh
cmd) cd #(platform dir)
cmd) make sim_rtl
cmd) cd sim_rtl
cmd) make test_npx_app.all

Prototyping the Processor on the Genesys2 Board

cmd) source #(tutorial dir)/rvx_setup.sh
cmd) cd #(platform dir)
cmd) make genesys2 // replace with your board name
cmd) cd imp_genesys2_YYYY-MM-DD // referred to as #(fpga dir)
cmd) make imp

Running an NPX Application on the Genesys2 Board

cmd) source #(tutorial dir)/rvx_setup.sh
cmd) cd #(fpga dir)
cmd) make program
cmd) make printf
cmd) make test_npx_app.all

Navigate