Lattice ECP5

The amaranth.vendor.lattice_ecp5 module provides a base platform to support Lattice ECP5 devices.

The Trellis and Diamond toolchains are supported.

class amaranth.vendor.lattice_ecp5.LatticeECP5Platform(*, toolchain='Trellis')

Trellis toolchain

Required tools:
  • yosys

  • nextpnr-ecp5

  • ecppack

The environment is populated by running the script specified in the environment variable AMARANTH_ENV_Trellis, if present.

Available overrides:
  • verbose: enables logging of informational messages to standard error.

  • read_verilog_opts: adds options for read_verilog Yosys command.

  • synth_opts: adds options for synth_ecp5 Yosys command.

  • script_after_read: inserts commands after read_ilang in Yosys script.

  • script_after_synth: inserts commands after synth_ecp5 in Yosys script.

  • yosys_opts: adds extra options for yosys.

  • nextpnr_opts: adds extra options for nextpnr-ecp5.

  • ecppack_opts: adds extra options for ecppack.

  • add_preferences: inserts commands at the end of the LPF file.

Build products:
  • {{name}}.rpt: Yosys log.

  • {{name}}.json: synthesized RTL.

  • {{name}}.tim: nextpnr log.

  • {{name}}.config: ASCII bitstream.

  • {{name}}.bit: binary bitstream.

  • {{name}}.svf: JTAG programming vector.

Diamond toolchain

Required tools:
  • pnmainc

  • ddtcmd

The environment is populated by running the script specified in the environment variable AMARANTH_ENV_Diamond, if present. On Linux, diamond_env as provided by Diamond itself is a good candidate. On Windows, the following script (named diamond_env.bat, for instance) is known to work:

@echo off
set PATH=C:\lscc\diamond\%DIAMOND_VERSION%\bin\nt64;%PATH%
Available overrides:
  • script_project: inserts commands before prj_project save in Tcl script.

  • script_after_export: inserts commands after prj_run Export in Tcl script.

  • add_preferences: inserts commands at the end of the LPF file.

  • add_constraints: inserts commands at the end of the XDC file.

Build products:
  • {{name}}_impl/{{name}}_impl.htm: consolidated log.

  • {{name}}.bit: binary bitstream.

  • {{name}}.svf: JTAG programming vector.