Skip to content

semaphoric775/peakView

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

5 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

peakView

A terminal UI for inspecting and modifying FPGA Control and Status Registers (CSRs) in real time. Load a register map from a SystemRDL (.rdl) or pre-exported JSON file, connect an FTDI module, and read/write registers directly from your terminal.

peakView UI

Features

  • Browse the full register hierarchy with field-level detail (bits, access type, reset value)
  • Read individual registers or refresh the entire map at once
  • Write registers with hex input
  • Live connection status — reconnects automatically when the device is plugged in
  • Optional auto-refresh on a configurable interval
  • Fuzzy register search (/)
  • Vim-style navigation (j/k, g/G)
  • Supports FT2232H and FT4232H FTDI devices

Requirements

  • Rust toolchain (cargo)
  • libftdi1 development library
    • Debian/Ubuntu: sudo apt install libftdi1-dev
    • Arch: sudo pacman -S libftdi
    • macOS: brew install libftdi
  • uv (only needed for .rdl input — fetches systemrdl-compiler automatically on first use)

Build

cargo build --release

The binary is at target/release/peakview.

Usage

peakview [OPTIONS] <REGISTERS>

<REGISTERS> is either a .rdl source file or a pre-exported .json file.

Options

Flag Default Description
--device-type <TYPE> ft4232h FTDI variant: ft4232h or ft2232h
--device <SERIAL> first found FTDI serial number
--refresh <MS> 0 (off) Auto-refresh interval in milliseconds

Examples

# Load from a SystemRDL file, FT4232H (default)
peakview registers.rdl

# Load from a pre-exported JSON, FT2232H
peakview --device-type ft2232h registers.json

# Auto-refresh every 500 ms
peakview --refresh 500 registers.rdl

Keybindings

Key Action
j / Move down
k / Move up
g / G Jump to top / bottom
r Read selected register
R Refresh all registers
w Write selected register
/ Search registers
q / Esc Quit

Register Map Input

peakView accepts two input formats:

SystemRDL (.rdl) — compiled at runtime via uv run --with systemrdl-compiler. No manual Python setup required; uv manages a throw-away virtual environment automatically.

JSON — a pre-exported register map. Use the bundled export script to generate one offline:

uv run --with systemrdl-compiler python3 peakview-backend/export_json.py registers.rdl > registers.json

An example register map (example_peak_rdl/spi.rdl) is included for testing without hardware.

Logs

Runtime warnings and errors are written to peakview.log in the working directory.

About

A TUI for interacting with FPGA CSRs written in the SystemRDL format through an FTDI module

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors