Skip to content

Commit 5ad9ed6

Browse files
authored
Update CHANGELOG.md for 0.12 release
I'm planning to release 0.12 on Monday. Also add some contributor information to the changelog.
1 parent 98d2b5c commit 5ad9ed6

1 file changed

Lines changed: 40 additions & 7 deletions

File tree

CHANGELOG.md

Lines changed: 40 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -6,25 +6,59 @@ releases published to PyPI are tracked here. No release candidates!
66
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
77
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
88

9+
## [0.12] - 2025-07-28
10+
11+
### Added
12+
13+
- [`GateGraph`](https://pyrtl.readthedocs.io/en/latest/blocks.html#module-pyrtl.gate_graph) is an alternative PyRTL logic representation, designed to simplify analysis.
14+
15+
### Changed
16+
17+
- Rewrote [`output_to_verilog`](https://pyrtl.readthedocs.io/en/latest/export.html#pyrtl.output_to_verilog) and [`output_verilog_testbench`](https://pyrtl.readthedocs.io/en/latest/export.html#pyrtl.output_verilog_testbench). The new implementation's output should be much easier to read:
18+
- Single-use expressions are inlined.
19+
- Try mangling unusable `WireVector` and `MemBlock` names first, before assigning them entirely new names.
20+
- Add comments to the generated Verilog that show the un-mangled names.
21+
- Many documentation improvements:
22+
- Most methods and functions now have examples.
23+
- Consistently use canonical top-level `pyrtl.*` names, rather than module-level names (`pyrtl.WireVector`, not `pyrtl.wire.WireVector`).
24+
- Enabled `intersphinx` for clickable standard library references (`list`, `dict`, etc).
25+
- Set up `doctest` for examples, to verify that documentation examples still work.
26+
- Switched from `pylint` and `pycodestyle` to `ruff`:
27+
- Applied many `ruff` fixes.
28+
- Reformatted the code with `ruff format`.
29+
- Updated `tox` to run `ruff check` and `ruff format`.
30+
31+
### Removed
32+
33+
- Removed remaining Python 2 support.
34+
35+
### Fixed
36+
37+
- Fixed XOR implementation in `and_inverter_synth` pass ([@EdwinChang24](https://github.com/EdwinChang24))
38+
- `output_verilog_testbench` should not re-initialize RomBlocks.
39+
- `FastSimulation` was not updating `init_menvalues` correctly.
40+
- Specify bitwidths for Verilog initial register and memory values. They were previously unsized constants, which are implicitly 32-bit signed, which could cause surprises.
41+
942
## [0.11.3] - 2025-06-12
1043

1144
### Added
1245

13-
- An optimization pass to [optimize inverter chains](https://github.com/UCSBarchlab/PyRTL/blob/d5f8dbe53f54e61e1d54722449e4894b885243c7/pyrtl/passes.py#L130)
14-
- `one_hot_to_binary` encoder ([documentation](https://pyrtl.readthedocs.io/en/latest/helpers.html#pyrtl.one_hot_to_binary))
15-
- `binary_to_one_hot` decoder ([documentation](https://pyrtl.readthedocs.io/en/latest/helpers.html#pyrtl.binary_to_one_hot))
46+
- An optimization pass to [optimize inverter chains](https://github.com/UCSBarchlab/PyRTL/blob/d5f8dbe53f54e61e1d54722449e4894b885243c7/pyrtl/passes.py#L130) ([@gaborszita](https://github.com/gaborszita))
47+
- `one_hot_to_binary` encoder ([documentation](https://pyrtl.readthedocs.io/en/latest/helpers.html#pyrtl.one_hot_to_binary)) ([@vaaniarora](https://github.com/vaaniarora))
48+
- `binary_to_one_hot` decoder ([documentation](https://pyrtl.readthedocs.io/en/latest/helpers.html#pyrtl.binary_to_one_hot)) ([@vaaniarora](https://github.com/vaaniarora))
1649

1750
### Changed
1851

1952
- More support for signed integers: Signed integers can now be used in `RomBlock`'s
20-
`romdata`, `Simulation`'s `mem_value_map`, and Verilog-style register reset values.
53+
`romdata`, `Simulation`'s `mem_value_map`
54+
- And Verilog-style register reset values ([@PrajwalVandana](https://github.com/PrajwalVandana))
2155
- Improved documentation:
2256
- [conditional_assignment](https://pyrtl.readthedocs.io/en/latest/basic.html#module-pyrtl.conditional)
2357
- [WireVector equality](https://pyrtl.readthedocs.io/en/latest/basic.html#wirevector-equality)
2458

2559
### Fixed
2660

27-
- Use iteration instead of recursion to avoid stack overflow in `find_producer`.
61+
- Use iteration instead of recursion to avoid stack overflow in `find_producer` ([@gaborszita](https://github.com/gaborszita))
2862

2963
## [0.11.2] - 2024-07-16
3064

@@ -51,8 +85,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
5185

5286
### Changed
5387

54-
- Major changes to `render_trace` visualization. See [examples and
55-
documentation](https://pyrtl.readthedocs.io/en/latest/simtest.html#wave-renderer)
88+
- Major changes to `render_trace` visualization. See [examples and documentation](https://pyrtl.readthedocs.io/en/latest/simtest.html#wave-renderer)
5689
- Many documentation and release process improvements.
5790

5891
### Fixed

0 commit comments

Comments
 (0)