Git Product home page Git Product logo

randsack's Introduction

Randsack - True Random Number Generator(s)

License

Overview

Randsack is a test chip for trying out random number generators and PUFs.

IP Blocks and Instances

  • digitalcore_macro - Digital top sea of gates containing control logic and digital peripherals.
    • gpio0 - Wishbone 32-bit GPIO peripheral
    • pwm[0-3] - Wishbone PWM peripherals with 16-bit prescaler and 16-bit counter/compare
    • uart0 - Wishbone UART peripheral
    • ring0 - Ring oscillator controller for collapsing ring.
    • ring1 - Ring oscillator controller for free running ring oscillator.
  • collapsering_macro - Trimmable collapsing ring oscillators for generating random numbers with a configurable output divider. See ip/randsack/sch/collapsering.sch xschem schematic for design.
  • ringosc_macro - Trimmable ring oscillator.

All custom IP blocks are in located in the ip/randsack/ directory. Third party IP is in the ip/third_party/ directory.

TODO

  • Serializer block to output high rate data.
  • PWM block for generating audio.
  • LFSR block to take a seed value from the TRNG and generate high rate data.
  • SHA block.

Methodology, Implementation, and SPICE simulation

The more analog-like blocks like the ring oscillators are designed using stdcells in xschem and simulated with ngspice.

Due to limited time all blocks are synthesized using the standard openlane flow instead of hand layout. The resulting netlist is inspected to ensure minimal modifications by the tools. The resulting extracted spice file is then simulated.

Unfortunately the process to do backannotated timing sims (SDF) doesn't appear simple. Hope is the small macros are small and that any delays are tiny and don't cause issues.

All simulations are performed at tt/ff/ss corners to ensure reasonable performance across PVT.

A bunch of knobs are built into the design to minimize risk. All blocks feature many trim bits and output dividers in case performance ends up being too fast for the synthesized digital control blocks.

Test Busses

The output of the oscillator blocks can be muxed to output GPIOs for debug. GPIOs are limited to ~60 MHz so the internal clock dividers should be used.

Hardening Macros

Use the mpw-3 tag in the https://github.com/efabless/OpenLane.git repo. As of this time the Docker Hub repo is missing the mpw-3 tag so manually set the openlane tag to master which currently points to the same commit. See envsetup for required environment vars.

All the *_macro blocks need to be hardened first before finally hardening the user_project_wrapper macro.

DV

See the verilog/dv/randsack* directories for RTL/GL testbenches.

References

  • Sample project README containing instructions on how to setup the chip environment.

randsack's People

Contributors

manarabdelaty avatar harrisonpham avatar jeffdi avatar mkkassem avatar ax3ghazy avatar russellfriesenhahn avatar agorararmard avatar rtimothyedwards avatar mattvenn avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.