Tutorial
========

.. todo::

   The official tutorial is still being written. Until it's ready, consider following one of the tutorials written by the Amaranth community:

      * `Learning FPGA Design with nMigen <https://vivonomicon.com/2020/04/14/learning-fpga-design-with-nmigen/>`_ by Vivonomicon;
      * `"I want to learn nMigen" <https://github.com/kbob/nmigen-examples>`_ by kbob;
      * `A tutorial for using Amaranth HDL <https://github.com/robertbaruch/amaranth-tutorial>`_ by Robert Baruch.
      * `Graded exercises for Amaranth HDL <https://github.com/robertbaruch/amaranth-exercises>`_ by Robert Baruch.
      * `My journey with the Amaranth HDL <https://medium.com/@sporniket.studio/my-journey-with-the-amaranth-hdl-226b38d0b023>`_ by David Sporn, focussed on setting up the workstation, using formal verification and setting up continuous integration.

    People with electrical engineering background may find the `DigitalJS <https://digitaljs.tilk.eu/>`_ simulator by Marek Materzok helpful, as it lets you explore the circuits generated from Amaranth code as circuit diagrams. It offers more features than `the official playground <https://amaranth-lang.org/play/>`_, such as interactive I/O.
