diff --git a/amaranth/vendor/intel.py b/amaranth/vendor/intel.py index b1ebb5a..131026a 100644 --- a/amaranth/vendor/intel.py +++ b/amaranth/vendor/intel.py @@ -18,7 +18,7 @@ class IntelPlatform(TemplatedPlatform): * ``quartus_sta`` The environment is populated by running the script specified in the environment variable - ``AMARANTH_ENV_Quartus``, if present. + ``AMARANTH_ENV_QUARTUS``, if present. Available overrides: * ``add_settings``: inserts commands at the end of the QSF file. @@ -42,7 +42,7 @@ class IntelPlatform(TemplatedPlatform): * ``nextpnr-mistral`` The environment is populated by running the script specified in the environment variable - ``AMARANTH_ENV_Mistral``, if present. + ``AMARANTH_ENV_MISTRAL``, if present. * ``verbose``: enables logging of informational messages to standard error. * ``read_verilog_opts``: adds options for ``read_verilog`` Yosys command. diff --git a/amaranth/vendor/lattice_ecp5.py b/amaranth/vendor/lattice_ecp5.py index eb348ca..b5ebc1a 100644 --- a/amaranth/vendor/lattice_ecp5.py +++ b/amaranth/vendor/lattice_ecp5.py @@ -17,7 +17,7 @@ class LatticeECP5Platform(TemplatedPlatform): * ``ecppack`` The environment is populated by running the script specified in the environment variable - ``AMARANTH_ENV_Trellis``, if present. + ``AMARANTH_ENV_TRELLIS``, if present. Available overrides: * ``verbose``: enables logging of informational messages to standard error. @@ -45,7 +45,7 @@ class LatticeECP5Platform(TemplatedPlatform): * ``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 + ``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:: diff --git a/amaranth/vendor/lattice_ice40.py b/amaranth/vendor/lattice_ice40.py index 8dcada9..2b64b00 100644 --- a/amaranth/vendor/lattice_ice40.py +++ b/amaranth/vendor/lattice_ice40.py @@ -18,7 +18,7 @@ class LatticeICE40Platform(TemplatedPlatform): * ``icepack`` The environment is populated by running the script specified in the environment variable - ``AMARANTH_ENV_IceStorm``, if present. + ``AMARANTH_ENV_ICESTORM``, if present. Available overrides: * ``verbose``: enables logging of informational messages to standard error. @@ -47,7 +47,7 @@ class LatticeICE40Platform(TemplatedPlatform): * ``tclsh`` The environment is populated by setting the necessary environment variables based on - ``AMARANTH_ENV_iCECube2``, which must point to the root of the iCECube2 installation, and + ``AMARANTH_ENV_ICECUBE2``, which must point to the root of the iCECube2 installation, and is required. Available overrides: @@ -306,7 +306,7 @@ class LatticeICE40Platform(TemplatedPlatform): if self.toolchain == "IceStorm": return f"AMARANTH_ENV_{self.toolchain}" if self.toolchain in ("LSE-iCECube2", "Synplify-iCECube2"): - return f"AMARANTH_ENV_iCECube2" + return f"AMARANTH_ENV_ICECUBE2" assert False @property diff --git a/amaranth/vendor/lattice_machxo_2_3l.py b/amaranth/vendor/lattice_machxo_2_3l.py index 80ab54b..ab19e5f 100644 --- a/amaranth/vendor/lattice_machxo_2_3l.py +++ b/amaranth/vendor/lattice_machxo_2_3l.py @@ -16,7 +16,7 @@ class LatticeMachXO2Or3LPlatform(TemplatedPlatform): * ``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 + ``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:: diff --git a/amaranth/vendor/quicklogic.py b/amaranth/vendor/quicklogic.py index 6ad6063..dfb4a1a 100644 --- a/amaranth/vendor/quicklogic.py +++ b/amaranth/vendor/quicklogic.py @@ -21,7 +21,7 @@ class QuicklogicPlatform(TemplatedPlatform): * ``symbiflow_write_bitstream`` The environment is populated by running the script specified in the environment variable - ``AMARANTH_ENV_QLSymbiflow``, if present. + ``AMARANTH_ENV_QLSYMBIFLOW``, if present. Available overrides: * ``add_constraints``: inserts commands in XDC file. diff --git a/amaranth/vendor/xilinx.py b/amaranth/vendor/xilinx.py index 4be8fbb..407a731 100644 --- a/amaranth/vendor/xilinx.py +++ b/amaranth/vendor/xilinx.py @@ -17,7 +17,7 @@ class XilinxPlatform(TemplatedPlatform): * ``vivado`` The environment is populated by running the script specified in the environment variable - ``AMARANTH_ENV_Vivado``, if present. + ``AMARANTH_ENV_VIVADO``, if present. Available overrides: * ``script_after_read``: inserts commands after ``read_xdc`` in Tcl script. @@ -99,7 +99,7 @@ class XilinxPlatform(TemplatedPlatform): * ``symbiflow_write_bitstream`` The environment is populated by running the script specified in the environment variable - ``AMARANTH_ENV_Symbiflow``, if present. + ``AMARANTH_ENV_SYMBIFLOW``, if present. Available overrides: * ``add_constraints``: inserts commands in XDC file. @@ -113,7 +113,7 @@ class XilinxPlatform(TemplatedPlatform): * ``xc7frames2bit`` The environment is populated by running the script specified in the environment variable - ``AMARANTH_ENV_Xray``, if present. + ``AMARANTH_ENV_XRAY``, if present. """ toolchain = None # selected when creating platform diff --git a/docs/changes.rst b/docs/changes.rst index d6a52a2..b30a7bb 100644 --- a/docs/changes.rst +++ b/docs/changes.rst @@ -7,7 +7,28 @@ This document describes changes to the public interfaces in the Amaranth languag Next version ============ -Support for Python 3.6 has been dropped. +Support for Python 3.6 has been dropped, and support for Python 3.11 has been added. + +Features deprecated in version 0.3 have been removed. + +Migrating from version 0.3 +-------------------------- + +Apply the following changes to code written against Amaranth 0.2 to migrate it to version 0.3: + +* Update shell environment to use ``AMARANTH_ENV_`` (with all-uppercase ````name) environment variable names instead of ``AMARANTH_ENV_`` or ``NMIGEN_ENV_`` (with mixed-case ```` name). + + +Language changes +---------------- + +.. currentmodule:: amaranth.hdl + +* Added: :class:`ShapeCastable`, similar to :class:`ValueCastable`. +* Added: :meth:`Value.as_signed` and :meth:`Value.as_unsigned` can be used on left-hand side of assignment (with no difference in behavior). +* Changed: :meth:`Value.cast` casts :class:`ValueCastable` objects recursively. +* Changed: :meth:`Value.cast` treats instances of classes derived from both :class:`enum.Enum` and :class:`int` (including :class:`enum.IntEnum`) as enumerations rather than integers. +* Changed: :class:`Cat` accepts instances of classes derived from both :class:`enum.Enum` and :class:`int` (including :class:`enum.IntEnum`) without warning. Toolchain changes @@ -16,6 +37,7 @@ Toolchain changes .. currentmodule:: amaranth * Added: ``debug_verilog`` override in :class:`build.TemplatedPlatform`. +* Deprecated: use of mixed-case toolchain environment variable names, such as ``NMIGEN_ENV_Diamond`` or ``AMARANTH_ENV_Diamond``; use upper-case environment variable names, such as ``AMARANTH_ENV_DIAMOND``. Platform integration changes @@ -24,6 +46,7 @@ Platform integration changes .. currentmodule:: amaranth.vendor * Added: ``OSCH`` as ``default_clk`` clock source in :class:`vendor.lattice_machxo_2_3l.LatticeMachXO2Or3LPlatform`. +* Added: Xray toolchain support in :class:`vendor.xilinx.XilinxPlatform`. Version 0.3 @@ -109,7 +132,7 @@ Platform integration changes * Added: :class:`lattice_machxo_2_3l.LatticeMachXO3LPlatform`. * Deprecated: :mod:`lattice_machxo2`; use :class:`lattice_machxo_2_3l.LatticeMachXO2Platform` instead. * Removed: :class:`xilinx_7series.Xilinx7SeriesPlatform.grade`; this family has no temperature grades. -* Removed: and :class:`xilinx_ultrascale.XilinxUltrascalePlatform.grade`; this family has temperature grade as part of speed grade. +* Removed: :class:`xilinx_ultrascale.XilinxUltrascalePlatform.grade`; this family has temperature grade as part of speed grade. * Added: Symbiflow toolchain support for :class:`xilinx_7series.Xilinx7SeriesPlatform`. * Added: :class:`lattice_machxo_2_3l.LatticeMachXO2Or3LPlatform` generates separate Flash and SRAM SVF programming vectors, ``{{name}}_flash.svf`` and ``{{name}}_sram.svf``. * Deprecated: :class:`lattice_machxo_2_3l.LatticeMachXO2Or3LPlatform` SVF programming vector ``{{name}}.svf``; use ``{{name}}_flash.svf`` instead.