Giter VIP home page Giter VIP logo

pyrilog's Introduction

Pyrilog

Build Status

Generates a Fused Multiply Add (FMA) unit in Verilog.

Installation

pip install pyrilog

NOTE: Currently not on PyPi yet - therefore the pip command would not work.

Alternatively, you can clone this repository and run:

python -m pyrilog <...args>

Usage

The Fused Multiply Add operation is in the form:

a + b * c

However, in our case, we are not taking a as the accumulated value, but we will keep a as an expanded value of the partial products so that we can perform the operation of a matrix dot product in a parallel fashion.

pyrilog --size <size> --width <width> --with-pipeline

Arguments

  • --size: size of the vectors that we want to perform dot product on
  • --width: bit width of each element in the vectors that we want to perform dot product on
  • --with-pipeline: we'll include latches in between the stages of the reduction tree if this is enabled (work in progress)

Verification

It is recommended that you test and verify the generated Verilog code using a test bench with Icarus Verilog before deploying to any hardware. Pyrilog does not provide generated Verilog code to run as a test bench, although that would be pretty awesome.

Documentation

Work-in-Progress. I'm hoping to use the GitHub wiki as the main source of documentation.

Development

If you are interested to contribute, feel free to take a look at the issues. Feel free to clone this repository and make pull requests if you think there are improvements to be made.

Clone the repository, create a virtualenv and run:

pip install -r requirements.txt

Testing

Please remember to run tests before submitting a PR:

nosetests ./tests/**/*.py --with-coverage

Python 3

Pyrilog is developed in a Python 3.6.2 environment, however there should be support for lower versions of Python 3. I cannot guarantee support for Python 2 versions.

pyrilog's People

Contributors

xbili avatar

Stargazers

 avatar

Watchers

 avatar  avatar  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.