Giter Club home page Giter Club logo

hardposit-chisel3's Introduction

Hardware Posit Arithmetic Units

CircleCI

This project contains hardware units required for performing floating-point arithmetic operations on numbers represented in the Unum Type-III Posit standard. The parameterized modules have been described in Chisel and can generate synthesizable RTL for posits of any size.

DISCLAIMER: These units are works in progress and are not completely free of bugs or fully optimized.

About Posit Arithmetic

Universal Numbers, or unums, are a collection of number systems which features better efficiency and mathematically correct arithmetic properties compared to the IEEE-754 floating-point standard. Unums are capable of expressing real numbers and ranges of real numbers. The newest version Unum Type-III called Posits is a hardware-friendly representation designed as a drop-in replacement for IEEE floats.

Posits behave much like a floating-point number of fixed size, rounding to the nearest expressible value if the result of a calculation is not expressible exactly. It offers more accuracy, and a larger dynamic range than IEEE floats with the same number of bits. Posit arithmetic tries to resolve the short-comings of IEEE floats using a dynamic representation that minimizes unusable representations and exceptional cases.

For more information about Universal numbers and Posit arithmetic and to follow community discussions:

Posit Hub
Unum-computing Google group

Unit Testing

The posit arithmetic modules have been unit tested using Chisel IO testers. For better coverage a random test generator is also available enabled by the universal C++ template library. The test generator supplies tests to the hardware units which are simulated using verilator.

Prerequisites:

To test the units using verilator:

$ git clone https://github.com/thoughtworks/hardposit-chisel3
$ cd hardposit-chisel3
$ git submodule update --init --recursive
$ make

To test the units using Chisel IO testers:

$ sbt test

Contributions

We are working towards a complete posit implementation including support for quire and all the fused operations mandated by the posit arithmetic standard and optimizing the existing units. Feel free to open an issue or pull request if you find any bugs or possible improvements in the design.

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.