Changelog¶
This document describes changes to the public interfaces in the Amaranth language and standard library. It does not include most bug fixes or implementation changes.
Version 0.3¶
The project has been renamed from nMigen to Amaranth.
Features deprecated in version 0.2 have been removed.
Migrating from version 0.2¶
Apply the following changes to code written against nMigen 0.2 to migrate it to Amaranth 0.3:
Update
import nmigen as nmexplicit prelude imports to beimport amaranth as am, and adjust the code to use theam.*namespace.Update
import nmigen.*imports to beimport amaranth.*.Update
import nmigen_boards.*imports to beimport amaranth_boards.*.Update board definitions using
vendor.lattice_machxo2.LatticeMachXO2Platformto usevendor.lattice_machxo_2_3l.LatticeMachXO2Platform.Update board definitions using
vendor.xilinx_spartan_3_6.XilinxSpartan3APlatform,vendor.xilinx_spartan_3_6.XilinxSpartan6Platform,vendor.xilinx_7series.Xilinx7SeriesPlatform,vendor.xilinx_ultrascale.XilinxUltrascalePlatformto usevendor.xilinx.XilinxPlatform.Switch uses of
hdl.ast.UserValuetoValueCastable; note thatValueCastabledoes not inherit fromValue, and inheriting fromValueis not supported.Switch uses of
back.pysimtosim.Add an explicit
ports=argument to uses ofback.rtlil.convert()andback.verilog.convert()if missing.Remove uses of
test.utils.FHDLTestCaseand vendor the implementation oftest.utils.FHDLTestCase.assertFormalif necessary.
While code that uses the features listed as deprecated below will work in Amaranth 0.3, they will be removed in the next version.
Language changes¶
Added:
Valuecan be used withabs().Added:
Value.rotate_left()andValue.rotate_right().Added:
Value.shift_left()andValue.shift_right().Added:
ValueCastable.Deprecated:
ast.UserValue; useValueCastableinstead.Added: Divison and modulo operators can be used with a negative divisor.
Standard library changes¶
Added:
cdc.PulseSynchronizer.Added:
cdc.AsyncFFSynchronizer.Changed:
fifo.AsyncFIFOis reset when the write domain is reset.Added:
fifo.AsyncFIFO.r_rstis asserted when the write domain is reset.Added:
fifo.FIFOInterface.r_levelandfifo.FIFOInterface.w_level.
Toolchain changes¶
Changed: Backend and simulator reject wires larger than 65536 bits.
Added: Backend emits Yosys enumeration attributes for enumeration-shaped signals.
Added: If a compatible Yosys version is not installed,
back.verilogwill fall back to the amaranth-yosys PyPI package. The package can be installed asamaranth[builtin-yosys]to ensure this dependency is available.Added:
back.cxxrtl.Added:
sim, a simulator interface with support for multiple simulation backends.Deprecated:
back.pysim; usesiminstead.Removed: The
with Simulator(fragment, ...) as sim:form.Removed:
sim.Simulator.add_process()with a generator argument.Deprecated:
sim.Simulator.step(); usesim.Simulator.advance()instead.Added:
build.BuildPlan.execute_remote_ssh().Deprecated:
test.utils.FHDLTestCase, with no replacement.Deprecated:
back.rtlil.convert()andback.verilog.convert()without an explicit ports= argument.Changed: VCD output now uses a top-level “bench” module that contains testbench only signals.
Platform integration changes¶
Added:
SB_LFOSCandSB_HFOSCasdefault_clkclock sources inlattice_ice40.LatticeICE40Platform, .Added:
lattice_machxo2.LatticeMachXO2Platformgenerates binary (.bit) bitstreams.Deprecated:
lattice_machxo2; uselattice_machxo_2_3l.LatticeMachXO2Platforminstead.Removed:
xilinx_7series.Xilinx7SeriesPlatform.grade; this family has no temperature grades.Removed: and
xilinx_ultrascale.XilinxUltrascalePlatform.grade; this family has temperature grade as part of speed grade.Added: Symbiflow toolchain support for
xilinx_7series.Xilinx7SeriesPlatform.Added:
lattice_machxo_2_3l.LatticeMachXO2Or3LPlatformgenerates separate Flash and SRAM SVF programming vectors,{{name}}_flash.svfand{{name}}_sram.svf.Deprecated:
lattice_machxo_2_3l.LatticeMachXO2Or3LPlatformSVF programming vector{{name}}.svf; use{{name}}_flash.svfinstead.Added:
quicklogic.QuicklogicPlatform.Added:
cyclonev_oscillatorasdefault_clkclock source inintel.IntelPlatform.Added:
add_settingsandadd_constraintsoverrides inintel.IntelPlatform.Added:
xilinx.XilinxPlatform.Deprecated:
xilinx_spartan_3_6.XilinxSpartan3APlatform,xilinx_spartan_3_6.XilinxSpartan6Platform,xilinx_7series.Xilinx7SeriesPlatform,xilinx_ultrascale.XilinxUltrascalePlatform; usexilinx.XilinxPlatforminstead.Added: Mistral toolchain support for
intel.IntelPlatform.Added:
synth_design_optsoverride inxilinx.XilinxPlatform.
Versions 0.1, 0.2¶
No changelog is provided for these versions.
The PyPI packages were published under the nmigen namespace, rather than amaranth.