This repository contains a podman image whichs contains all necessary tools to generate and flash bitstream file from a SystemVerilog program.
It is build for the xilinx zybo zynq7 `xc7z010` card, but it can probably be easily edited to support another card.

# Installation

You will need [podman](https://podman.io/) to run the image.

## Use the pre-built image

You can directly use the pre-build image present in the repo

```bash
zstd -d fmn.tar.zst
podman load --input fmn.tar
```

## Build the image from source

You can build the image yourself by using this command:

```bash
podman build -t fmn_alpine .
```

It will first create an image which will build every tools, and then create the final image containing only needed binaries and libraries.

For information, it takes around 5.63GB space and 10 minutes to build on my device.

# Tools

- [sv2v](https://github.com/zachjs/sv2v) : Convert SystemVerilog to Verilog.
- [yosys](https://github.com/YosysHQ/yosys) : Do RTL synthesis from verilog files.
- [nextpnr-himbaechel](https://github.com/YosysHQ/nextpnr) : placing and routing tool.
- [fasm2frames](https://github.com/f4pga/prjxray) : Convert fasm files to frames files.
- [xc7frames2bit](https://github.com/f4pga/prjxray) : Convert frames files to bitstream.
- [openFPGALoader](https://github.com/trabucayre/openFPGALoader) : Flash a bitstream on a FPGA card.

The image also contains some [databases](https://github.com/f4pga/prjxray-db) needed for prjxray tools to work.

# Usage

See the small [example](./example/).
