This artifact corresponds to the paper entitled "A Closer Look at the Chaotic Ring Oscillators based TRNG Design". One SPICE simulation model (model.sp), one dataset and corresponding processing scripts (directory: original data) and one Python code to select a proper feedback polynomial are included in this artifact. 1 Simulation model One SPICE simulation example of the gate-level model as described in Section 4 of the paper is provided in the .sp file: model.sp, which satisfies Decision rule1 with the feedback polynomial f(x)=x^15+x^14+x^6+x^3+x+1. 1.1 Configuration 1.1.1 Environmental conditions The simulation is conducted under the temperature of 25 degrees Celsius and voltage vdd=1.5V. 1.1.2 Library The model is simulated with the technology TSMC 28nm. Two library files "cln28hpcp_usage.l" and "tcbn28.spi" are necessary for the simulation but are not included because they are commercial libraries. Other technology files can be adopted to replace the two library files, where a consistent simulated result can be obtained with the same delay relationships and similar filtering or drive capabilities. After replacing the library files, the instantiated cells in the simulated circuit should also be replaced by the corresponding cells defined in the replaced files. For example, we have conducted the simulation with the same delay relationships and similar filtering or drive capabilities under the technology GF22nm and obtained consistent results. 1.2 Utilization After the configuration of environmental conditions and library, the utilization steps are listed as follows: a) Construct the ring oscillator circuit by instantiating the cells in the file "tcbn28.spi", as displayed in Figure 12 in the paper where buffers can also be implemented by AND gates with one input tied to VDD to imitate the delays of routes. The input connections of the AND gates instantiated to implement switches are determined by the applied feedback polynomial to implement closed or open feedback paths, with one input tied to GND or VDD. b) Adjust the aspect ratios or the number of instantiated cells to realize similar filtering or drive capabilities and the same delay relationships measured from FPGA or ASIC implementation. The delay values can be obtained by measuring the oscillation periods of equivalent classical ring oscillators with the feedback polynomial f(x)=x^15+x^14+x^m+1 (m=1,2,...,13). The simulated oscillation period of each loop in the example model is about 10% of the corresponding measured value in Table I in the paper, with the same delay relationships. c) The start signal as one input signal of the NAND gate is configured as a pwl (piece-wise linear) input stimulus to enable the oscillation. d) Transient noise analysis is performed on the output signal of the ring oscillator to obtain the simulated waveforms for the cause analysis of periodic oscillations. e) The tool HSPICE is applied to run the model with the instruction: hspice model.sp. The version of HSPICE used in this paper is HSPICE Version Q-2020.03-3. 2 Dataset A dataset and corresponding processing scripts are provided in the directory "original data", which includes the original data measured from an FPGA implementation of a GARO for all the 8192 feedback polynomials and two scripts to obtain the summary graphs Figure 7(b) and Figure 9(b) in the paper. The data acquisition and processing for FIRO are similar to GARO, with the same classifications in Figure 7(a) and Figure 9(a) with Figure 7(b) and Figure 9(b). In the directory "data", there are three .csv files corresponding to three categories divided based on the oscillation situation: continuous periodic oscillation (continuous_periodic_oscillation_data.csv), intermittent periodic oscillation (intermittent_periodic_oscillation_data.csv) and chaotic oscillation (chaotic_periodic_oscillation_data.csv). The binary feedback coefficients, min-entropy, Lyapunov exponents and the numbers of different states in 10000 samples are listed. In the directory "scripts", there are two scripts entropy_plt_garo.py and lya_plt_garo.py for the data processing to obtain Figure 7(b) and Figure 9(b) respectively (dependencies: matplotlib.pyplot, csv.DictReader). In the obtained summary graphs, the entropy results are displayed with the feedback coefficient as the x-axis, and the Lyapunov exponent results are shown with the min-entropy as the x-axis. The categories in Figure 7(b) are consistent with the original data, where "mixed" corresponds to intermittent periodic oscillations. In Figure 9(b), the mixed situations are divided from intermittent periodic oscillations, where the duration of chaotic oscillation accounts for [75%, 100%) of the sampling time. The remaining intermittent periodic oscillations and continuous periodic oscillations are classified as the periodic situations. To differentiate the mixed situations in Figure 7(b) and Figure 9(b), the duration of chaotic oscillation is listed in intermittent_periodic_oscillation_data.csv, where the mixed situations in Figure 9 are also identified by ticking to improve readability. The summary graphs can verify the effectiveness of the selected threshold and modified detector to detect periodic oscillations for all the feedback polynomials, as proposed in Subsection 3.2 of the paper. 3 Python code A Python script rule_test.py is provided to implement the proposed Algorithm 2 in Subsection 6.1 to select a suitable feedback polynomial without periodic oscillation. The inputted feedback coefficients and delays of rule_test.py are obtained from input.py. We have utilized Python 3.7 to run the script, where numpy is added to the execution environment. We also check whether all the periodic oscillations with entropy loss measured from an FPGA implementation are detected and filtered successfully in verify.py. 3.1 Input 3.1.1 Feedback coefficients The binary feedback coefficients should be inputted to determine the oscillator structure and corresponding delay relationships, which are represented by the variable: chal. The specific feedback coefficients in the script input.py are obtained from the file: c_special.txt, which is consistent with the data transferred from computer to FPGA to determine the feedback coefficients applied in actual implementation. The file c_special.txt includes the bit12-bit0 of the feedback coefficients for all the 8192 feedback polynomials. The 13 bits of the feedback coefficients are split into two integer values to be transmitted by Nodejs, where each one is at most 8 bits long. The first and second values represent bit5-bit12 and bit0-bit4 respectively. Another bit bit13 is calculated from the bit12-bit0 to realize even HW of feedback coefficients to avoid fixed points in the oscillation of GARO. 3.1.2 Oscillation periods Before applying Algorithm 2 to evaluate the inputted feedback coefficients, we should obtain the corresponding delay differences from the inputted oscillation periods of all the closed loops. The inputted oscillation periods are measured from actual implementation and represented by the variable: delay. 3.2 Output The output variable abandon represents whether the corresponding feedback polynomial should be filtered with possible periodic oscillation. If abandon=1, the corresponding feedback polynomial should be filtered. Otherwise, the corresponding feedback polynomial can be applied to build a robust TRNG. To verify the effectiveness of Algorithm 2, we collect the indexes of all the filtered feedback polynomials in lists, which are applied for verification in verify.py. 3.3 Configuration parameters There are two parameters to configure the evaluation algorithm: delta and DIV_min. The selection of delta and DIV_min is making a trade-off between missed detection and false alarm. All the periodic oscillations with entropy loss obtained from an FPGA implementation in this paper can be detected and filtered with delta=0.38 and DIV_min=0.79. Also, there is still enough space left to select a suitable feedback polynomial without periodic oscillation. 3.3.1 delta The parameter delta represents the tolerable variation of delay differences for periodicity conditions only causing glitches in the specific outputs. A larger value of delta represents a looser requirement, which will cause more feedback polynomials to be detected and filtered. However, a larger value of delta brings the glitches closer to complete signals which will be maintained and propagated, and the periodic conditions will not be satisfied to cause periodic oscillations. 3.3.2 DIV_min The parameter DIV_min represents the minimum value of DIV_δ or DIV'_δ. The proposed periodic conditions are easier to be satisfied with a smaller value of DIV_min, which will cause more feedback polynomials to be detected and filtered. However, a smaller value of DIV_min brings the signal of periodic oscillation closer to the glitch. Once the DIV_min is small enough, the periodic oscillation cannot be maintained and periodic behavior will not be presented.