
We gratefully acknowledge the Center of Excellence (CoE) in Integrated Circuits and Systems (ICAS) and the Department of Electronics and Communication Engineering (ECE) for providing the necessary resources and guidance.
Special thanks to Dr. H V Ravish Aradhya (HoD- ECE), Dr. K R Usha Rani (Associate Dean-PG), Dr. K. S. Geetha (Vice Principal) and Dr. K. N. Subramanya (Principal) for their constant encouragement and support in facilitating this Tiny Tapeout SKY26C submission.
This project implements a compact 16-bit Galois Linear Feedback Shift Register (LFSR) based pseudo-random number generator.
The design uses three internally selectable polynomial configurations. It starts with polynomial P0 and generates an 8-bit pseudo-random output from the lower 8 bits of the 16-bit LFSR state.
The PRNG includes deterministic self-seeding using an external 7-bit seed input. The generated 16-bit seed is protected against the all-zero state.
An 8-bit repetition monitor observes consecutive PRNG outputs. When a repetition event is detected, the adaptive controller switches the polynomial in the sequence:
P0 → P1 → P2 → P0
At the same time, the controller generates a deterministic new seed from the current LFSR state. A 3-cycle cooldown period prevents immediate repeated adaptive events after polynomial switching and reseeding.
The main blocks are:
The PRNG is enabled using ui_in[7]. The external seed is supplied through ui_in[6:0].
rst_n low.rst_n high.ena high.ui_in[6:0].ui_in[7] high to enable the PRNG.uo_out[7:0].The Cocotb testbench in test/test.py performs the basic functional verification of the PRNG, including reset, seeding, LFSR operation, output generation, and re-enabling behavior.
| # | Input | Output | Bidirectional |
|---|---|---|---|
| 0 | Seed bit 0 | Random output bit 0 | |
| 1 | Seed bit 1 | Random output bit 1 | |
| 2 | Seed bit 2 | Random output bit 2 | |
| 3 | Seed bit 3 | Random output bit 3 | |
| 4 | Seed bit 4 | Random output bit 4 | |
| 5 | Seed bit 5 | Random output bit 5 | |
| 6 | Seed bit 6 | Random output bit 6 | |
| 7 | PRNG enable | Random output bit 7 |