From 57b6aec37ad55313fa3184de505cc0ba6e2f1de7 Mon Sep 17 00:00:00 2001 From: Sebastien Bourdeauducq Date: Wed, 29 Apr 2020 15:07:51 +0800 Subject: [PATCH] add nMigen page --- content/_index.md | 2 ++ content/gateware/nmigen.md | 46 ++++++++++++++++++++++++++++++++++++++ 2 files changed, 48 insertions(+) create mode 100644 content/gateware/nmigen.md diff --git a/content/_index.md b/content/_index.md index 1fa711a..43f613c 100644 --- a/content/_index.md +++ b/content/_index.md @@ -11,6 +11,8 @@ Experiment control Gateware - Migen + - nMigen + - Milkymist SoC Software - SolveSpace diff --git a/content/gateware/nmigen.md b/content/gateware/nmigen.md new file mode 100644 index 0000000..b753697 --- /dev/null +++ b/content/gateware/nmigen.md @@ -0,0 +1,46 @@ ++++ +title = "nMigen" +weight = 1 +template = "page.html" + +[extra] +logo = "images/migen@2x.png" +logo_size = 125 +title = "nMigen" ++++ + + +{% layout_centered_content() %} +##### nMigen is a reboot of Migen, a Python toolbox for building complex digital hardware. +{% end %} + + +nMigen is a reboot of [Migen](@/gateware/migen.md), our metaprogramming-based hardware description language. See the [Migen page](@/gateware/migen.md) for the basic ideas. + +Although Migen works very well in production (it is used, for instance, in the [ARTIQ](/experiment-control/artiq/) experiment control system, and the Amarisoft base stations), its design could be improved in many fundamental ways. nMigen reimplements Migen concepts from scratch to do so. nMigen also provides an extensive compatibility layer that makes it possible to build and simulate most Migen designs unmodified, as well as integrate modules written for Migen and nMigen. + +{% layout_text_img(src="images/side-graphic-min.png", alt="", textleft=true, shadow=false) %} + + +##### Environment + +nMigen itself provides the core language, and is complemented by a number of external components. The nmigen-boards package contains definition files for various FPGA boards, providing information such as pin locations and clocks. The nmigen-stdio package provides libraries to interface to common I/O protocols such as I2C and SPI. The nmigen-soc package is a library that provides bus interconnect and configuration and status register (CSR) management. Finally, the HeavyX system uses all the previous components and integrates them into a complete system-on-chip solution, able to run Rust code on the Minerva RISC-V CPU core entirely written in nMigen. + +##### Documentation + +Documentation for nMigen and its external components is rather limited at the moment. However, you can follow the tutorial by LambdaConcept, and another tutorial by Robert Baruch, as well as his video series on building a 6800 CPU on an FPGA with nMigen: part 1 part 2 part 3 part 4. + +{% end %} + +{% layout_centered_content(min_width=true, force_left=true, bg="background-image: url(/images/stripe.svg); background-repeat: no-repeat; background-size: auto 100%; padding-left: 40px;") %} + +##### Code repositories + +- nmigen +- nmigen-boards +- nmigen-stdio +- nmigen-soc +- heavyx + + +{% end %}