working amaranth fork for Pleiades
Find a file
Catherine 4bfe2cde6f sim: add support for dumping structure fields in VCD.
See #790.

This commit adds an entirely private API for describing formatting of
values that is used in the standard library, in departure from our
standing policy of not using private APIs in the standard library.

This is a temporary measure intended to get the version 0.4 released
faster, as it has been years in the making. It is expected that this
API will be made public in the version 0.5 after going through the usual
RFC process.

This commit only adds VCD lines for fields defined in `lib.data.Layout`
when using `sim.pysim`. The emitted RTLIL and Verilog remain the same.
It is expected that when `sim.cxxsim` lands, RTLIL/Verilog output will
include aliases for layout fields as well.

The value representation API also handles formatting of enumerations,
with no changes visible to the designer. The implementation of
`Signal(decoder=)` is changed as well to use the new API, with full
backwards compatibility and no public API changes.

Co-authored-by: Wanda <wanda@phinode.net>
2023-11-27 19:03:13 +00:00
.github CI: adjust the required job to never be skipped. 2023-10-30 20:31:51 +00:00
amaranth sim: add support for dumping structure fields in VCD. 2023-11-27 19:03:13 +00:00
docs docs: fix sidebar CSS. 2023-11-27 15:42:24 +00:00
examples examples,docs: ensure amaranth-boards is available as a dev dependency. 2023-09-25 14:15:11 +00:00
tests lib.wiring: in is_compliant(sig, obj), check that obj is an interface object with that signature. 2023-11-27 18:50:41 +00:00
.codecov.yml CI: disable codecov project status. 2020-10-25 00:13:39 +00:00
.coveragerc Rename nMigen to Amaranth HDL. 2021-12-10 10:34:13 +00:00
.env.toolchain pyproject: use yowasp-yosys for tests. 2023-09-27 11:17:29 +00:00
.gitattributes pyproject: migrate to PDM build backend. 2023-09-12 01:40:48 +00:00
.gitignore Add PDM-related files to gitignore. 2023-07-21 03:57:06 +00:00
CONTRIBUTING.txt Rename nMigen to Amaranth HDL. 2021-12-10 10:34:13 +00:00
LICENSE.txt Update authorship notice. 2023-01-31 21:51:43 +00:00
pdm_build.py pyproject: migrate to PDM build backend. 2023-09-12 01:40:48 +00:00
pyproject.toml back.verilog: require Yosys >=0.35. 2023-11-21 14:52:42 +00:00
README.md README: add Matrix channel. 2023-07-19 22:21:51 +00:00

Amaranth HDL (previously nMigen)

The Amaranth project provides an open-source toolchain for developing hardware based on synchronous digital logic using the Python programming language, as well as evaluation board definitions, a System on Chip toolkit, and more. It aims to be easy to learn and use, reduce or eliminate common coding mistakes, and simplify the design of complex hardware with reusable components.

The Amaranth toolchain consists of the Amaranth hardware definition language, the standard library, the simulator, and the build system, covering all steps of a typical FPGA development workflow. At the same time, it does not restrict the designers choice of tools: existing industry-standard (System)Verilog or VHDL code can be integrated into an Amaranth-based design flow, or, conversely, Amaranth code can be integrated into an existing Verilog-based design flow.

The development of Amaranth has been supported by LambdaConcept, ChipEleven, and Chipflow.

Introduction

See the Introduction section of the documentation.

Installation

See the Installation section of the documentation.

Supported devices

Amaranth can be used to target any FPGA or ASIC process that accepts behavioral Verilog-2001 as input. It also offers extended support for many FPGA families, providing toolchain integration, abstractions for device-specific primitives, and more. Specifically:

  • Lattice iCE40 (toolchains: Yosys+nextpnr, LSE-iCECube2, Synplify-iCECube2);
  • Lattice MachXO2 (toolchains: Diamond);
  • Lattice MachXO3L (toolchains: Diamond);
  • Lattice ECP5 (toolchains: Yosys+nextpnr, Diamond);
  • Xilinx Spartan 3A (toolchains: ISE);
  • Xilinx Spartan 6 (toolchains: ISE);
  • Xilinx 7-series (toolchains: Vivado);
  • Xilinx UltraScale (toolchains: Vivado);
  • Intel (toolchains: Quartus);
  • Quicklogic EOS S3 (toolchains: Yosys+VPR).

FOSS toolchains are listed in bold.

Community

Amaranth has a dedicated IRC channel, #amaranth-lang at libera.chat, which is bridged1 to Matrix at #amaranth-lang:matrix.org. Feel free to join to ask questions about using Amaranth or discuss ongoing development of Amaranth and its related projects.

License

Amaranth is released under the very permissive two-clause BSD license. Under the terms of this license, you are authorized to use Amaranth for closed-source proprietary designs.


  1. The same messages appear on IRC and on Matrix, and one can participate in the discussion equally using either communication system. ↩︎