GithubHelp home page GithubHelp logo

vpr-for-ice40's Introduction

This repo contains documentation of various FPGA architectures, it is currently concentrating on;

  • Lattice iCE40

The aim is to include useful documentation (both human and machine readable) on the primitives and routing infrastructure for these architectures. We hope this enables growth in the open source FPGA tools space.

The repo includes;

  • Black box part definitions
  • Verilog simulations
  • Verilog To Routing architecture definitions
  • Documentation for humans

The documentation can be generated using Sphinx.

Verilog To Routing Notes

We have to do some kind of weird things to make VPR work for real architectures, here are some tips;

  • VPR doesn't have channels right or above tiles on the right most / left most edge. To get these channels, pad the left most / right most edges with EMPTY tiles.

  • Generally we use the vpr/pad object for the actual .input and .output BLIF definitions. These are then connected to the tile which has internal IO logic.

Structure

Directories

  • XXX/arch/ - Full architecture definitions for Verilog To Routing

    • XXX/arch/YYYY-virt - Verilog to Routing architecture definitions generally are not able to able to generate the exact model of many FPGA routing interconnects, but this is a pretty close.
  • XXX/arch/primitives/ - The primitives that make up the iCE40. These are generally used inside the tiles.

  • XXX/tiles/ - The tiles found in the architecture.

  • XXX/tests/ - Tests for making sure the architecture specific features works with VPR.

  • vpr - Common defines used by multiple architectures.

Files

  • pb_type.xml - The Verilog to Routing Complex Block defintinition.

    • Inside primitives directory they should be intermediate or primitive <pb_type> and thus allow setting the num_pb attribute.

    • Inside tiles directory they should be top level <pb_type> and thus have,

      • capacity (if a pin type),
    • width & height (and maybe area)
  • model.xml - The Verilog to Routing Recognized BLIF Models defintinition.

  • sim.v - A Verilog definition of the object. It should;

    • Match the definition in model.xml (should be one module in sim.v for every model in model.xml)

    • Include a ifndef BLACKBOX section which actually defines how the Verilog works.

  • macro.v - A Verilog definition of the object which a user might instantiate in their own code when specifying a primitive. This should match the definition provided by a manufacturer. Examples would be the definitions in;

Notes

  • Unless there is a good reason otherwise, all muxes should be generated via mux_gen.py

  • DRY (Don't repeat yourself) - Uses XML XIncludes to reuse stuff!

Tools

vpr-for-ice40's People

Contributors

mithro avatar

Watchers

James Cloos 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.