Giter VIP home page Giter VIP logo

symbiflow-arch-defs's Introduction

SymbiFlow Architecture Definitions

License status Build Status Documentation Status

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

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.

Getting Started

To initialize submodule and setup the CMake build system, from the root of the symbiflow-arch-defs directory run:

make env

To build all demo bitstreams there are 3 useful targets

# Build all demo bitstreams, targetting all architectures
make all_demos

# Build all 7-series demo bitstreams
make all_xc7

# Build all ice40 demo bitstreams
make all_ice40

Specific bitstreams can be built by specifying their target name, followed by a suffix specifying the desired output. For example, the LUT-RAM test for the RAM64X1D primative is called dram_test_64x1d. Example targets are:

# Just run synthesis on the input Verilog
make dram_test_64x1d_eblif

# Complete synthesis and place and route the circuit
make dram_test_64x1d_route

# Create the output bitstream (including synthesis and place and route)
make dram_test_64x1d_bin

# Run bitstream back into Vivado for timing checks, etc.
make dram_test_64x1d_vivado

Tools installed via submodules

Tools installed via conda

  • yosys Verilog parsing and synthesis.

  • vtr Place and route tool.

  • iverilog Very correct FOSS Verilog Simulator

Tools potentially used in the future

  • verilator Fast FOSS Verilog Simulator

  • sphinx Tool for generating nice looking documentation.

  • breathe Tool for allowing Doxygen and Sphinx integration.

  • doxygen-verilog Allows using Doxygen style comments inside Verilog files.

  • symbolator Tool for generating symbol diagrams from Verilog (and VHDL) code.

  • wavedrom Tool for generating waveform / timing diagrams.

Resource Requirements

To run examples provided, please make sure these resources are available:

  • Memory: 5.5G
  • Disk space: 20G

Development notes

Because symbiflow-arch-defs relies on yosys and VPR, it may be useful to override the default packaged binaries with locally supplied binaries. The build system allows this via environment variables matching the executable name. Here is a list of common environment variables to defined when doing local yosys and VPR development.

  • YOSYS : Path to yosys executable to use.
  • VPR : Path to VPR executable to use.
  • GENFASM : Path genfasm executable to use.

There are more binaries that are packaged (e.g. VVP), but the packaged versions are typically good enough for most use cases.

After setting or clearing one of these environment variables, CMake needs to be re-run.

symbiflow-arch-defs's People

Contributors

acomodi avatar andrewb1999 avatar arcanenibble avatar benreynwar avatar dependabot-preview[bot] avatar dependabot-support avatar duck2 avatar elms avatar fleker avatar gatecat avatar glatosinski avatar hackerfoo avatar jhol avatar johndmcmaster avatar kgugala avatar laksen avatar litghost avatar mgielda avatar mithro avatar mjasperse avatar mkurc-ant avatar nathanrossi avatar rw1nkler avatar syed-ahmed avatar symbiflow-kokoro avatar symbiflow-robot avatar tcal-x avatar tmichalak avatar wtatarski avatar xuqinziyue 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.