← Back to Projects

PUF Tester

Hardware tooling for testing and characterizing Physically Unclonable Functions (PUFs); supports security and fingerprinting use cases.

View on GitHub →

Overview

Host-side Python scripts for a PUF on a Xilinx Artix FPGA: automated_script.py drives the PUF over SPI (PyFTDI), configures timing and run count, reads 16 bytes per run, and writes responses.csv. SPI_Interface.py and testing.py compute reliability and uniqueness from that file.

Description

Host-side Python tooling for testing and characterizing a PUF (Physically Unclonable Function) on a Xilinx Artix FPGA. One script drives the PUF over SPI (PyFTDI), collects response bytes, and writes responses.csv; the others compute reliability and uniqueness from that file for security and fingerprinting. Demonstrates hardware–software interface (SPI, PyFTDI), protocol design, and metric computation for device characterization.

automated_script.py Uses PyFTDI’s SpiController (e.g. ftdi://ftdi:2232h/1, 30 MHz SPI, mode 0). The protocol uses the lower 4 bits for command (START, SET_RUNS, SET_DELTA_HIGH, SET_DELTA_REST) and the upper 4 bits for data. configure_timing and configure_runs set timing and run count (1–15); start_run sends START and reads 16×runs bytes. main() configures timing and runs, triggers a run, and writes the response rows to responses.csv.

SPI_Interface.py Defines hamming(t1, t2) (element-wise inequality count). calc_reliability averages Hamming distance between a reference response and repeated responses (lower is more reliable). calc_uniqueness averages pairwise Hamming distance across different responses (higher is more unique). golden_response picks the most frequent response as the reference.

testing.py Reads responses.csv, sets response_ref = golden_response(responses), then calls calc_reliability and calc_uniqueness and prints the metrics (e.g. for validation or characterization reports).

Demo

No live demo available for this project. See the repo for setup and run instructions.

Tech & tools

  • Hardware
  • PUF
  • Security
  • Characterization

Highlights

  • PUF characterization and measurement workflows
  • Hardware-level testing and data collection
  • Support for security and device fingerprinting use cases

More projects

WorldWide Rover

HackUMass XII — Best Embedded System. Autonomous, globally accessible rover: web interface for real-time control, maze navigation, obstacle avoidance. Python/Flask backend, Raspberry Pi, Arduino, React, ngrok.

Buffet

Trading AI: paper and live trading on Alpaca, strategy optimization, signal processing, and Qiskit-based quantum optimization. Python, TensorFlow, Alpaca API.

Pong on Assembly

Interactive Pong on FPGA (Duke ECE 550). Hardware VGA/PS2 implementation plus full assembly version (pong.s) for custom 32-bit processor ISA.

Custom Single-Cycle 32-Bit Processor

Custom ISA and single-cycle datapath in Verilog; synthesis-ready design used as the execution target for Pong assembly (Pong-on-Assembly repo).

Baretag iOS App

iOS app (Swift) for real-time device tracking and management; Flask/Ngrok backend and 3D localization validated in Blender.

Multilateration 3D Positioning

3D multilateration and localization algorithms with Python implementation and Blender-based simulation; feeds into Baretag device positioning.

RISC-V Encryption

Low-level encryption on RISC-V: assembly and C implementations for algorithms and analysis on a RISC-V toolchain.

tinyTemp

Temperature display on ATtiny85: reads sensor via ADC and shows °F and °C on SSD1306 OLED (ECE 304, Spring 2024).

WorldWide Rover

HackUMass XII — Best Embedded System. Autonomous, globally accessible rover: web interface for real-time control, maze navigation, obstacle avoidance. Python/Flask backend, Raspberry Pi, Arduino, React, ngrok.

Buffet

Trading AI: paper and live trading on Alpaca, strategy optimization, signal processing, and Qiskit-based quantum optimization. Python, TensorFlow, Alpaca API.