Project setup & installation ============================ There are two ways of using naps: You can either install it as a normal Python dependency or develop your project inside the naps source-tree. Developing in-tree is of advantage if you plan to write large cores that could benefit other projects and could thus be upstreamed. We currently don't have a very strict definition of the scope of things that can live in the naps package and are generally open to merge other cores / experiments into the codebase. Upstreaming your projects has the advantage that we catch regressions when changing internals as none of the interfaces of the naps package currently provide any stability guarantees. So if the code you write could be useful over a prologed timespan, consider upstreaming it. If you however only intend to make a short hack or try something out, it is better to develop code out-of-tree. This way we can reduce maintainance burden and limit the growth of the codebase. Creating a new out-of-tree project ---------------------------------- For creating a new out-of-tree project, we recommend to use `pdm `_. run:: pdm new cd pdm add naps pdm add git+https://github.com/amaranth-lang/amaranth-boards Creating an new in-tree project ------------------------------- For creating a new in-tree project, just clone the naps repository:: git clone https://github.com/apertus-open-source-cinema/naps cd naps pdm install We call project entrypoints "applets". If you want to start a new design, simply create a new python file in the ``applets/`` directory. Installing the vendor toolchain & tools --------------------------------------- For using Amaranth (and thus for using naps), you need a working copy of yosys. Because naps also calls yosys internally, it is best to install the full version (not amaranth-yowasp). The easiest way to do that is to install `oss-cad-suite `__. If you only want to develop for Lattice ECP5, you are now done. If you want to develop for Xilinx Zynq, you additionally need to install Vivado. The naps cli can handle Vivado inside docker, which is handy for example on macOS (see `this repo `_ for an example on how to do this). For this, you need to supply the environment variable ``NAPS_BUILD_DOCKER_IMAGE`` and ``NAPS_BUILD_DOCKER_ARGS``. If you have vivado installed natively, you have to supply the environment variable ``AMARANTH_ENV_VIVADO``. For using the ``JTAGSoc`` you also need to install openocd. The current platforms assume that you use a jlink JTAG probe but that can easily be changed (just search for ``jlink`` in the code).