Commit graph

108 commits

Author SHA1 Message Date
Catherine f133646e9b Remove all remaining code references to nmigen and the namespace.
Closes #741.
2023-01-31 13:49:13 +00:00
Catherine 29502442fb hdl.ast: remove Shape<>tuple casts.
Closes #691.
2023-01-31 12:58:29 +00:00
Catherine 309f647c0e Update documentation and changelog to reflect existing changes. 2023-01-31 12:57:44 +00:00
Catherine aaec7e0d27 tracer: return default name on unrecognized opcode.
The default name is more commonly returned on code such as:

    x, y = Signal(), Signal()

The case where the opcode is not recognized is only encountered
when older Amaranth is ran on a newer Python interpreter (with more
opcodes).

Returning None instead of a name here caused issues in the RTLIL
backend, which would incorrectly use $\d+ names for ports, since
the RTLIL backend assumed the name of a signal is always a string.

Fixes #733.
2023-01-31 10:34:57 +00:00
Catherine 2ca421dea8 back.rtlil: add assertions guarding against $\d+ port names.
See #733.
2023-01-31 10:34:57 +00:00
Bastian Löher 64b96e143b
vendor.xilinx: Add support for more parts when using Symbiflow. 2023-01-23 19:26:58 +00:00
Arusekk de6b69370f hdl.ast: Do not warn on int Enums in Cat.
This aligns with the behavior for plain Enums.
2023-01-22 23:40:39 +00:00
Arusekk 58a0c68279 hdl.ast: allow typed int enums in Value.cast. 2023-01-22 23:40:39 +00:00
J. Neuschäfer 91d4513682
Fix several typos. NFC. 2023-01-20 19:48:29 +00:00
Bastian Löher 427c82fcbc
hdl.ast: handle Repl in ValueKey.
Fixes #735.
2023-01-16 23:16:37 +00:00
Gwenhael Goavec-Merou e3b2ba4316
vendor.xilinx: add support for Xray-based toolchain. 2022-12-13 20:09:57 +00:00
Bastian Löher 0a1ba22050
vendor.xilinx: update symbiflow toolchain scripts. 2022-12-01 20:00:48 +00:00
Adam Greig af7c11441d Use all-uppercase toolchain_env_var names.
Accepts previous case for backwards compatibility.

