Commit graph

1400 commits

Author SHA1 Message Date
Catherine 750cbbc3c7 hdl: remove deprecated Sample, Past, Stable, Rose, Fell. 2023-12-13 11:13:14 +00:00
Catherine 475b0f35dd Implement RFC 19: Remove amaranth.lib.scheduler.
Closes #874.
2023-12-13 09:53:54 +00:00
Catherine 597b1b8839 Implement RFC 5: Remove Const.normalize.
Closes #754.
2023-12-13 09:53:54 +00:00
Catherine a2f3c544ee Release version 0.4. 2023-12-13 09:29:50 +00:00
Catherine 73e3ee695d docs/changes: add some missing items. 2023-12-13 09:29:50 +00:00
Catherine fc4d70486a docs/stdlib: write an introductory section.
Co-authored-by: Wanda <wanda-phi@users.noreply.github.com>
Co-authored-by: mcclure <mcclure@users.noreply.github.com>
2023-12-11 22:57:30 +00:00
Catherine a2aa07cbc7 lib.wiring: document amaranth-lang/rfcs#2. WIP
Co-authored-by: Charlotte <charlotte@hrzn.ee>
2023-12-11 22:57:30 +00:00
Jean-François Nguyen d154bddf17 lib.wiring: preserve insertion order in SignatureMembers.__iter__. 2023-12-11 22:34:57 +00:00
Wanda 8e6ae9e6e0 Implement RFC 38: Component signature immutability.
Fixes #996.
2023-12-11 19:51:32 +00:00
Wanda 6ad0d21cc9 Implement RFC 37: Make `Signature` immutable.
Fixes #995.
2023-12-11 19:01:32 +00:00
Catherine b9c2404f22 lib.wiring: make values of In and Out be strings "In" and "Out".
Their `str()` and `repr()` values are already that; and the 0 and 1
don't make sense. The RFC leaves it unspecified.
2023-12-11 18:04:37 +00:00
Wanda 3d0c5426df docs: Add changelog entries for RFCs 34, 35. 2023-12-11 10:39:02 +00:00
Wanda e9545efb22 Implement RFC 35: Add ShapeLike, ValueLike. 2023-12-09 13:57:30 +00:00
Wanda 422ba9ea51 lib.wiring: use tracer to obtain default Signature path and src_loc.
Fixes #987.
2023-12-07 21:50:34 +00:00
Catherine 7db049f37f Remove remaining traces of $verilog_initial_trigger.
This construct was originally removed in commit b452e0e8. It has not been relevant since Yosys 0.10.
2023-12-07 21:10:11 +00:00
Catherine 120375dabe lib.wiring: fix __repr__ for PureInterface subclasses.
Fixes #988.
2023-12-05 04:46:11 +00:00
Wanda 0cdcab0fbb Implement RFC 34: Rename amaranth.lib.wiring.Interface to PureInterface. 2023-12-04 21:41:47 +00:00
Wanda ab6503e352 lib.wiring: add __repr__ to Interface. 2023-12-03 02:00:20 +00:00
Wanda 28139f5f4b sim: disambiguate duplicate names of traced signals
Fixes #976.
2023-12-03 00:51:35 +00:00
Catherine 193fdaccd0 lib.data: mark Field as @final. 2023-12-01 20:50:35 +00:00
Catherine 3597c48eee lib.data: improve FlexibleLayout documentation.
Co-authored-by: mcclure <mcclure@users.noreply.github.com>
2023-12-01 20:50:35 +00:00
Wanda ef5cfa72bc Implement RFC 31: Enumeration type safety. 2023-11-29 10:50:34 +00:00
Catherine b0b193f1ad sim.pysim: admit non-signals in write_vcd(traces=...).
Rather than requiring each additional requested trace to be a signal,
all of the signals in the provided value are added to the GTKW file and
to the VCD file if they are not already there. This improves usability
for `lib.data` as struct fields can now be added to traces.
2023-11-28 12:21:21 +00:00
Wanda c6000b1097 lib.data: implement equality for View, reject all other operators. 2023-11-27 21:44:52 +00:00
Catherine 4bfe2cde6f sim: add support for dumping structure fields in VCD.
See #790.

This commit adds an entirely private API for describing formatting of
values that is used in the standard library, in departure from our
standing policy of not using private APIs in the standard library.

This is a temporary measure intended to get the version 0.4 released
faster, as it has been years in the making. It is expected that this
API will be made public in the version 0.5 after going through the usual
RFC process.

