# The Eye-Opening Arbiter-PUF FPGA Implementation with Auto Error Detection
## 4 PUF Uniqueness Evaluation and Mean Frequency Tuning  
Section 2 has introduced the EoA-PUF design, has derived ways to largely eliminate bias from deterministic routing mismatches in the SDEs by design and in the arbiter by PDL tuning, and has explained how the PDL can be further used to adjust the deadzone and compromise slower robust vs. faster noisy decisions. Next, we evaluate the PUF responses for uniformity, uniqueness, and randomness. A fixed tuning configuration per PUF instance is used for all evaluations, which was determined by the previously described algorithm. Further metrics, such as NIST 800-90B and model-building resistance, have not been evaluated because a weak PUF implementation cannot extract enough bits to yield significant results. In addition, the applied metrics are used in other publications, allowing for direct comparison. (1) The PUF uniformity is investigated by checking for an equal distribution of extracted bits observed when all challenges are applied to a single PUF instance. (2) Then, the uniqueness requirement has to be evaluated by comparing one PUF-bit derived from one challenge with all other PUF-bits derived from the same challenge with all PUF instances and FPGAs. Also, the extracted bits must be uncorrelated to fulfill randomness when (3) all challenges are applied to a single PUF-cell, or when (4) a single challenge is applied to all PUF instances. If one of these conditions is not fulfilled, an attacker can easily guess the response. For evaluation, a total of 300 PUF instances were set up with \(c=64\) challenge bits among 18 different FPGA boards. Hadamard codewords are used as challenges, which are linearly independent and therefore harden the PUF against machine learning attacks as the usable information from one codeword to guess the next is minimized [20,31]. Hadamard codewords have a length of powers of two and are constructed such that all codewords have the same Hamming distance (HD) to all other codewords, making them linearly independent. We excluded the all-one codeword such that all codewords have the same amount of ones and zeros, resulting in 63 different codewords. Applying these in a constant sequence to the PUF, each revealing one bit, results in a weak PUF with 63 bits and no external challenge input exposed to an attacker. An evaluation of the strong PUF configuration and its resistance to machine learning attacks motivates future work. (1) Validation of PUF Response Uniformity  
In order to validate the above-mentioned uniformity requirement (1), the condition  
\[\mu_{\text{bit}}=\sum_{i=1}^{R}\frac{r_{i}==1}{R}\cdot 100\% \tag{2}\]  
is calculated for all bits extracted per PUF [32]. With \(\mu_{\text{bit}}\), the amount of responses resulting in 1 is rated against the total amount of responses \(R\). An equal distribution of 0 and 1 results in a \(\mu_{\text{bit}}\) = 50%, while \(\mu_{\text{bit}}\) tending to 0/100% correlates with a bias to 0/1 as all \(r_{i}\) are either 0 or 1 independent of the challenge. Since routing-induced bias was eliminated in the source of entropy by design and in the arbiter by tuning using the PDL approach, a \(\mu_{\text{bit}}\) = 50% was expected. Surprisingly, during evaluation, a \(\mu_{\text{bit}}\) close to 0/100% was measured in many PUF instances. To debug this unexpected behavior, counters were added to the RO outputs to measure their actual frequencies. A measured change in RO-frequencies over challenges for a single exemplary EoA-PUF instance is depicted in Figure 8.  
As expected, each challenge vector changes the frequency of an individual RO in random directions with random magnitude. However, the difference in the mean frequencies of the two competing ROs, indicated by the dashed lines, is larger than the average frequency change caused by the challenge vector and thus the mismatch of individual SDEs. As the EoA-PUF response is derived from phase differences, which are integrated from the actual RO-frequencies, the EoA-PUF response is constant for all challenges in the shown exemplary PUF instance.