Fixes #728.
2022-11-16 02:37:53 +00:00
Emil J db24a14b57
lib.coding: remove GrayDecoder apparent comb loop for consistency 2022-11-03 11:51:26 +00:00
Marcelina Kościelnicka a9f1c35cb1 _toolchain.cxx: fix use of distutils.ccompiler on newer setuptools.
Starting with setuptools 64.0.2, the monkeypatching process performed as
part of its bootstrap no longer imports distutils.ccompiler, causing an
AttributeError.
2022-10-27 10:16:25 +00:00
Alan Vekselman 9857039a6b hdl.ast: fix non-existing variable in SignalKey.__lt__ 2022-10-05 23:53:33 +00:00
Jin Xue 3a51b61284
sim._pyrtl: translate ArrayProxy to pattern matching when supported.
Current the value compiler translates ArrayProxy into if-elif trees 
which can cause the compiler to crash due to deep recursion (#359).

After this commit, it instead translates them into pattern matching 
when it is supported (on Python >= 3.10) to avoid this problem.
2022-09-24 10:22:47 +00:00
Mrmaxmeier c4be739d48 sim._pyrtl: work around Python's new integer-string conversion limits
Formatting large ints to decimal raises an ValueError in Python versions
that include a mitigation for CVE-2020-10735. Formatting to hexadecimal
instead avoids the algorithmic complexity and is not impacted by the
new conversion limits.

Note that the simulator already rejects very large values, but the
integer-string conversion limits trigger in cases that previously
worked.
2022-09-24 07:40:15 +00:00
Catherine da26f1c915 hdl,back,sim: accept .as_signed() and .as_unsigned() on LHS.
These operators are ignored when they are encountered on LHS, as
the signedness of the assignment target does not matter in Amaranth.
.as_signed() appears on LHS of assigns to signed aggregate fields.
2022-09-24 07:19:47 +00:00
Catherine 90fcbfc357 hdl.ast: improve style of {Shape,Value}Castable doc. NFC. 2022-09-24 07:19:32 +00:00
Catherine bf16acf2f0 hdl.ast: implement ShapeCastable (like ValueCastable).
Refs #693.
2022-09-24 07:19:03 +00:00
Catherine 0723f6bac9 hdl.ast: recursively cast ValueCastable objects to values. 2022-09-24 07:18:57 +00:00
Marcelina Kościelnicka 851546bf2d tracer: add Python 3.11 support. 2022-06-30 18:20:18 +00:00
jreyesr 9b8354e137
vendor.lattice_machxo_2_3l: add support for the internal oscillator, OSCH. 2022-04-06 04:12:52 +00:00
Irides ee9da63287 build/plat: implement an override disabling debug Verilog generation.
Currently debug Verilog generation can take many 10's of seconds.
A new override can now be passed as `AMARANTH_debug_verilog`=0 on
the environment or by setting the `debug_verilog` keyword argument
to `Platform.build()` or `Platform.prepare_toolchain()` to `False`.

Fixes #623.
2022-04-05 23:09:43 +00:00
Irides 9eb208c332 build/plat: improve handling of get_override().
The existing functionality of get_override was poorly specified and
ill-purposed for boolean flags. This change extracts the core
variable retrieval logic to a helper function and adds a new handler
`get_override_flag` which special cases boolean flags.

The new behavior will also perform type checking on kwargs and inform
the user of the desired type expected.
2022-04-05 23:09:43 +00:00
Catherine 64771a065a Drop support for Python 3.6. 2022-04-04 09:39:28 +00:00
Irides 85d56a74a5 build.plat,setup: fix Jinja2 dependency.
Jinja2 version 2.11 has a broken dependency constraint that allows its
dependency on markupsafe to pull in a version that it is not actually
compatible with the interface of. Fix this by upgrading the dependency
to `~=3.0`. This requires a small patch to the code to replace the
deprecated `@jinja2.contextfunction` decorator with the replacement
`@jinja2.pass_context`since `@jinja2.contextfunction` is removed in
Jinja2 version 3.1.0.
2022-03-30 21:38:58 +00:00
Jean-François Nguyen f6253b3851 build.plat: use tool_env_var() in _toolchain_env_var. 2022-03-29 21:04:51 +00:00
Catherine 1f1d189441 build.run: pipeline SFTP operations to improve performance. 2022-03-17 05:38:58 +00:00
Catherine 4dea0b2d0f vendor.lattice_ecp5: on Diamond, only emit attributes if there are any. 2022-03-12 13:25:00 +00:00
Bastian Löher 02364a4fd7 sim: Fix clock phase in add_clock having to be specified in ps. 2022-02-04 16:46:52 +00:00
Alyssa Rosenzweig c83b51db6d back.verilog: Fix strip_internal_attrs
Fix the strip_internal_attrs parameter to verilog.convert by passing it
down the call stack as intended.

Signed-off-by: Alyssa Rosenzweig <alyssa@rosenzweig.io>
2022-01-27 06:42:59 +00:00
Irides 5a4d45b599
back.rtlil: avoid sync process emission in RTLIL.
Avoiding emission of sync processes in RTLIL allows us to avoid a dependency on
matching the behavior expected by Yosys, which generally expects sync processes
in RTLIL to match those emitted by the output from its own Verilog parser.
This also simplifies the logic used in emitting RTLIL overall.

Combinatorial processes are still emitted however. Without these the RTLIL does
not have a high-level understanding of Switch statements, which significantly
diminishes the quality of emitted Verilog, as these are converted to `$mux`
cells in Yosys, which become `?` constructs when converted back to Verilog.

Fixes #603.
Fixes #672.
2022-01-01 18:18:33 +00:00
Irides 538c14116c sim.pysim: use "bench" as a top level root for testbench signals.
Fixes #561.
2021-12-16 15:46:05 +00:00
Catherine 847e46927b back.{verilog,rtlil}: fix commit d83c4a1b.
The `ports` argument has been passed implicitly, via `**kwargs`, and
that was broken during the deprecation.

Closes #659.
2021-12-14 10:47:04 +00:00
Irides d83c4a1b21 back.{rtlil,verilog}: deprecate implicit ports.
Fixes #630.
2021-12-13 12:21:44 +00:00
Catherine 24c4da2b2f lib.fifo: clarify AsyncFIFO{,Buffered}.r_rst documentation. NFC. 2021-12-13 09:53:57 +00:00
Irides 40b92965c9 docs: cover amaranth.vendor. 2021-12-13 09:17:50 +00:00
modwizcode 1ee2482c6b sim: represent time internally as 1ps units
Using floats to represent simulation time internally isn't ideal
instead use 1ps internal units while continuing to use a floating
point based interface for compatibility.

Fixes #535.
2021-12-13 08:15:11 +00:00
modwizcode d2c569c45e docs: cover amaranth.lib.fifo. 2021-12-13 07:48:43 +00:00
Catherine 2adbe59e4f docs: formatting and readability improvements. 2021-12-13 06:33:36 +00:00
Catherine 18837b9029 docs: cover amaranth.lib.cdc. 2021-12-13 06:23:12 +00:00
Catherine 3a8cd63b23 docs: cover amaranth.lib.coding. 2021-12-13 05:48:31 +00:00
Irides 0b74d1c5f6 back.rtlil: support slicing on Parts
Fixes #605.
2021-12-11 16:44:29 +00:00
whitequark 7c161957bf build.dsl: check type of resource number.
Fixes #599.
2021-12-11 13:37:15 +00:00
whitequark 7e2b72826f sim.core: warn when driving a clock domain not in the simulation.
Closes #566.
2021-12-11 13:22:24 +00:00
whitequark ac13a5b3c9 sim._pyrtl: reject very large values.
A check that rejects very large wires already exists in back.rtlil
because they cause performance and correctness issues with Verilog
tooling. Similar performance issues exist with the Python simulator.

This commit also adjusts back.rtlil to use the OverflowError
exception, same as in sim._pyrtl.

Fixes #588.
2021-12-11 13:00:46 +00:00
whitequark 599615ee3a hdl.ir: reject elaboratables that elaborate to themselves.
Fixes #592.
2021-12-11 12:40:05 +00:00
whitequark 90777a65c8 build.plat,vendor: add missing compatibility shims for NMIGEN_ENV_*.
These have been mistakenly omitted from commit 909a3b8b.
2021-12-11 12:40:05 +00:00
Irides b1eba5fd82 vendor.xilinx: support setting options on synth_design
Closes #606.
2021-12-11 12:09:09 +00:00
whitequark fd7d01ef10 back.rtlil,cli: allow suppressing generation of src attributes.
Fixes #572.
2021-12-11 11:38:40 +00:00
whitequark 66295fa388 sim.pysim: refuse to write VCD files with whitespace in signal names.
Closes #595.
2021-12-11 11:12:25 +00:00
whitequark b452e0e871 hdl.ast: support division and modulo with negative divisor.
Fixes #621.

This commit bumps the Yosys version requirement to >=0.10.
2021-12-11 10:25:48 +00:00
whitequark 25573c5eff back.rtlil: extend unsigned operand of binop if another is signed.
Fixes #580.
2021-12-11 10:25:48 +00:00
whitequark 44b8bd29af hdl.ast: warn on bare integer value used in Cat()/Repl().
Fixes #639.
2021-12-11 08:18:33 +00:00
whitequark de7c9acb19 _utils: don't crash trying to flatten() strings.
Fixes #614.
2021-12-11 07:39:35 +00:00
whitequark 909a3b8be7 Rename nMigen to Amaranth HDL. 2021-12-10 10:34:13 +00:00