Giter Site home page Giter Site logo

umairf / nextpnr-xilinx Goto Github PK

View Code? Open in Web Editor NEW

This project forked from gatecat/nextpnr-xilinx

0.0 1.0 0.0 6.52 MB

Experimental flows using nextpnr for Xilinx devices

License: ISC License

CMake 1.22% C++ 75.26% C 4.73% Pawn 0.71% Python 4.87% Verilog 10.26% Shell 0.23% Tcl 0.03% Makefile 0.03% Jupyter Notebook 0.09% Java 2.56%

nextpnr-xilinx's Introduction

nextpnr-xilinx

nextpnr is a open-source multi-architecture place-and-route framework aimed at real-world FPGA silicon. This is an experiment to integrate nextpnr with RapidWright, an open interface into Xilinx FPGAs, and Project Xray, open bitstream documentation for xc7 FPGAs.

Currently two flows are supported:

  • UltraScale+ with RapidWright database generation, bitstream generation using RapidWight and Vivado
  • xc7 with Project Xray database generation, bitstream generation using FASM and Project Xray (no Vivado anywhere in the flow)

Prerequisites - UltraScale+

Prerequisites - Artix-7

  • Run git submodule init and git submodule update to fetch the database and metadata
  • Download and build Project Xray
  • Install yosys

A brief (academic) paper describing the Yosys+nextpnr flow can be found on arXiv.

Building - Artix-7

  • Run cmake -DARCH=xilinx .
  • Run make (with -jN as appropriate)

Building - UltraScale+

  • Run cmake -DARCH=xilinx -DRAPIDWRIGHT_PATH=/path/to/rapidwright -DGSON_PATH=/path/to/gson-2.8.5.jar .
  • Run make (with -jN as appropriate)

Building the Arty example - XRay database

  • Run pypy3 xilinx/python/bbaexport.py --device xc7a35tcsg324-1 --bba xilinx/xc7a35t.bba (regular cpython works as well, but is a lot slower)
  • Run ./bbasm --l xilinx/xc7a35t.bba xilinx/xc7a35t.bin
  • Set XRAY_DIR to the path where Project Xray has been cloned and built (you may also need to patch out the Vivado check for utils/environment.sh in Xray by removing this line and everything beyond it: https://github.com/SymbiFlow/prjxray/blob/80726cb73ba5c156549d98a2055f1ee3eff94530/utils/environment.sh#L52)
  • Run attosoc.sh in xilinx/examples/arty-a35.

Building the zcu104 example - RapidWright

  • Run java -jar rapidwright_bbaexport.jar xczu7ev-ffvc1156-2-e xilinx/constids.inc xilinx/xczu7ev.bba
  • Run ./bbasm --l xilinx/xczu7ev.bba xilinx/xczu7ev.bin
  • Run blinky.sh in xilinx/examples/zcu104.

Creating chip database from RapidWright

  • Run java -jar rapidwright_bbaexport.jar xczu2cg-sbva484-1-e xilinx/constids.inc xilinx/xczu2cg.bba

    • This uses RapidWright to build a textual representation of a chip database for nextpnr
    • Replace xczu2cg-sbva484-1-e and the bba filename with the device you want to target. You can build multiple databases for multiple devices if desired (subject to the support caveats above)
  • Run ./bbasm --l xilinx/xczu2cg.bba xilinx/xczu2cg.bin

    • This converts the text database from above to a binary database that nextpnr can mmap
  • See xilinx/examples for example scripts that run the Yosys/nextpnr/RapidWright flow, then use Vivado to write a Verilog simulation netlist.

Notes

  • Currently supported:

  • xc7 and xcup: LUTs (including fractured), FFs, DRAM (only RAM64X1D), carry (XORCY and MUXCY or CARRY4), SRL16E and SRLC32E (no cascading), BRAM and IO

  • xcup: OSERDESE3, ISERDESE3, IDDRE1, ODDRE1, IDELAYE3, ODELAYE3, IDELAYCTRL, BUFGCTRL, BUFG, BUFGCE, BUFG_PS, PLLE4_ADV, PLLE4_BASIC, MMCME4_ADV, MMCME4_BASIC, URAM288E, DSP48E2 (no cascading)

  • xc7: OSERDESE2, ISERDESE2, IDELAYE2, IDELAYCTRL, BUFGCTRL, PLLE2_BASIC, PLLE2_ADV

  • Bels, tile wires and pips are deduplicated but nodes (connections between tile wires) are not. This means that databases for larger devices will be several gigabytes in size (but significantly smaller than a fully flat database).

nextpnr-xilinx's People

Contributors

acomodi avatar ajeakins avatar bgamari avatar cliffordwolf avatar corecode avatar cr1901 avatar dlharmon avatar dmsc avatar duranda avatar eddiehung avatar fghoussen avatar gatecat avatar gsomlo avatar haini avatar jboone avatar ldoolitt avatar mithro avatar mmicko avatar noopwafel avatar pepijndevos avatar q3k avatar se-bi avatar smunaut avatar twam avatar whitequark avatar xanderlent avatar xiretza avatar xobs avatar zeldin avatar zipcpu 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.