blob: 85c770f2b09e283061f0406a1428aac28827077c [file] [log] [blame] [view]
# Examples of the Yosys + nextpnr + Trellis Flow
These are some simple examples of the Project Trellis flow. Currently only IO and logic (LUTs/FFs) are supported,
with more features to be implemented shortly.
## Disclaimer
Project Trellis is currently **highly** experimental. Do not use it for anything mission critical like avionics, nuclear power or automatic cat feeders!
Although I have not managed to destroy any FPGAs, there is a non-zero chance that the tools could produce a bitstream that destroys or degrades the FPGA. Do not
use with a development board that you cannot afford to lose!
## Prerequisites
You must have [Yosys](https://github.com/YosysHQ/yosys), [nextpnr](https://github.com/YosysHQ/nextpnr) and [Trellis](https://github.com/SymbiFlow/prjtrellis)
installed **from the latest Git master** to use the flow. Refer to the READMEs of each project for more information on building and installing them.
## Included Projects
- **tinyfpga**: morse blink example for the TinyFPGA Ex rev1 prototype with an 85k ECP5
- **ulx3s**: "Night Rider" example for the 45k ULX3S board
- **versa**: 14-segment display example for the ECP5 Versa Board
All projects include a Makefile for building (and programming in the case of the TinyFPGA example).
## Notes
In all cases there are a handful of constant bits (that remain the same in all ECP5 designs), whose detailed function
is unknown - even if the low-level purpose, such as tying an internal signal low, is known. This is why there is a
"_empty.config" file in all examples. These files are also located in the `misc/basecfgs` folder. If you need to
change any of the examples to a different ECP5 device, you will also need to pick the appropriate base config.
IO constraints are currently specified as attributes on `TRELLIS_IO` primitives, reading IO constraint files
is not yet implemented.