60 lines
1.7 KiB
Markdown
60 lines
1.7 KiB
Markdown
# This thing
|
|
|
|
This is me playing around with my new Icebreaker FPGA and nmigen(_dg).
|
|
The goal is to find a nice project structure and perhaps find a way to
|
|
work on my Arty a7 with a fully FOSS toolchain for once.
|
|
|
|
My focus is currently on:
|
|
|
|
* Effortless dependency management
|
|
* Helper functions for inspection and documentation of the design
|
|
* Helper functions for targeting multiple FPGA platforms and boards
|
|
* Creating PRs to other projects with stuff I come across here
|
|
* Having fun with my FPGA
|
|
|
|
# Setup
|
|
|
|
pip install --user poetry
|
|
poetry config --local virtualenvs.in-project true # optional, makes cleanup easier
|
|
poetry install
|
|
|
|
And these optional dependencies, installed inside the virtualenv:
|
|
|
|
poetry install -E yosys
|
|
poetry install -E nextpnr-ice40
|
|
poetry install -E nextpnr-ecp5
|
|
|
|
# Running stuff
|
|
|
|
poetry run python -m fpga.icebreaker
|
|
poetry run python -m fpga.modules.blinker generate
|
|
|
|
To reduce the amount of typing:
|
|
|
|
poetry shell
|
|
|
|
# Running stuff remotely
|
|
|
|
For this you need a host you're able to ssh to.
|
|
|
|
Setup:
|
|
|
|
poetry install
|
|
poetry run remote-init <user@host>
|
|
poetry run remote-ignore '*.egg-info' '.git' '.remote.toml' '.venv' # TODO: get rid of this
|
|
poetry run remote poetry config --local virtualenvs.in-project true
|
|
poetry run remote poetry install
|
|
poetry run remote poetry install -E yosys -E nextpnr-ice40
|
|
poetry run remote python -m fpga.foobar generate -t il
|
|
|
|
|
|
# todo:
|
|
|
|
* Diagrams are nice
|
|
* Documentation generation would be nice
|
|
* A central nmigen-pmod repository would be nice
|
|
* A RISCV toolchain would be nice (make socs, and compile C, C++ or Rust)
|
|
* nextpnr-prxray or vpr would be nice
|
|
* Batch setup of Vivado would be nice
|
|
* Ability to synth on a host accessible with ssh would be nice
|