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
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.