Commit graph

1459 commits

Author SHA1 Message Date
Charlotte
63f9976267 tests.test_sim.SimulatorRegressionTestCase.test_bug_588: fix for Windows paths. 2023-06-22 03:52:55 +00:00
Charlotte
d218273b9b hdl.ast: deprecate Repl and remove from AST; add Value.replicate. 2023-06-22 03:52:55 +00:00
Marcelina Kościelnicka
b1cce87630 hdl.ast: make Value.__abs__ return unsigned shape. 2023-06-07 23:20:26 +00:00
Marcelina Kościelnicka
51391be1ae hdl.ast: ensure Value.cast in Part and Slice constructors. 2023-06-07 19:53:16 +00:00
Marcelina Kościelnicka
1b0fb1afbc hdl.ast: fix src_loc for Slice. 2023-06-07 19:52:14 +00:00
Marcelina Kościelnicka
3d3846e996 hdl.ast: fix ValueKey.__eq__. 2023-06-07 15:32:21 +00:00
Catherine
20db537162 CI: add PyPy3.8 and PyPy3.9. 2023-06-07 14:51:46 +00:00
Catherine
46433268cd docs/changes: update. 2023-06-07 13:50:04 +00:00
Marcelina Kościelnicka
1d5e090580 hdl.ast: fix shape for subtraction.
Fixes #813.
2023-06-07 12:34:30 +00:00
Marcelina Kościelnicka
3180a17fd9 hdl.ast: fix Slice validation.
Fixes #810.
2023-06-07 12:26:36 +00:00
Marcelina Kościelnicka
c7984463c7 hdl.ast: fix range handling in Shape.cast.
Fixes #803.
2023-06-07 12:26:30 +00:00
Catherine
fcbc8bd46f CI: enable building merge queue. 2023-06-07 13:22:38 +01:00
Marcelina Kościelnicka
a6e33abc5f hdl.ast: guard rotate_* against 0-width values.
Fixes #808.
2023-06-07 12:12:24 +01:00
Marcelina Kościelnicka
656db317d2 hdl.ast: fix signed Const normalization.
Fixes #805.
2023-06-07 11:22:52 +01:00
psentee
0681cb77b1
pyproject: relax pyvcd requirement to include 0.4.
The only breaking change in 0.4 is dropping support for Python 3.6,
which Amaranth has already dropped. It also adds official support for
3.10 and 3.11.

3ad7340072/CHANGELOG.rst
2023-06-04 19:42:05 +00:00
Catherine
a4402b507f hdl.dsl: py3.12+: turn off heuristic warning on ~True and ~False.
There is now an upstream deprecation warning for the same.
We don't have to duplicate it.
2023-06-02 13:45:15 +01:00
Catherine
58b8acac0d _toolchain.cxx: remove.
This is causing issues on Python 3.12 and in any case should be
based on the Python `ziglang` package instead of this cursed
setuptools hack.
2023-06-02 13:45:15 +01:00
Marcelina Kościelnicka
c343e879d3 tracer: fix STORE_DEREF handling, add EXTENDED_ARG support.
This fixes the following issues:

- on Python 3.10 and earlier, storing to free variables is now handled
  correctly
- on Python 3.11, `_varname_from_oparg` is now used, fixing problems
  with cell variables that are also arguments
- on all supported versions, EXTENDED_ARG is now parsed, ensuring proper
  handling for long functions

Fixes #792.
2023-06-01 19:18:43 +01:00
Catherine
2a45d0e9ad lib.data: warn if a field is shadowed by an attribute of the view.
Fixes #796.
2023-05-31 13:27:20 +01:00
Catherine
f96604f667 lib.data: make all layouts immutable.
This is actually an existing correctness requirement (for the similar
reasons that ValueCastable.as_value() must always return the same
value every time) that for some reason wasn't respected.
2023-05-23 23:19:29 +01:00
Catherine
52b9d3f799 Implement RFC 15: Lifting shape-castable objects.
See amaranth-lang/rfcs#15 and #784.

Note that this RFC breaks the existing syntax for initializing a view
with a new signal. Instances of `View(layout)` *must* be changed to
`Signal(layout)`.
2023-05-23 12:37:21 +01:00
Catherine
8af90620c0 CI: fix the document action for divergent branches.
This was never intended to merge anything.
2023-05-22 21:37:01 +01:00
Catherine
7d99981d57 Implement RFC 15: Lifting shape-castable objects.
See amaranth-lang/rfcs#15 and #784.