This commit only adds VCD lines for fields defined in `lib.data.Layout`
when using `sim.pysim`. The emitted RTLIL and Verilog remain the same.
It is expected that when `sim.cxxsim` lands, RTLIL/Verilog output will
include aliases for layout fields as well.

The value representation API also handles formatting of enumerations,
with no changes visible to the designer. The implementation of
`Signal(decoder=)` is changed as well to use the new API, with full
backwards compatibility and no public API changes.

Co-authored-by: Wanda <wanda@phinode.net>
2023-11-27 19:03:13 +00:00
Catherine 04f906965a lib.wiring: in is_compliant(sig, obj), check that obj is an interface object with that signature.
Fixes #935.
2023-11-27 18:50:41 +00:00
Catherine 8b48af6de8 lib.wiring: make sig.members += actually work. 2023-11-27 15:42:24 +00:00
Catherine 02756f6ec7 lib.wiring: comment cleanup. NFC 2023-11-27 15:42:24 +00:00
Catherine 1eea38c9c0 docs: fix sidebar CSS. 2023-11-27 15:42:24 +00:00
Catherine b2d8a18cbf lib.wiring: fix _gettypeattr fallback path. 2023-11-27 15:42:24 +00:00
Catherine a2e87b370e lib.wiring: fix typo in Signature.flatten. 2023-11-27 15:42:24 +00:00
Wanda 57748a66a6 lib.io: fix Pin.eq to work when FlippedInterface is involved.
This was broken by #915, when platform started handing out
`FlippedInterface` versions of `Pin`.
2023-11-27 06:35:55 +00:00
Catherine 74e613b49d lib.wiring: expand flipped object forwarding to respect @property and del.
Although `@property` is the most common case, any descriptors are now
properly supported.

The special casing of methods goes away as they work by having functions
implement the descriptor protocol. (`__get__` has some special behavior
to make this possible.)

This is some of the most cursed code I have ever written, yet it is
obviously necessary.
2023-11-26 12:53:59 +00:00
Catherine 79adbed313 sim.pysim: move name extractor functionality to Fragment.
At the moment there are two issues with assignment of names in pysim:
1. Names are not deduplicated. It is possible (and frequent) for names
   to be included twice in VCD output.
2. Names are different compared to what is emitted in RTLIL, Verilog,
   or CXXRTL output.

This commit fixes issue (1), and issue (2) will be fixed by the new IR.
2023-11-25 06:26:36 +00:00
Catherine e7b15e1321 sim._pyrtl: formatting. NFCI 2023-11-25 06:26:36 +00:00
Catherine 89d1c9bb28 docs: update changelog. 2023-11-25 02:05:54 +00:00
Catherine 28e1d2833f test_lib_fifo: eliminate uses of deprecated Past and Rose. 2023-11-25 01:22:32 +00:00
Wanda 1b74c2904c docs: fix required yosys version. 2023-11-24 04:14:27 +00:00
William D. Jones abd74ead55 lib.wiring: flip sub-interfaces accessed via FlippedInterface. 2023-11-22 03:07:41 +00:00
Wanda 1802f7fddd lib.wiring: fix search-and-replace accident. NFC 2023-11-21 16:16:59 +00:00
Catherine fc06dd7644 back.verilog: require Yosys >=0.35.
Fixes #931.
2023-11-21 14:52:42 +00:00
Catherine f9da3c0d16 Pyupgrade to 3.8+. NFCI 2023-11-14 13:07:21 +00:00
Catherine e55dec9615 CI: adjust the required job to never be skipped.
While this fails a normal required status check, the merge group will
succeed even if a required status check is skipped.
2023-10-30 20:31:51 +00:00
Vegard Storheil Eriksen 879601380d ast: allow overriding Value operators. 2023-10-30 20:17:51 +00:00
Wanda 1c3227d956 lib.enum: use plain EnumMeta as metaclass when shape not used. 2023-10-25 17:00:24 +00:00
Wanda 4e4085a95b Implement RFC 20: Deprecate non-FWFT FIFOs.
Tracking issue #875.
2023-10-24 20:49:51 +00:00
Wanda a60b9960c5 lib.fifo: reimplement SyncFIFOBuffered without inner SyncFIFO. 2023-10-24 20:49:51 +00:00
Wanda bfd962670d lib.fifo: make fwft=True the default 2023-10-24 20:49:51 +00:00
Wanda e53d78474f test_lib_wiring: squash UnusedElaboratable warnings. 2023-10-24 20:18:16 +00:00
Wanda 00699f7c41 lib.enum: allow using functional syntax for enum creation.
Fixes #910.
2023-10-21 05:46:12 +00:00