
This project is a Physically Unclonable Function (PUF) based on ring oscillator (RO) frequency comparisons. It generates a chip-unique fingerprint by exploiting random manufacturing variations between nominally identical oscillators.
The design contains 16 ring oscillators instantiated from the SKY130 cell library. When the device is triggered, it performs all (16C2) = 120 pairwise comparison by feeding the selected oscillators into a counter. For each RO i, the FSM counts the number of later ROs (j>i) that it beat, and the count is stored as a 49-bit Lehmer code.
The result is read out over a simple SPI slave interface (mode 0, MISO only - the chip ignores MOSI). The busy pin is high while the FSM runs. The 'done' pin rises when the result is ready, and falls when the master begins a read (CS falling edge).
Only requires a connected microcontroller.
| # | Input | Output | Bidirectional |
|---|---|---|---|
| 0 | start | done | CS |
| 1 | busy | MOSI | |
| 2 | MISO | ||
| 3 | SCK | ||
| 4 | |||
| 5 | |||
| 6 | |||
| 7 |