likewise / Finka

Finka is the VexRiscv based SoC in Blackwire responsible for WireGuard session management

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Finka is the soft-core SoC of Blackwire.

The SoC is based around the VexRiscv RISC-V CPU

This SoC also defines the top-level Ethernet AXI Streaming interfaces, as it muxes of the non-WireGuard-Type4 messages into externally implemented (HDL/RTL) data paths, and the other ARP, WireGuard Type-1-2-3 traffic to/from the CPU.

TESTING

  • SpinalSim using a Verilator, GHDL (or other?) simulator.
  • CocoTB testbench against generated VHDL.
  • Verilated (stand-alone) executable.

TESTING WITH SPINALSIM

sbt "runMain finka.FinkaSim"

COCOTB

Slow simulation. Will take a few minutes before you see UART characters

make rtl make -C cocotb/finka

TESTING WITH VERILATOR, FULLY VERILATED

Generate the Verilog source, then compile and run the Verilated executable

make -C software/c/finka/pico-hello make rtl make -C hardware/test/finka run

This will run the initial program in RAM; this is loaded by the "make run" step. So to run a different program only the RAM binaries have to be updated, the RTL remains identical. However, the RAM binaries are generated during the RTL step, as Finka uses separate BRAMs per byte lane, handled by SpinalHDL.

When the executable is run, it will also expose a JTAG/TCP interface, so:

make debug

will allow upload via JTAG and debug via GDB.

About

Finka is the VexRiscv based SoC in Blackwire responsible for WireGuard session management

License:BSD 3-Clause "New" or "Revised" License


Languages

Language:Scala 51.5%Language:C 15.5%Language:Makefile 14.2%Language:Python 8.3%Language:C++ 8.3%Language:Assembly 1.1%Language:Shell 0.9%Language:GDB 0.3%