# Lattice MachXO2 and MachXO3L

The `LatticeMachXO2Platform` and `LatticeMachXO3LPlatform` classes provide base platforms to support Lattice MachXO2 and MachXO3L devices.

The Diamond toolchain is supported.

class amaranth.vendor._lattice_machxo_2_3l.LatticeMachXO2Or3LPlatform
  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}}.jed`: JEDEC fuse file.

    - `{{name}}.bit`: binary bitstream.

    - `{{name}}.svf`: JTAG programming vector for FLASH programming.

    - `{{name}}_flash.svf`: JTAG programming vector for FLASH programming.

    - `{{name}}_sram.svf`: JTAG programming vector for SRAM programming.

amaranth.vendor.LatticeMachXO2Platform

  alias of `LatticeMachXO2Or3LPlatform`

amaranth.vendor.LatticeMachXO3LPlatform

  alias of `LatticeMachXO2Or3LPlatform`