Note that this RFC breaks the existing syntax for initializing a view
with a new signal. Instances of `View(layout)` *must* be changed to
`Signal(layout)`.
2023-05-15 19:42:12 +01:00
Jean-François Nguyen
e9975587bf build.plat: replace -+ characters in _all_toolchain_env_vars.
Mixed-case variables are allowed since af7c1144, but '-' or '+' must be
replaced to avoid invalid names (e.g. "$AMARANTH_ENV_oss-cad-suite").
2023-05-15 18:25:49 +01:00
Catherine
a70cfa05cd lib.data: fix incorrect and very misleading example in documentation.
Found while working on amaranth/rfcs#15. The new code is also robust
in the face of RFC 15 itself (the value returned by Signal will change
but that will save work for the programmer).
2023-05-15 10:55:44 +01:00
Catherine
54d5c4c047 Implement RFC 9: Constant initialization for shape-castable objects.
See amaranth-lang/rfcs#9 and #771.
2023-05-12 23:41:57 +01:00
Catherine
ea5a150155 lib.data: fix documentation style. NFC 2023-05-12 23:41:57 +01:00
Catherine
7166455a6a lib.data: implement extensibility as specified in RFC 8.
See amaranth-lang/rfcs#8 and #772.
2023-05-12 20:03:08 +01:00
Catherine
68e292c681 lib.data: add reference documentation. 2023-05-12 19:54:47 +01:00
Catherine
a5ffa38e64 CI: fix publish-docs job. 2023-05-12 17:31:23 +00:00
Catherine
61a8f21319 CI: simplify publish-docs job. 2023-05-12 18:22:36 +01:00
Catherine
2d379d0010 CI: publish docs to GitHub pages in forks, per branch.
This is useful for previewing how documentation renders in a PR.
2023-05-12 18:22:36 +01:00
Catherine
4f70cd6294 CI: split document and publish steps, and skip publish in forks. 2023-05-12 18:22:36 +01:00
Catherine
4398575322 lib.enum: accept any const-castable expression as member value.
This behavior was introduced by amaranth-lang/rfcs#4. See #755.
2023-05-12 16:39:02 +01:00
Catherine
bf8bbb0f63 lib.enum: check member value shapes before subclassing. NFCI
This commit is a preparation for accepting const-castable expressions
as enum member values.

See #755.
2023-05-12 16:39:02 +01:00
Catherine
5f6b36e91f Add a workaround for python-poetry/poetry#7702. 2023-03-22 10:37:06 +00:00
Catherine
46e0a00a08 Add a workaround for setuptools erroring out on stale git checkouts. 2023-03-22 02:09:43 +00:00
Arusekk
5f094a23eb hdl.ast: Test *Castable subclasses on definition.
The __init_subclass__ method fires on class definition rather than use.
It also has the bonus impact that no __new__ method is defined, so the
classes can be correctly detected as mix-in classes by modules such as
enum.
2023-03-21 23:22:47 +00:00
Josuah Demangeon
a0307c343d docs: disambiguate Cat(a, b, ...) support for more than 2 arguments
I had this confusion while reading the doc.

Someone else also likely did:
https://github.com/bl0x/learn-fpga-amaranth/blob/main/06_alu/soc.py#L111
2023-03-21 14:16:27 +00:00
Catherine
80343d1c4c hdl.ast: warn on fencepost error in Signal(range(x), reset=x).
Also, relax the language reference inset from "warning" to "note"
since this is no longer something developers have to keep in mind
explicitly.
2023-03-13 20:38:41 +00:00
Catherine
32eabd9372 hdl.ast: remove Value.__hash__.
This is already undefined when defining `Value.__eq__`, and it makes
typecheckers (mypy, pyright/pylance) unhappy.
2023-03-06 19:44:53 +00:00
Catherine
ae1aeff0f2 lib.data: at most one Union field can have annotation with a default. 2023-03-04 09:34:50 +00:00
Jonathan Neuschäfer
e2ce959c90 build.run: Handle UTF-8 encoding errors in SSH output gracefully
In some cases, a toolchain might produce shell output that isn't correct
UTF-8. To avoid crashing in such cases, pass errors="replace" to
bytes.decode.

For example, Lattice Diamond uses the Latin-1 encoding for some reason.
This recently broke my setup because the month turned to "März" in a
German locale:

--- Start Time: Fr. M�r 3 20:01:41 2023
2023-03-04 00:51:29 +00:00
Catherine
16be75e02c lib.data: fix typo. 2023-03-03 09:03:53 +00:00
Catherine
0c4fda92fe hdl.ast: accept any constant-castable expression in Signal(reset=).
See amaranth-lang/rfcs#4.

This functionality was not explicitly specified in the RFC but it
falls under "anywhere an integer or an enumeration is accepted".
2023-03-03 06:22:56 +00:00
Catherine
f77a335abf lib.enum: change shape mismatch warning category to SyntaxWarning. 2023-03-03 06:14:53 +00:00
Catherine
c1b9c64e10 lib.data: ignore Python typing annotations in aggregate base class. 2023-03-03 03:45:12 +00:00
mndza
90b374c17a build.plat: fix strings as build option overrides.
This was broken in 097da99.
2023-03-02 10:50:14 +00:00
Marcelina Kościelnicka
e3e542afff vendor.xilinx: fix a SyntaxWarning. 2023-03-01 00:51:13 +00:00
Catherine
14e73a73de hdl.ast: do not cast comparand to shape in Shape.__eq__.
This doesn't match how other Python comparison operators work.
E.g. `1 == int("1")` but `1 != "1"`.
2023-02-28 15:52:50 +00:00