mubin...@gmail.com wrote:
> Hi,
>
> I am designing a Physically Uncolonable Function using Ring Oscillator on FPGA (Spartan6). However, it does not generate uniqe ID for each chip, it generates exactly same value for different chips. Different ROs must generate different frequency due to die-imperfection. I will compare those frequencies and generate bits, which should be unique for each chip, since each chip has different physicall die-imperfection.
>
> First, I generate 16 ROs, each with 51 inverter gates, all of them are connected to two multiplexers, I connected the select inputs of multiplexers with 8-bit dip-switch. Outputs of multiplexers are connected to two 16-bit counters. Outputs of counters are connected to a comparator, If first counter reachs end value (111...11) (if it is faster than second counter) comparator gives '1', if second counter is faster than first, comparator gives a '0'. This generates only one bit. I replicated this design 16-times to generate 16-bit response. The first bits of this response (3 downto 0) are connected to 4-leds. I tested the design with 3 different chips, they give exactly same respnose, which is not desired.
> How can I make it in order to have different responses?
>
> Thanks.
>
I think you are working on a faulty premise. While there will be a
frequency difference for ring oscillators from device to device, the
relative frequency of two such oscillators within any device will
probably be similar. A lot of this has to do with routing delays,
which cannot be easily matched from one section of the device to
another. So even the static timing analysis will probably tell you
right off the bat that oscillator "A" has more prop delay in the ring
than oscillator "B" and so on. It's not just the LUT count.
If you are trying to determine a unique device by measuring some
quality of each of 16 distinct regions in the device, you need a
more reliable way to make this measurement. If you want to use
ring oscillators, I would start by using a fairly long counter
to determine the relative speed, and instead of just seeing which
one reaches terminal count first, latch the actual value of the
other counter when that terminal count is reached. Then look
at these relative numbers on a sampling of die to see if there is
enough information to find a useful threshold to tell the devices
apart. Even then you'd need to look at these values over a range
of temperature and voltage conditions to make sure you can
"fingerprint" the device reliably using just the process differences.
--
Gabor