From f8a13749de4c9ab374cead9fb6c9016bbaa55300 Mon Sep 17 00:00:00 2001 From: Jeremy Lau <30300826+fdxmw@users.noreply.github.com> Date: Tue, 23 Jun 2026 16:19:43 -0700 Subject: [PATCH 1/2] Deploy GitHub pages (https://ucsbarchlab.github.io/PyRTL) from GitHub actions with Sphinx. This replaces the old `gh-pages` branch workflow, and generates the HTML with Sphinx so we don't have to edit HTML tags. We can also update the code, documentation, and webpage in the same commit. GitHub Pages' `index.html` is now generated from `www/index.rst`. Sphinx automatically runs from GitHub actions when changes are pushed to `www/`. Also: * Added simulation scripts (create `Simulation`, `step`, `render_trace`) to all code samples. * Move the code samples to separate `.py` files in `www/examples` so `ruff` can auto-format them and check them for lint, and `test_examples.py` can test them. * Add screenshots for all `render_trace` outputs. Remove the GCD block graph. Increase resolution for all screenshots. Set screenshot width in `em`s so the text in screenshots is the same size as surrounding text. * Add many type hints and links to PyRTL documentation and examples. * Fix many typos. * Remove Sphinx version information and copyright from documentation footers. * Update READMEs, add instructions for updating screenshots. * Move "Gotchas" and "Related Projects" sections to documentation. * Reduce `example2.py`'s number of simulated cycles so the screenshot displays better on narrow screens. --- .github/workflows/pages-deploy.yml | 36 +++ .gitignore | 2 +- README.md | 145 ++++++----- docs/README.md | 32 ++- docs/conf.py | 5 +- docs/images/gcd-graph.png | Bin 85012 -> 0 bytes docs/{screenshots => images}/gtkwave.png | Bin docs/index.rst | 146 +++++++++++ docs/screenshots/adder.png | Bin 0 -> 27226 bytes docs/screenshots/fir.png | Bin 0 -> 35951 bytes docs/screenshots/gcd.png | Bin 0 -> 28466 bytes docs/screenshots/index-demo.png | Bin 26739 -> 33479 bytes docs/screenshots/maxn.png | Bin 0 -> 34756 bytes docs/screenshots/mul.png | Bin 0 -> 28586 bytes docs/screenshots/pyrtl-counter.png | Bin 7661 -> 0 bytes .../screenshots/pyrtl-renderer-demo-ascii.png | Bin 6001 -> 16777 bytes .../pyrtl-renderer-demo-powerline.png | Bin 10975 -> 20893 bytes .../pyrtl-renderer-demo-utf-8-alt.png | Bin 7000 -> 19223 bytes .../pyrtl-renderer-demo-utf-8-basic.png | Bin 6091 -> 15772 bytes .../screenshots/pyrtl-renderer-demo-utf-8.png | Bin 9958 -> 17690 bytes docs/screenshots/pyrtl-statemachine.png | Bin 12024 -> 22256 bytes docs/screenshots/ripple-carry.png | Bin 0 -> 26741 bytes examples/example2-counter.py | 31 ++- ipynb-examples/example2-counter.ipynb | 31 ++- justfile | 8 +- pyproject.toml | 2 + pyrtl/simulation.py | 11 +- tests/test_examples.py | 31 ++- uv.lock | 85 +++++- www/README.md | 40 +++ www/_static/custom.css | 77 ++++++ www/conf.py | 51 ++++ www/examples/example-adder.py | 37 +++ www/examples/example-fir.py | 22 ++ www/examples/example-gcd.py | 39 +++ www/examples/example-maxn.py | 22 ++ www/examples/example-mul.py | 23 ++ www/examples/example-ripple-carry.py | 34 +++ www/index.rst | 244 ++++++++++++++++++ 39 files changed, 1027 insertions(+), 127 deletions(-) create mode 100644 .github/workflows/pages-deploy.yml delete mode 100644 docs/images/gcd-graph.png rename docs/{screenshots => images}/gtkwave.png (100%) create mode 100644 docs/screenshots/adder.png create mode 100644 docs/screenshots/fir.png create mode 100644 docs/screenshots/gcd.png create mode 100644 docs/screenshots/maxn.png create mode 100644 docs/screenshots/mul.png delete mode 100644 docs/screenshots/pyrtl-counter.png create mode 100644 docs/screenshots/ripple-carry.png create mode 100644 www/README.md create mode 100644 www/_static/custom.css create mode 100644 www/conf.py create mode 100644 www/examples/example-adder.py create mode 100644 www/examples/example-fir.py create mode 100644 www/examples/example-gcd.py create mode 100644 www/examples/example-maxn.py create mode 100644 www/examples/example-mul.py create mode 100644 www/examples/example-ripple-carry.py create mode 100644 www/index.rst diff --git a/.github/workflows/pages-deploy.yml b/.github/workflows/pages-deploy.yml new file mode 100644 index 00000000..81d27e87 --- /dev/null +++ b/.github/workflows/pages-deploy.yml @@ -0,0 +1,36 @@ +name: Deploy to GitHub Pages + +on: + push: + paths: + - www/** + - docs/screenshots/** + - docs/brand/** + +jobs: + build: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v7 + - uses: astral-sh/setup-uv@c771a70e6277c0a99b617c7a806ffedaca235ff9 # v9.0.0 + - name: Generate pages with Sphinx + run: uv run just www + - name: Upload static files as artifact + id: deployment + uses: actions/upload-pages-artifact@v3 + with: + path: www/_build/html + + deploy: + needs: build + permissions: + pages: write + id-token: write + environment: + name: github-pages + url: ${{ steps.deployment.outputs.page_url }} + runs-on: ubuntu-latest + steps: + - name: Deploy to GitHub Pages + id: deployment + uses: actions/deploy-pages@v4 diff --git a/.gitignore b/.gitignore index 9652cf77..160d2b3c 100644 --- a/.gitignore +++ b/.gitignore @@ -39,7 +39,7 @@ __pycache__ # Stuff specifically for PyRTL spice.net -docs/_build +_build # Verilog files # There must be a very good reason for someone to add a verilog file to the repo diff --git a/README.md b/README.md index e6e3797f..e274763f 100644 --- a/README.md +++ b/README.md @@ -13,25 +13,25 @@ PyRTL PyRTL provides a collection of classes for Pythonic [register-transfer level](https://en.wikipedia.org/wiki/Register-transfer_level) design, simulation, tracing, and testing suitable for teaching and research. -Simplicity, usability, clarity, and extensibility rather than performance or -optimization is the overarching goal. Features include: +Simplicity, usability, clarity, and extensibility are overarching goals, rather +than performance or optimization. Features include: * Elaboration-through-execution, meaning all of Python can be used including - introspection -* Design, instantiate, and simulate all in one file and without leaving Python + introspection. +* Design, instantiate, and simulate all in one file and without leaving Python. * Export to, or import from, common HDLs (BLIF-in, Verilog-out currently - supported) -* Examine execution with waveforms on the terminal or export to `.vcd` as - projects scale -* Elaboration, synthesis, and basic optimizations all included + supported). +* Examine execution with waveforms on the terminal or export to + [`.vcd`](https://en.wikipedia.org/wiki/Value_change_dump) as projects scale. +* Elaboration, synthesis, and basic optimizations all included. * Small and well-defined internal core structure means writing new transforms - is easier -* Batteries included means many useful components are already available and - more are coming every week + is easier. +* Batteries included means many useful components are already available. What README would be complete without a screenshot? Below you can see the -waveform rendered right on the terminal for a small state machine written in -PyRTL. +waveform rendered right on the terminal for a [small state +machine](https://github.com/UCSBarchlab/PyRTL/blob/development/examples/example3-statemachine.py) +written in PyRTL. ![Command-line waveform for PyRTL state machine](https://github.com/UCSBarchlab/PyRTL/blob/development/docs/screenshots/pyrtl-statemachine.png?raw=true "PyRTL State Machine Screenshot") @@ -43,44 +43,46 @@ PyRTL. [`examples`](https://github.com/UCSBarchlab/PyRTL/tree/development/examples) directory. You can also [try the examples on MyBinder](https://mybinder.org/v2/gh/UCSBarchlab/PyRTL/development?filepath=%2Fipynb-examples%2F). -* Full reference documentation is available at https://pyrtl.readthedocs.io/ +* [Full reference documentation](https://pyrtl.readthedocs.io/) is available. ### Package Contents -If you are just getting started with PyRTL it is suggested that you start with -the -[`examples`](https://github.com/UCSBarchlab/PyRTL/tree/development/examples) -first to get a sense of the "thinking with PyRTLs" required to design hardware -in this way. If you are looking for a deeper understanding, dive into the code -for the object `Block`. It is the core data structure at the heart of PyRTL and -defines its semantics at a high level -- everything is converted to or from the -small, simple set of primitives defined there. +If you are just getting started with PyRTL, try starting with the +[`examples`](https://github.com/UCSBarchlab/PyRTL/tree/development/examples) to +get a sense of the "thinking with PyRTLs" required to design hardware in this +way. If you are looking for a deeper understanding, dive into the code for the +object [`Block`](https://pyrtl.readthedocs.io/en/latest/blocks.html#blocks). It +is the core data structure at the heart of PyRTL and defines its semantics at a +high level -- everything is converted to or from the small, simple set of +primitives defined there. The package contains the following files and directories: * [`pyrtl`](https://github.com/UCSBarchlab/PyRTL/tree/development/pyrtl) - The src directory for the module. + The module's source code. * [`pyrtl/rtllib/`](https://github.com/UCSBarchlab/PyRTL/tree/development/pyrtl/rtllib) Finished PyRTL libraries which are hopefully both useful and documented. * [`examples`](https://github.com/UCSBarchlab/PyRTL/tree/development/examples) - A set of hardware design examples that show the main idea behind PyRTL. + A set of hardware design examples that show the main ideas behind PyRTL. * [`tests`](https://github.com/UCSBarchlab/PyRTL/tree/development/tests) A set of unit tests for PyRTL which you can run with `pytest`. * [`docs`](https://github.com/UCSBarchlab/PyRTL/tree/development/docs) - Location of the Sphinx documentation. + Documentation written in + [Sphinx](https://www.sphinx-doc.org/en/master/index.html) + [reStructuredText](https://www.sphinx-doc.org/en/master/usage/restructuredtext/basics.html#rst-primer). -### The PyRTL Development Environment +### PyRTL Development Environment -All PyRTL developers should use the exact same tools to avoid confusing +All PyRTL developers should use the same tool versions to avoid confusing situations where a test fails only on one person's computer, or the generated documentation looks weird on another person's computer. -PyRTL uses [`uv`](https://docs.astral.sh/uv/) to ensure everyone's development -environments are consistent. `uv` manages the installation and versioning for -all other PyRTL developer tools, like `pytest` and `ruff`. +PyRTL uses [`uv`](https://docs.astral.sh/uv/) to ensure all developers work in +the same environment. `uv` manages the installation and versioning for all +other PyRTL developer tools, like `pytest` and `ruff`. -So to set up a PyRTL development environment, you only need to install `uv`, by -following the -[`uv` installation instructions](https://docs.astral.sh/uv/getting-started/installation/) +To set up a PyRTL development environment, you only need to install `uv`, by +following the [`uv` installation +instructions](https://docs.astral.sh/uv/getting-started/installation/). After installing [`uv`](https://docs.astral.sh/uv/), you can run all the tests with: @@ -108,77 +110,78 @@ needed. `uv` caches installed software so future `uv` invocations will be fast. example, pick a `PyrtlError` that is not covered and add a unit test in [`tests`](https://github.com/UCSBarchlab/PyRTL/tree/development/tests) that will hit it. -* After you have that down check in the [PyRTL - Issues](https://github.com/UCSBarchlab/PyRTL/issues) list for a feature that - is marked as "beginner friendly". +* After you have that down check [PyRTL + Issues](https://github.com/UCSBarchlab/PyRTL/issues) for a feature that is + marked as "beginner friendly". * Once you have that down, ask for access to the PyRTL-research repo where we - keep a list of more advanced features and designs that could use more help! + keep experimental features and designs that could use more help! *Coding style* * All major functionality should have unit tests covering and documenting their - use -* All public functions and methods should have useful docstrings + use. +* All public functions and methods should have useful docstrings. * All code needs to conform to - [PEP8](https://www.python.org/dev/peps/pep-0008/) conventions + [PEP8](https://www.python.org/dev/peps/pep-0008/) conventions. * No new root-level dependencies on external libs, import locally if required - for special functions + for special functions. *Workflow* -* A useful reference for working with Git is this [Git - tutorial](https://www.atlassian.com/git/tutorials/) -* A useful Git Fork workflow for working on this repo is [found - here](http://blog.scottlowe.org/2015/01/27/using-fork-branch-git-workflow/) +* [This Git tutorial](https://www.atlassian.com/git/tutorials/) is a useful + reference for working with Git. +* [This blog + post](http://blog.scottlowe.org/2015/01/27/using-fork-branch-git-workflow/) + covers a useful Git Fork workflow for working on PyRTL. * The `development` branch is the primary stable working branch (everyone is - invited to submit pull requests) -* Bugs and minor enhancements tracked directly through the [issue - tracker](https://github.com/UCSBarchlab/PyRTL/issues) -* When posting a bug please post a small chunk of code that captures the bug, - e.g. [Issue #56](https://github.com/UCSBarchlab/PyRTL/issues/56) -* When pushing a fix to a bug or enhancement please reference issue number in + invited to submit pull requests)., +* Bugs and minor enhancements tracked directly through [GitHub + Issues](https://github.com/UCSBarchlab/PyRTL/issues). +* When posting a bug please include a small code sample that triggers the bug, + e.g. [Issue #56](https://github.com/UCSBarchlab/PyRTL/issues/56). +* When pushing a fix to a bug or enhancement please reference the Issue in the commit message, e.g. [Fix to Issue - #56](https://github.com/UCSBarchlab/PyRTL/commit/1d5730db168a9e4490c580cb930075715468047a) + #56](https://github.com/UCSBarchlab/PyRTL/commit/1d5730db168a9e4490c580cb930075715468047a). * Before sending a pull request, please run: ```shell $ uv run just presubmit ``` - to verify that all tests pass and that documentation can be generated with - your changes. + to verify that all tests pass and that all documentation can be generated + with your changes. *Documentation* * All important functionality should have an executable example in - [`examples`](https://github.com/UCSBarchlab/PyRTL/tree/development/examples) -* All classes should have a block comment with high level description of the - class -* All functions should follow the following (Sphinx parsable) docstring format: + [`examples`](https://github.com/UCSBarchlab/PyRTL/tree/development/examples). + +* All classes should have a [docstring](https://peps.python.org/pep-0257) that + describes the class at a high level. + +* All methods and functions should include a docstring in the following + Sphinx-parsable format: ```python - """One Line Summary (< 80 chars) of the function, followed by period. + """One Line Summary (< 88 chars) of the function, followed by period. - A long description of what this function does. Talk about what the user - should expect from this function and also what the users needs to do to use - the function (this part is optional). + A longer description of what this function does and does not do. Describe any + assumptions or invariants. Provide an example for user-facing functions. - :param param_name : Description of this parameter. - :param param_name : Longer parameter descriptions take up a newline with four + :param param1: Description of this parameter. + :param param2: Longer parameter descriptions take up a newline with four leading spaces like this. + + :raises Exception: If this function raises an exception, explain when that + occurs here. + :return: Description of function's return value. """ - # Developer Notes (Optional): - # - # These would be anything that the user does not need to know in order to use - # the functions. - # These notes can include internal workings of the function, the logic behind - # it, or how to extend it. ``` * Sphinx parses [Python type annotations](https://docs.python.org/3/library/typing.html), so put type information into annotations instead of docstrings. * The Sphinx-generated documentation is published to - https://pyrtl.readthedocs.io/ + https://pyrtl.readthedocs.io/ . * PyRTL's Sphinx build process is documented in [`docs/README.md`](https://github.com/UCSBarchlab/PyRTL/blob/development/docs/README.md). * PyRTL's release process is documented in diff --git a/docs/README.md b/docs/README.md index 52f03c75..87dc2ad4 100644 --- a/docs/README.md +++ b/docs/README.md @@ -24,11 +24,9 @@ Follow the instructions on this page to build a local copy of PyRTL's documentation. This is useful for verifying that PyRTL's documentation still renders correctly after making a local change. -There is additional PyRTL documentation in the [`gh-pages` -branch](https://github.com/UCSBarchlab/PyRTL/tree/gh-pages). This additional -documentation is pushed to https://ucsbarchlab.github.io/PyRTL/ by the -`pages-build-deployment` GitHub Action. This additional documentation is -written HTML and is not described further in this README. +There is additional PyRTL documentation in [GitHub +Pages](https://ucsbarchlab.github.io/PyRTL/), see +[`www/README.md`](https://github.com/UCSBarchlab/PyRTL/blob/development/www/README.md). ## Testing Documentation Examples @@ -65,3 +63,27 @@ $ uv run just docs This builds a local copy of PyRTL's documentation in `docs/_build/html`. `docs/_build/html/index.html` is the home page. + +## Screenshots + +PyRTL is difficult to screenshot consistently, because it typically runs in a +terminal window, and we rarely want to capture the whole window. + +To make our screenshots more consistent, we post-process them with `imagemagick`. +They are first trimmed, to remove any existing inconsistent border, then we add +a consistent 15-pixel black border: + +```shell +$ mogrify -strip -trim -bordercolor black -border 15 screenshot.png +``` + +When importing screenshots into documentation, it's important to set the image +width, because the screenshots typically contain text, and the screenshot's +text should be about the same size as the surrounding text. To compute the +proper `:width:`, take the width of the screenshot's text in characters (`">>> +sim.tracer.render_trace()"` is 29 characters, for example), add two (for the +15-pixel borders), then divide by two. Set width to `:width: {n}em`, where +`{n}` is the computed number (`{n}` is `15` for the example). + +PyRTL's current screenshots were taken in the Ghostty terminal, with 15-point +"JetBrains Mono", using the "Peppermint" theme. diff --git a/docs/conf.py b/docs/conf.py index c9d4bc56..fab1848c 100644 --- a/docs/conf.py +++ b/docs/conf.py @@ -23,8 +23,6 @@ # -- Project information ----------------------------------------------------- project = "PyRTL" -copyright = "2026, Timothy Sherwood" -author = "Timothy Sherwood" # -- General configuration --------------------------------------------------- @@ -96,6 +94,9 @@ ], } html_logo = "brand/pyrtl_logo.png" +html_show_sphinx = False +html_show_copyright = False +html_show_sourcelink = False # Force a light blue background color for inheritance-diagrams. The default is # transparent, which does not work well with Furo's dark mode. diff --git a/docs/images/gcd-graph.png b/docs/images/gcd-graph.png deleted file mode 100644 index f8985ff9d2e5ab6fcdacdbb96b00e4eb7f13e6d7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 85012 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 IY8>$Y04JKVKL7v# diff --git a/docs/screenshots/gtkwave.png b/docs/images/gtkwave.png similarity index 100% rename from docs/screenshots/gtkwave.png rename to docs/images/gtkwave.png diff --git a/docs/index.rst b/docs/index.rst index f17cad47..fdc82ef2 100644 --- a/docs/index.rst +++ b/docs/index.rst @@ -54,6 +54,7 @@ After installing PyRTL, you can copy and paste the code above into a Python interpreter. You should see simulation waveforms drawn right in your terminal: .. image:: ../docs/screenshots/index-demo.png + :width: 15em Line 14's call to :meth:`.Simulation.step_multiple` runs the simulation for five cycles, providing input values for ``a`` and ``b`` for each cycle. For @@ -158,6 +159,151 @@ encountered when constructing designs in the normal ways. If you hit a confusing .. autoclass:: pyrtl.PyrtlInternalError :members: +A Few Gotchas +============= + +While Python is an amazing language, DSLs in Python are always forced to make a +few compromises which can sometimes catch users in some unexpected ways. Watch +out for these "somewhat surprising features": + +* PyRTL never uses any of the "in-place arithmetic assignments" such as ``+=`` + or ``&=`` in the traditional ways. Instead only ``<<=`` and ``|=`` are + defined and they are used for wire-assignment and conditional-wire-assignment + respectively (more on both of these in `Example 3 + `_). + + If you declare:: + + x = WireVector(bitwidth=3) + + and:: + + y = WireVector(bitwidth=5) + + how do you assign ``x`` the value of ``y + 1``? If you do ``x = y + 1`` that + will replace the old definition of ``x`` entirely. Instead you need to write + ``x <<= y + 1`` which you can read as "``x`` gets its value from ``y + 1``". + +* The example above also shows off another aspect of PyRTL. The + :attr:`~.WireVector.bitwidth` of ``y`` is 5. The :attr:`~.WireVector.bitwidth` + of ``y + 1`` is actually 6 (PyRTL infers this automatically). But then when + you assign ``x <<= y + 1`` you are taking a 6-bit value and assigning it to a + 3-bit value. This is completely legal, and the value will be :meth:`truncated + <.WireVector.truncate>`, so only the least significant bits will be assigned. + Mind your bitwidths! + +* PyRTL's :class:`WireVectors <.WireVector>` overloads many useful operators, + including ``==`` and ``<`` which evaluate to a new :class:`~.WireVector` with + :attr:`~.WireVector.bitwidth` 1 to hold the result of the comparison. The + bitwise operators ``&``, ``|``, ``~`` and ``^`` are also defined (however + logic operations such as ``and`` and ``not`` are not defined). A really + tricky gotcha happens when you start combining these operators. Consider:: + + do_it = ready & state == 3 + + In Python, the bitwise ``&`` operator has `higher precedence + `_ + than ``==``, thus Python parses this as:: + + do_it = (ready & state) == 3 + + which is probably not what you intended! Make sure to use parentheses when + using comparisons with logic operations to be clear:: + + do_it = ready & (state == 3) + +* In PyRTL, all :class:`WireVectors <.WireVector>` are `unsigned`, so + :class:`~.WireVector` comparisons with ``<`` are unsigned comparisons. You + must explicitly call functions like :func:`~.signed_lt` for signed + comparisons. Similarly, if you pass a :class:`~.WireVector` to a function + that requires more bits that you have provided, the :class:`~.WireVector` + will be zero-extended by default. You must explicitly call + :meth:`~.WireVector.sign_extended` to sign-extend. `Example 1.1 + `_ + provides more examples of signed arithmetic in PyRTL. + +Related Projects +================ + +`Amaranth (previously nMigen) `_ + Another Python hardware project providing an open-source toolchain that has + a lot of wonderful stuff for working with FPGAs in particular. It has + support for evaluation board definitions, a System-on-Chip toolkit, and + more. I think it has a similar philosophy of trying to be easy to learn and + use and simplify the design of complex hardware with reusable components. + Amaranth (at the time of writing) has much better support on the back end + for a variety of real devices and low level stuff like managing clock + domains, but I think PyRTL provides some value in getting going right in + the command line and how it handles memories etc. I would be eager to see + the power of these tools combined in some way! + +`Chisel `_ + A project with similar goals to PyRTL but based on Scala instead of Python. + Scala provides some very helpful embedded language features and a rich type + system. Chisel is (like PyRTL) a elaborate-through-execution hardware + design language. With support for signed types, named hierarchies of wires + useful for hardware protocols, which inspired our :func:`.wire_struct`, + and a neat control structure call ``when`` that inspired our + :data:`~.conditional_assignment` contexts, Chisel is a powerful tool used + in some great research projects including RISC-V. Unlike Chisel, PyRTL has + concentrated on a simple to use and complete tool chain which is useful for + instructional projects, and provides a clearly defined and relatively + easy-to-manipulate intermediate structure in the class :class:`~.Block` + which allows rapid prototyping of hardware analysis routines which can then + be co-designed with the architecture. + +`SpinalHDL `_ + A different approach to HDL in Scala, very much aligned with the way PyRTL + is built. Invented independently, it is neat to see the convergent + evolution which, I think, points to something deeper about hardware design. + It has a lot of support and really well thought out structures. + +`MyHDL `_ + Another neat Python hardware project built around generators and + decorators. The semantics of this embedded language are close to Verilog + and unlike PyRTL, MyHDL allows asynchronous logic and higher level + modeling. Much like Verilog, only a structural "convertible subset" of the + language can be automatically synthesized into real hardware. PyRTL + requires all logic to be both synchronous and synthesizable which avoids a + common trap for beginners, it elaborates the design during execution + allowing the full power of Python in describing recursive or complex + hardware structures, and it allows for hardware synthesis, simulation, test + bench creation, and optimization all in the same framework. + +`Yosys `_ + An open source tool for Verilog RTL synthesis. It supports a huge subset of + Verilog-2005 and provides a basic set of synthesis algorithms. The goals of + this tool are quite different from PyRTL, but the two play together very + nicely. PyRTL's :func:`~.output_to_verilog` produces Verilog that can be + synthesized with Yosys. Similarly, PyRTL's :func:`~.input_from_verilog` + uses Yosys to synthesize complex Verilog designs to a simple library of + gates, before importing into PyRTL. + +`PyMTL3 (a.k.a. Mamba) `_ + A beta stage "open-source Python-based hardware generation, simulation, and + verification framework with multi-level hardware modeling support". One of + the neat things about this project is that they are trying to allow + simulation, modeling, and verification at multiple different levels of the + design from the functional level, the cycle-close level, and down to the + register-transfer level (where PyRTL really is built to play). Like MyHDL + they do some meta-programming tricks like parsing the Python AST to allow + executable software descriptions to be (under certain restrictions, sort of + like Verilog) automatically converted into implementable hardware. PyRTL, + on the other hand, is about providing a limited and composable set of data + structures for specifying an RTL implementation, thus avoiding the + distinction between synthesizable and non-synthesizable code (the execution + is the elaboration step). + +`ClaSH `_ + An embedded hardware description language in Haskell. Like PyRTL it + provides an approach suitable for both combinational and synchronous + sequential circuits and transforms these high-level descriptions to + low-level synthesizable Verilog HDL. Unlike PyRTL, designs are statically + typed (like VHDL), yet with a very high degree of type inference, enabling + both safe and fast prototying using concise descriptions. If you like + functional programming and hardware also check out `Lava + `_. + Reference Guide =============== .. toctree:: diff --git a/docs/screenshots/adder.png b/docs/screenshots/adder.png new file mode 100644 index 0000000000000000000000000000000000000000..beb54a84ecc606c5ffa7dfce96ff52c6537add3a GIT binary patch literal 27226 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 literal 0 HcmV?d00001 diff --git a/docs/screenshots/fir.png b/docs/screenshots/fir.png new file mode 100644 index 0000000000000000000000000000000000000000..be57ce2261dd55e89bf9ec2dec21c1625891c254 GIT binary patch literal 35951 zcmeFZX*kyJ`!#xNQ0Ac!86uUCDN5#{P)U+088Vm3lzEO+qNFla2uVm%smxPI6f#sY zOU4W#BJ6eb`#=BvJjZ_C>|?*#`#822-!F0B_vf0rp6cd?*wun)TH9mr+%fVhSaQa&W(@zE}ItPEWUu2K`Et_MR`k&X}K}Ie40Cm0+^x z!^0eBt_4}87d;MoAaHeIA!WTl$`=;819!J*MRn0IAKJpKm7cca-m9fK&48~?YCg~J zeeG08y5P!aV{boEf7{po_s9BT0g4Ve!iS_@l{9Z;^ zFJogsK)}sIX#*wWKYw1|e&p_YGi@?}OsaoREVG3*Yz_V*PSJPI@3F5T`!4(_YioPe zVf*d1Q{;zxd;9M>m8eGYD)xN;F6cHDcJ=Dj$FzoO96=5Z@88q%$hoOFJ4-x&{@nT3 z_k%WecC==q0s>OUe*gaMHIk7oVOPIteqljPkk#N1Z`l6e8$9wUW`!QIp5xpBe+D>A z3q2T2vJHnm@Z)h(T(u~oYz55v@<;CNsoIg`7hK}Mm~!^>(?*B9H$Jn%M@z!4KBm{y z)GS&YFWjW)BW-GGibu!%U)*)_)fOeCk`8N4505=}4sE+DeP$K@Q2KoP#@^oEt2b^` zS6*QX?GhxT7G5XsQ*W%LwZ8fW4_%bj8W9nZ@87@ov}7FD6^>Tp$ZjhtD(V>+Si57# zj_(5lxy{!^^{z1TJUjbYtp5JK4g2=(yL#;!Yk^kqDgPX0sd#$vl6is4Oni)Zn~u^z zzLlkkz+A^pIl*n)4Bkx8(b76k^&Q|=^4pY{n0UJF3FrNUgr*nvNAD~8#&|}tVo$|y zxzS`@&C1Gp^Uj?$6g&dnK3FZ8xxm<6%5&WG?^F$+@oPt(qT=FEF-8_nmQmlO;g0;> z8WEeQFrSNa6aA@?N)=71npsQBnvuMge|`;oDe~T}FU)3YW+oZ9?Dr-=pQiZCetgYr zA|G|@_U)-3_ncA=gtKcMJ*ug#O|LH;-B^X0*&q<5CE@$~oUELjT6(i()it)O5fPVk z(zBX;Hqx#o>oq?=f2ybK;(A6#jnaUnXa0*G$$O))A+8?k;Zd~H&T18qlw?_1UKAJD zx-}{`c842&`R?t^aPvCsFG|qrb&Ne7`4{p6w8eJpShx85r@D>~`+=!e@!m1rn8>ju8OJaatZvnQtY?c28$p}PT{ zRaFOuj*zuYVU74bWXRF|G_L8lcZYW2#o4G)mM9M@u7v7`-DkB0qSj+O*EA-pH@!N4 zQg+`yRe`82%F29UVPUea-`DFTDx4V3p1Cmi@xbS&W_A8Y()27VFEhyc%{zxqc)GZh z|NS%FROEf(T*n)hg9i`BN!ikNbauK-_Nb0^6>sLcPL1KUL=HT&Z{X#YbuJT%yp-qE z%^S|XOL(@h&qWT)k?S)%;;KB?RqPw592gMa&BP@PyLIlP70JTIo6qJvCq0eb^FxC@MNSbn{-vQ{5&0 zTH4xA+B~l97kGL0Gvm_YoMv6juHNt8*W{bt7#cb~_U$#3=Xgg(o6lP-$%=}K#?rvR zHPqASo z^N=I$;o5}R;($?KNe&KBbYo$f4< zd35C7Wqh`(DEn4H!8LpK?9tNFD*NVC$`G$j9i?^Y=1pcQ)Juw!IiLT;Y z1V!$Bt`AKXAIs$j{{Ct&>ofCM)io#6ye0JJY;k6(y?Wamo`z+sMudcqe~$2+RaaNn zv%I{uy3$Wis;a8;+!kf!)Qd28sE z@@K#O8aoc$2n)Gd-oLqWNsWlgV)L+yWK7i0KW?po4X2$Jts{7@qEgk!Vqe)84Vf)|J)~X^(e0SZ)&CT8T-1hLBf�S$H#8g+RXo*Zm9dv`SmL& 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

fi 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 literal 0 HcmV?d00001 diff --git a/docs/screenshots/index-demo.png b/docs/screenshots/index-demo.png index 4f6ccc9709d7b497bd1b7ce34443cf379f75fa25..d894ea4c0602da5f838d7316c45dc2d150dae578 100644 GIT binary patch literal 33479 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ξ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 Jb*B5T{{>3hk8A({ diff --git a/docs/screenshots/maxn.png b/docs/screenshots/maxn.png new file mode 100644 index 0000000000000000000000000000000000000000..d8dbfa3a20affb622ded69bd6cdfc1c822e1ee21 GIT binary patch literal 34756 zcmeFZc{JDS+drz>jY=pqvMCaxBAF|RLKHG(%A6=uW@#WIWKJ1ELXsq8E_3D~A@fXT zG7p{Cz4!Bd*6*xy)*04W>-_cn(Xw~p^B(T|x?aN;gtYVj@1yI(11QQ)hqo%tme7V=lc7yp0xD)P!&=-}6{ zUx%!-)@vs##BMuf^4;8c?_nAmTn*#j`@A1_b?KD&GSxiZvH$t;8|!c1zP&Lo!+vIf zOFJ*@PX21JT)0qof4{-}v~duX2fJvJvP?zrv77a;w_dt*X|y%Nx2Q-W){E7Zy5Le~ zb~dkm8TFDpZ=L~$G2Fw`+I_-&2ldu(NzmO2Z!mYQl^=rUGiPMy^o}0S@`$@ z={S|C_wH5eN;@PdxHqQmqW8X2lfQqzHmrK#>gsB~wqmcVt2?T|eMw?m@0j|hu5U*o zC1Mq#8clG)H~y@x?(vq4^-?wo;#7Gf9mIi8@Q;Y#z7!PyOg-K7+tTca{bGLzzO{R_ zB~_Z?5{+eE2onPXgO+_i9sbc>Ik6vKoYocxD* z&YiP!bex$i+-bEid4ragwp@dM_>d)&m#1gXuf{|Qe13I=sEmzGdVMiRK$EshxIsnm z370jew@L}o))ubRREGy07jL$vAKS2L``MT}^WKsjV#}kvHe)}pjgH;v%&UrvyjMQm zU-9kRx35i2A+{a%o6nrdKN)g)$)m0Gy=Hbv>z(||t4p&_e0>M&V`cjK`q(wOm|dym zBx350-&?U05fx2QPpW)=;?b@nayn`1GM^$xM@{K@v}7CKUK?&nJ#zU4UzFqg_&c@K zH?sW!^nT0Fi*=cWgkBsJwlVK1+FIYx5X9||_j9Bn?Uu^JM~~JuXWiv=-^s*1tM?%= za5w**4q0jGZ4S8+R0oB+hKJSOObc?+*t2&r3n`DeYQ^T?NvFf&<9M;Qy1e1pix=g| z`D^L}tN86tWkR^u**>0MT386Y=|bhm*YIB5QOk5`XF*T(RQr>OE#AVOEhaX<%nn|P zRk)gMW41ImCe!fd^3?RScud_hKfiO<)_lUY&KLNDa@UqdKH-6VX|lAmRQ+U3 z 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 literal 0 HcmV?d00001 diff --git a/docs/screenshots/mul.png b/docs/screenshots/mul.png new file mode 100644 index 0000000000000000000000000000000000000000..5ae2a3208d1f43859dfa98b3b473e773942c5947 GIT binary patch literal 28586 zcmeFZc{J8<+c$bO$ykz1C6r{IN@R>8(IA;KONo*pGg0P{N=V3DNs3D5c`Aw&DVZfA zGa0M>IlG_tS$nVb?zQ*(&;Dn>&$`#@_tfR`9nSMOKGSiAY8^k!K+8c(p->o(s2|d% zP*(F$D60&qsqi<)Z~T2lpKYc!DgrZ>d*^ zhc^w?T1wPd<|;RG_sda}OOV)pOFiII_USaM`WyWG{1tuG!MEb$PumvnyV#L@si(|+ zVUowbv*2oYIQ{R~zzK75BQ-J?E?(Tk#uoC_q`0c1gG1WBvtnwX-o^fFvhtdeKTD%* zvX}WyOWdz^6}t`0{`mObHqTRNW7mz$jJNOJ<+@Kb6(k&@cN6uS1*2`sEBNG!jyM6!q$jHbf zCnr;ue~nd-cNGi$95|_^<@f%*mb~XIb*!jKRlAul11l?QIGe=kFJHba{CJpTYrLP-Otk z=JzEY&f@g`$;sRozP`%VNIcqRE45?i&Z#%MlX?dmV;N}!$!qJ#zhpKreNt0hBswuM zVxnw$!>3Q5UcY;nJx4>0HT&Dy#ie$*C2bYO(a~|?&+^2r*jW8+D{?UvSJ&KC^pSm% zo!#>A1Xn;{UYrj@Dlx}ibE)z!6dSx!c#0uO%3S-5e>u3hU4 z4Gpcw#h7XPhKH#$b*|sJ!;Jr{sH>yeaf=%NhIhA~f|XU#&_GLH&AoHynz*<)bHm^D zTB5PlZ{B3qSgB5&;AbWaf+;k;^@?CLZF7>6*jzzI#;%_~e^Mx7rX>fiTv2@c_O1E( z^E9D{R%h$cWoUqlPE2!9Q;!_SEom^ITkqh0bRjVc^C;cKKjzuiZu<_EI z4B5igZYxjawV`tGv!={uFRJ$YfBi2Ud-Z1APCa6)wAz6K6j`@%`g7;by&iO;Uc35{ zjvzMB4te=)=b92K+p_c1;mGYj6!^wE z@~VqmMlUO#v$FE%@?AMO)^F|KsCB>zHGru~xkmSFys^-`jh>YL{JMVWIm}|GMq+?tYth zAJ_SuqQ%RUa_Zr6HW>$QqkMaY!-o&QJ|oE=t-;I3*N@^U~`wF z=dWK63bX9oy?Z@24E2T$b@eGu)kvCDN}DtE2~XROxpI|#>U1u_Fb|v zvankHCcaWQr8&xnRB}K+_mLDbgq`eQ8tOZIIx!TUoPL%kY zadDx+8@b3{)Dn!2zJBspPpm*∾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 WJI)x^jXU@hvn}S%NHzaz+rI!!*Pi15 literal 0 HcmV?d00001 diff --git a/docs/screenshots/pyrtl-counter.png b/docs/screenshots/pyrtl-counter.png deleted file mode 100644 index c4737e0c9d96cd0974a26aa132481c564e96f3ae..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7661 zcmb_>cT`is)^F&D0t$rQQNSR*BZvs0gOpIDN|oMwmm&~42uPJq=pZ$8f`Uj1NE4|6 z=_II>Aoaz2*S+_B>%Q;5H*3w=`^^5${>_}(YtO7R@jBWnKwZ-w=e`J@}&uYzGsSgE?lJ?Xe$YiNqB?> zseRGYFXOFU)=^E%WE}RSZa3!be2rfW_for0r6hP3JSlBUZTtg&%x$B@UbRGmJyAxm zyHl5vIcJUia<1oAp$p&l$TqubiZ#^8<`-2ZeIdg)HY}xeI>oP1X#jK5Z#oEuXK|Iv zubP>+bW#OMXA_!;DCEFiN+t!Dh2!1rryJSBG9&Wk={av_7 z*3U%ct8OOjtkmJjn4H97)L`fZlDy1v96mcjg~>7m02rCnloTKV-_ZquPay^u!}6ko zfI-fVh{(0bExnFZXmCAmZf-?)Z%+AEZ&q+_F8sKH|4>l0y=8vvfqs+OwAgJ)F-b2) zu$C5)<~>_W`>=2!k5>ScnGf_hNR6axIZ4%h&*eTbyaRQL5J6QF5KHD&#+uJEib&TdPQK0ANI0peUpnGe9ZZ3w`UhACXVW*Dd=c@ng|`+x&a?569Sv>FxtGsc0;vW$nj@COq!`5y>8Joo}7Z zeQ?vUY-&{4Uvpilez>3NUSKCN9HN($9Xz2-u8pBxFzh~=d;F(G(5q{?W37~MbAfIJ zBkie9L^NaclArPLG97Wj7ij(YNomcQpIm!w!oFm%`=nh@SPqiu=k(00VTqaFFRw)U zHvQUbhWHr_Wn9jAkiQq4Eh-ur{4qsHM-G+SJtSGN8nF@<*f*`OFVb@vH!_u2Rukgf zQTe@Yudyaw_jn@8Pbi4!eWYRt1fz~3xhWiLXc?-6n&1OIz9|i%K0QPOx(MehLD=2&Iq*AB7NcFt6y9j&YkAEe^`;dXE1jN$C@O*8p(*JDEfU< z=&Q6pCG+QL0pqE7-{G9)d+~*iJqB_q*+Yi;*?O@zS;U|ll%?+K5>P9%TK;LKcE0q> zsw5b;>9$T=*rFEti~hvL%=W5#6FnH6`v=mlVkGZ-!{>J1qvM$#7VO+ZaU9g+SRSs} z0P_1L-Vr|J=^MeSwVS-%Anv&CY*E>=erZ=!s=LkLgXyf-Dqo~CqlH@*IJZ|7%F*Yp z_Q)YvwQ`0$>ycMxf;@|A9?bon0et9oOJ-q(gnrYS%&Y>#+4^B5BsX16ls$Cb(E(j2R^)Ku^iBTPRRCz_R_q(GJD>BMeQSD+NJqYF z>O9;jQ8Q+u5zCn=Dk?g~M%ax%yDqwI9`a(z^H}Q*L9N4|J*`e-v8gidL&DR<87wN# zVKt#;etLGEs^L!P9r< zGjlUfBNWY}p8diKw)DwgE!%6jMAH^=j2Vk=OXk1t!9Gd!+xRAv?DFmBTzb4wKeZpr z)>bkTeZ-CSUhr)YA33iHwGzgB)qSl$fiDGc&9{neRL|_)x!%7t)!n(+|OEqtjYJqhvH=t+pU> z)7JLWpaaf~&9H|>ePFYUv`d>Nf}fFij9QK`4|}7o1y_29a+3;6zPEn zs^}I)O4~f&KFybxk^~{1bCqCZ9(r_F5M`nsDXAbu<;BDj$&}XarM5Kw3(VhT6}vDpK#f(3v$^oXq>Aj2?Ea zdJM^!VbkLn)iW7Rea2qllgKpe!{u#y`n~(6l+xjj*aNvJ{J2t+`}Ex#T4Etd{4Ar- zbE?VL^TzMK;}MZ$icn;Az1U?A8+HJ`SEVkRJqYf}Bufvp$Of|qz7pB}J!c(nv*B>%vdj;*{`dBj4;WcW(bC$7?&c3YPQGoY8_S! z)RC9nfP43U0JTf`Vnj? zV}|VO?kc5u!jX&COf51{`13o}2#QtNN`2aebdjC?-90Cr7QCCO>nDR#v$M0-q$;Rs zWH~O*=Ece*M>|d=34PYn4MwHK`Oq)WlMUSb&VMGa)eBV*01|#6^Gb@w4U8W7{_`=D zN_5-yGp!-IyN5FrQUTQUEN{8940b*ygsO5p>|Q;CVsXPr?u#~D_FZIq*4qjb4> z{6|moFv}b+>h*0^at2|9^Z}0~LoS#sHiqz=`9Wu!Uai75{m117gSa8L8tb*mp2f=5 z;-Zg=zkl<3SdZgZ!meCMyv5TWPV{oZ_#(-nBo9+lQSeZlVUVg1GUQ?*gin)D# zpJhT*dsXTW$OBu-VK|(zaq(5S-tyMnVe_Mdwim^efDhEN0KGTNpGEG;*)@EUiTU`N zL@(c$=gFPA-&A}^>-;p-+)dOnceY-d<-_r(kp^u!iyL(Ps&Ie0tMlzVK;%?W**`TD~#+coJUm+w~J) z*m>3p;>#|UP*K0~#|uv(g`A(=yNz{+PfhGEg3p{U_|jDGQ^hO&Hg=@p0P6i};r)6oR;3Y3Q4PgemabH@MBO)FL941_?jkYUcMrEikg2s{I1m%DM=w9yRd%#&3JTmDs+ zCx@OEt?R1-ve&VJ7OrornUwG{(@*16j79>PS6cNExnJdBGTB68%q3o^^Q zcS6DSv9!i6+$ODICXo}1G;6P>2fIs(3q}`GWp>Lb+-7ED5(E`tArTo|8PPy!R0)QU zOc$FerHl0jA~2@2oIAZ*%DPugxgQ%}72bL$qzKXV?Co=a<(ysxdd&2NBv`$Nf~>K4 zuP0zZwH|QE1#cZ$GnI3N2qAIlH(lJf{P8Dkw;gP*SUw|2^FJ>CRKF&#(4sLQe2yBr zhSuTJ-k~wzrGR!e@G31Et>Y?9$zRgFzoe<$RW_WWL4E;7$N3n`>lg3a4a8F|ew=DJ zelLHmfVhbmPEkZZ)vl)n0yI6;3L7}hRF+JguvwO*qZpXpqYHeec7?N1+Pb*?w?k+1 zdAmv^7O%$Hdh{5CTZ&)R7CrOSnF$4R?DbOd?Ddx1^irpQ@E!#i5TgFr480eHoZ7=AN8e%92Rrf%%9<$la9dM-dM% zUwFvswlE2N#QUXO&|HK-DClB=F|Z5ueAq=6e*)aS_^$t|^860$bT6k4ggC5;8|S9} zEw|djd)eJ&d4tmS9ALMcX13{as-#RHYdL#FM0}?MR6Us(^}>!5`^aeiYC^k02elTe z!r1U_x=8c#nXbatr|$~;MRgRYSkBe<5RM<$SCOsHa3RBQO6$G)j04kKhoSSuNH1?r znLflnI?{?!J4Z{{$vbc|TlxZu`=+dHHLPMNO6Cj1GFiE51BzvAD`r{c49(|*?}ced zN%=w|xnXzQ-_sZ}7Z0@f2|mAn-QD?NOx6{%=tNVVWBn;yt)b)Hdv}oL59fh~Pa;pH z!k|wuH!}u4y9Wy#Y{#pJBLvjqe$PtrGTwPt&B%sjg4X(!TY`oirguD+KN|R+jq68- z|7c^cabL#i4BWj&x24uq^5lK9LHbdMzW8NZloMj0_1n%G3dPP$nSF5#Cl2-${EbC= z1!T$HyDtzU`^f*@cC!Y)oAWi*q&lBVtT7L=?UE~Jhm=n z7mkz!mUSZG#!^$OYBBad*VZAl1dIbZq0-v;m7>Q_KvW%s&EQW;(J$xnxgFg|8an&p z)%CELx}~H|Y{K+aB{DRRIf2T7s0HCL%ELhWGh`Z(gWY8>5-za}iXE-`Tb#URSmvo6 zl$75Tv2PG3MF8aJ49WthBFIRgpzl*{x!z2C6$wZ{R#L6^ezhY&3CZN zhJPGj^^xjK7YO1kyb94*QKjw4px2cPxS8TEkmguQIq=>I99WlgpFz^IT$@qWlQD%X zwVO{5maC+CDnsy&*WcwnC+w4;ln#e|6_ToWHuHh#HssPUalHt30mWCq0zWlJ{v)LT zW5}?sBG9>;u7iVxmsEX`A|>+u?}S4*g2da3w)1GU9U2#(u{%cbce>c`?_&})8PDD~ zu8-OmY6v-=H9(QSe4Sx3G)=vpIX47nyKNoH@@b+@PyBc(!uWT3OD4Ak_-P>YME^)2 zH8;;cD!=mi6_uPLWFGjctC16H|L*7IEa5CvR1s;L7HGfYID2*PJ%s7;F%9FoJ^HSp z8B+l7t&**3=|Cs7Zss zZ#oxo|Kgvopx5SQ*F?{&G-wL!GZJ){&1S6AitQ!VxQ<%jf_?j-G+B@rjoSSbC^ML9 zq?A)7O^NfL+t2?8aigRZ{s}8sauFQkRtSFqVpS+EOkYT$D$;?es4;=XjcBi_Cm#|_ zXn>o5dk=H2cyE!#P)S0~jEo*~uA8h9R`FImlY7w2_CPUBL+&XL<0V~D!D12YF7}Ij zZdr*j*~#0nu(x-?0vfz8N@0i2;Ni3K{B)@G!x?>%3tc@L>9>u#GcS|j?;daKn;p$% zhRK5)2poKVXQd)&SaML+2E`qD>3>T}Gc^+L{{6j!Xm9#MAdiYkNLEyU{MYqn?=q65m4jwhwRuZ|NYdb>O+wFnaBvZ#uYYMA+%(Gsn7Icz91B2ST0WD&R8ARzDF5 z&J4~r*LATZ17kh;0eTmfyo-aF??|LU+qVuk>-@PH>EI-9G|Lbt(6iwNHTCdhtI&QE z4173cP-9s4lcb;~9t5Z`L$9iJSD&?Fv~Z0kt#)9bGzI_f>waz7VZm*u8C=s|)LT>* z*={WP<>#T_iQ4<+8sipU--_FBE>==(W@rMQn2UNTrwu*k67?6B>r;BbW%=d0>!_>R z)N%(y&$?{B(B_&os5uC3c80W23hMpxH6A3dy9wPk^Gbyw_@$&et|%pC$fx2!5zBnt z@-5U2d)J*Z36W7zQG8^4{bzeYd6U`D-O0zYplTvm$&dPvH_l&IKJ+cA|0+-^PMtn>y*XcCjFXnu6_jh9j-ku2PBaHv~8Jon>U?OdiM0@sff?1*4*Ln6JM;~L}*;)$UhZ@uq zE}tYtB_t?pTwGja@ywR8?g7<9`5XWK8KC|YgcKF6uivbhL@74UpI>(S(&~?HrZmW@ zDK)v~&1-;Y{CsOZ*6tVFuN9gQrfBGIZ#bYb@|bW`y^Y4^MFVf`$4hywHyd%yo`i4- z%JAZ18;y%?ivE5M>VpLW0cNoQ)YNIvXi=P4T>o!`62pOggy2Nb8sSnrtR#O54D&;` z%<>t10j!B_Cpi-O(@fIAq#h5u_2!X*cN^fB6MqZ_!NAr0;EIOM>U?ME@b!t`$gn&2 z3|usSS?Eb`$memp>P{aW^LM-4t^|AAkWSVhO5ux^NRc2-#2g=a&e9rsaAo>%_VcJEi+Z|E{~PcRm< z+~qHm64lba@s^HTcFd8BV&DTlf||RMrYeqw7OTt#B(vdu%C!#p@s5Rx>VvL<0l)%& zs0Zc?s}$F1OYUT5;->)L%FxGUzSR`o8kQm=)v{ZYpo7P;Bx1z5>4j-yM>3@MrIDIZ z`{8AK&>40}t@MOl1w}%c{gYP+OFU=|A)NTCJ!K`^9-AHdJT=ug@@2}JgtrT&ykzgg z1Pq9~;1%XWmG4bUSn7uuOniJ9P@nLK|e=?Y;=|J>yOn;97O5})}R+owU%`c-z6aeQultftkdCc+ehl@jPdr@W=a=4uIaCfxD_ z7Jiy_TGLqq?cku}BVLlW#_BTts{Z<&r*;I6PAyFh`-Y(Gw`MgTx&}RAq@ue?8EaGr zis$aYyM!^=qp7<`7(6G5zFvZ*VEbBt_I@byXXCVM8(&Hu?K+E;!J1q_*1&Vhmt>TF zc#~~#pzj}raX7ht?EUAiq~v|_+t`<(nwlW2jrALXCN8Q3!^T*78*6I_?_PUSCj&U@ zIUi^B=P;6slYsqgC19(?*~U^P32M}!zMS(9!-U*-JO(T(21%%8FnynGapl1md|0OIS#i?%Xx?W8foCHma=_rCeW@w z=HKS)b{?w|+Bs-XR+l%oC4G!Z1_5*R&WCj~gUZ-qF03k|Lp4%FXRCn>%~-_@2#v-+ z4lC&;pNr{Nzc%wf*nrbKul~<@q_L3k+W+XKo)-%5VFqqJcR6QmXRKzgr3C=tbW#9btRsLB zr{Uo$Bd!7fgz0YpBsfWht2#w^00NxE`)e=4{}++~Ttx6M9pH|$0~GWX)zolO-^R<% z&duAw-KTUj_9?F6fe+Z&$JWZnP6lVe34n-@h#0?+D8GmZL_|bJSXxF*j88~NMo7rT z)bad(bZ~XIb+ixs-#f4nPbuR%@cx^@$I;c!+s6ubr}*C_lK&(LzS#Ra+k1ce*abM+ z%P6|LxO?e)SlQSCgemjz|IUHx-$pPF@!a0t+s+3dBB9SzVu!QR|J$nL7+~jOtb`+V z^LBK114xNVURL)+{x{~ue=x$r!mS)dV>k@$zx^0^+j%LvyW-sV{PR1uY?!Rz5OjYL zxEoTL{|C`l`A^FKg8WaO1_87J4#M~^FaI~qf0k)_?L!C-1yBQPE7d=H8To$z!c&__ diff --git a/docs/screenshots/pyrtl-renderer-demo-ascii.png b/docs/screenshots/pyrtl-renderer-demo-ascii.png index 32ba0004fc3c969c233412699a6f50ddd4e004aa..4e3023e1c6e94b5e4bbececeb4cca7055a2dc560 100644 GIT binary patch literal 16777 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 diff --git a/docs/screenshots/pyrtl-renderer-demo-powerline.png b/docs/screenshots/pyrtl-renderer-demo-powerline.png index 0f963e541efd3a7f7aa84846826932d284b4ac8f..d5c6a04a9ce9aa8604fc5809a15a1c721e6a99a1 100644 GIT binary patch literal 20893 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 F{ss3D#j5}S literal 10975 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 E1-LO(kN^Mx diff --git a/docs/screenshots/pyrtl-renderer-demo-utf-8-alt.png b/docs/screenshots/pyrtl-renderer-demo-utf-8-alt.png index 4bb47b9f5387b8c3fcf34eedb2975ea6c33badc1..5c5dc28ba87cd24d3f6f68a76b5529967ff40b2d 100644 GIT binary patch literal 19223 zcmce;1yCGcyYAaq2#{cb5Ilhp2<{MI7)X%d5G*)BgS!oy5F|lEa2ed)T>`<~-DU7W z28ZEJ{@=c5?|bgqr@p$k>U4EY)%0|&UfsRc`#$Tpo;BZ<6{R2JQs4pr@L1-(#0LPt zs00A?mk&_~fSphDw*Vl!BqJfN=010j;$}!6*uhb=;le|cGdn@M$ymW; zpInXnpBJRSFFoEtx4P$!Tih65Tg_G>@Ba~i$ph7=h*6n&cS7#R<82G#E0m#Fdfg`JdvLVX ze=ENGEn)H5E&NHQGPF?`EALE`z^0+=2~j0y+17E)?3=e4LLA3^xBWIPZs6d25BKXy zuP?mKu$z6)!eIE~m(u!a$T@7;{hH7DJsEg<%&J?!^u)H?WhIy$js3b%T0l3Z1D1+> zCmM28e>Sl{&?^Lpit0URa!cgsa#?fs)$yQ7-NtFl^_)h-8W8^NrM90i(fNPcXzqD zuPGd+%646pAMa-H97EA9;<lmw9T}@2(*WuCjT_%IIR95-euL>)fF{APizZdp;#@6Ah}OnBtcQ!w#5@2z zK+q5I(Wm#YPBSp9_*l3c2;MI-zW;@I=(!N z(qor6>-g?GyPMC(egzvs#l$?@@IkK z)r?IYNBSo!BI4K8cILBv9Z#W^kCL-0f(aj*G&FCzZPHE$IJ$VLxg6l7f0Fep&$LQc zP2kZ9K<}%xi`K3PbK)!IbLy%qh%_hHY<^Vd6!SCeKw~}}{jhd#bwN&aMowMk2G<=pETqtsrq>J&j+7uWeT3NEFzizYdzrI8#>>-yB?f83*#NxArGB0eh zT1RVGZ%>{NN%7aVQqK_`E>b(%C)bwT9c$$e|q+KBW_6}=- zYdZWThL zWZw#3qzO2NA2(~=&Rt^DKpy7JweA8JOMmQVw-<*UqsZL}N^p~ZMhz>T)vHfhw?FUl zoj29`-~l53Jfquo?<4zk-C>%u)Pezg{K)5zk{Nd^KiV_mUoGLVMnokC@Y(3*Gn{?% z4ZX41j$fFkoY5;+nmi9xF+#s@%KIA;5BJuwfZdsv+`8Py@dWbt$@V9NK&s}vp?}*a zx+~UR7%%1Ddu-N9e_ggNluZ4ZmZpnpj_#btP!wY=w1d*T~6JJToB zPir<}h1TJ_1>Jc%j^SZPjX89f!c%u24-crQ4>f0=K5g!ORaVNUWFR8SbiAJ%;uvSdkY1W54o7t|7hDFqwvhcI z6e#>ox^}I&rX_^0ED7yUBoRMx%|CW8zTWqFUb7gn8C}8DaZ3WB<>lEkfP}SigIjNq zTD|%N&N60~e7!1!>qB-u#oPyrdJ1zYoEz@@W;w%JTNF_`LzF;pY2Wgj)37-M4WJM{ zSy=1OJoZn&7WT&fOs~vLZR8N>#uxsoFZ(EKld#Im{KhXHZ{brH!WqcSHO7V`e92#= z)_dEs@#$D)ML6smy~9w;)IaIDp2k65(7!DhnjEm*Z2kzZZJP>gpCjkNEtqtI8a`=dQ&5qsv|e3kvKWY)9Izc&hX?H zLbG)L3LW;oU;`U(xx5LE6+M>_>;I*a`6>JXunio(K9mAgiBG9Q@x}Okx%FtLzjieB zs}IK5k806kqra8@Rgn93hU4^d$;Kp=?4xXh%M~hm^DnQ=FID3LZ!>?sW>8%)xH|=l zG7uUvUpVgB|G;WPtR_K}tId4RI^y14635hgy3JWV@IwL@o5~%em2PmSSHKZPz*oE# zhAixo<3j!gPR~vQP7J^9MJBRDoMizb=?|pqr@b26e`6O&<>j|yJA>%->gXE0Z6Z?QuGJ$K_pIg+MlOY}FPCoA4iuk+dqp{=i!=CTH zm42UDISCJ?4|@SM|!(CKwRYc$nKeX&VuV~y0`muckm=jDA6?E}M>vSjn%=Uz~k$DJ#` z0pty-ru_ToYU|yaV9MWboZ61gGZa550b-M@r0x9@SX_6xHur5oH0XvxmC3M)Zbb3D zcT1);2B*QTNCa53LSPDSu`k`yqK)ugB@-yq>c`9>ZUnP<4>nI{ikR}I_n#v=Z7(tE+vDte%s)~8a}~UrKV1>!s|5!yH_vs~u;sC^ zTszSS7bp`#tl4hSXFkkNzmcyw#QPKh24<|uPa=nFjK6u=symV4WMGN$$q^3X6`+); z{{KRWK79N7vP=06UkkhHs)FY}UMA#cx$@Xe2D;*J7EJcvzu*Xe)J)SvXgA}YLMZ$$k@MbDoo*f8|G_;Xw*vX$ILKmWKNpn)4IHg?)&d0W- zwkG~n1?S&P7g0#bot(1nti^asZIup`xyoqTNeTHF~)C*+HSO2-SB@P<<(MAjH)!)XO}E&!-O6uJ)4zl zw?AJKm=w$gu&~NI7A16Nkd}JR<2zB`4s*0BsmdT%^)kck3_p9r1h0lE&l~i$TS?Hyz#&A8xHH@tl*R>H_wKrMN9! z>7q(G1C5hg>3jK(Cc#PS6jsSeHNgm1rOBmi2)3$baTCkj(#MEitQ#%K&HCahk^GH_ z(^CLdLcgq>oLv7#&xBvRJJl^+?tpTY6*>B^I%6Twnr6c-t-!}_ZVbjT+REA+40?@a zjSo;XA}f183yUuuNHTmk@>TqFLlaP7n$!K1v=`>kN#VoU-qT#H@5UW1BdVQ>8(ZC7b+N|2# z^sJd+xCi`Ce)qu-gwkbtk;6%H8HZAa2;|meH%`|>yI|Pytp97?T~UAN>}ukgPG`v{ z--Ok^Cz&1&W=yK~a-|_UGZE#ZvZrs;94wyJiU#s&(Q14(*CAW3XU{SDGJtV>?24tx znZ>IJrNJE^|8UByn#vYjFq=hQus^Ktc}#mhI4QqB@Px;Vb;t|RhvzgEeWP$eWZU_O zrj2Idl~iy5Gf{WvQy+V3>)|g_BX^CbHXGzGm1x3JJkEKeXl7B7g?po%F2_tSry;tj z@kC;)m-Iex`TgOuMZvA>8_F>b+G}TFh)Y=w^QP^lu!?3=!AC>?L{FLs!t`-|&2#*d zT6$}WBy9`&VMC9T{hzNRQXm6ivAHfctg19DMwa}n54*>-fSd!({s#MQiObayQy}jn zPF!PAakyiRk<>-|;oaMtzHhZq-R%{x$HH1fGsCXR^XV`Gfe+9a*R3}b1J~JAB7wBc7x7z$PP=pQ4bv@g{Q%)xg@DDeHZxWW{3a zuW_itm12M>_(h6Tb(1u$8%EOu0`gk zmX#Yt<{FBn9_9yxC7PGD{|&W{R}1e`r>RlTCm~=CQnyFj&LhzK*{mp^oR7JvSnaWP zj6rW*S=oS#E7N^V{BBCwgCRjtey>GMR6J%^J$0LPx|?=|iU^+~EM9_Kx3rc%BAEtZ zQphIjOIJy3J>RxEn@mss@?mG`jsK|{;AAKB+@aeurJXGqm{wJ7&Qgr&Q{NU0Ey(l3t zl5J-)SkQ)>HpMql#Em$@0z%Qkk89EW6r@LdnT7=?s~zKfVkZOW?;O;=eN5Vble5_$ zXr`pywfsEYwxSW`_vqB9_j{|KC17FLe0M`cgY~US$p)>K}X~p*++=qs=4Dk z3*?`jg;K)ZK8X-?VZ@-zrN51GU9j8`!6wbg&EERi50koTvZS}v8!jmEUlSG9$p|?U zuqm9qNVvaS7zy-~o z8i)kdE{{ALJm{dbED(Y>hq-7cl#<(Nn@N%S9uf1Lf0P_-t2pz13Y0WO3BDXFUfJ%_ z?Js<6{79?%o#Xm6m{|;C=T8v~0lp+u29J0rdb*YG-*Zpj z23?77Fq!!PyFW=dhm+Z=pMMza@E-@-jO9}*=Xm>VRtsF=C1-Tf@?Di{LMk17SH}yg zoETmDwS00->Kh(O0>jm2i=|spx$Hl#muU}sT{LiFXi3P|naqb2Vdn+Dml<#0oFIO^ zMyU;|L8m~0Vd)>cnobu997=j5TyEtQ<6)t5Br`z;aV!dEew*2`4f0MZGk$0mb^$<@m%dlMUyY0%m`o0pYN?of2%h9M1QcVwP8u8_Z-)RoStR)p*qs0Mpi|g&hCZAYXowDckRVo+4M6@4ya!g zWUm$y#AHibAggde-=2%!U+E&VGF?MS=O;8jL87-JhKU1q90I}4)~xT3Q&VnwQpTOc zeruH5ge0eRzx#^1u4+^1<_$&yDxJ=KP4%C*C8I8=q3+s#OP?`!)i@LUJ=7XzC(SQy zcmV?+GTX^k$=#-YK}6Ev^f-#%q`QRP?Qu|9Zj}q(jwHX;QAy1DJAy)JN%QLw1=lyK z`f2-~jpSHWG&q^U;-T24gTXkpuGKF=7q8_b#%_P=5hQk$9}oCG!gF#u-Z}62TGGT7 z(aK*{Jk^~@wum!^^I?Sa&P?&@-M# z&TqQzQvElC>+pHj7<@M+{UZ3o&#?}_QDf>3h$OOOxlIDH8C7fFt^lrL+r zaO%OiZWG0klDtUMK1u(RUq|xN4?a6BgD6{iD<^lMKi}(hCP)@?t1D5ld}X|dRb=H( zsS+{Lk~%Cus|qDb`lBGQc~ZQ%m({%k;b)N^`#^ISB3MnwvIW+;lIGhWnbuAKZ2^~*M&@LU#Xe*)p)D^fFn7n zrHv`l`-C`LqlDla<+M4j&4{qFv8H)fTa}WTf7y;1SZPNK0B}}cOGf>&ZkSC)@Ww** zevBDQ$`4+ji*J3v@cT;8&y_5kqd*mY*N*=F{;4>qsF=G>r!!1VZ;pvKgXWFf>LX8f zCl|%H*IFKTXk}~c4lG-gE21FjaJ+r)-THh^knAa=bogsz#ZJDI{NRH|`es7F-f3P1 zgbUpO=Dx^JR!KRN|Prrr%+MJrhd( z&pXRUeI|h?gY&iAND)(uYmLJv$yuIxTFvBuvNn#dRbj=0Vl|55`OuOrK8vrEOF~wy^G9|N~-3^PDy*c0Faza5$e{QWsG$7t}(MK)36FVJ;#q`ZX&TJ;d zVdsDyl|*pGc7FQz=_YIj48w>GTxs=NGim8p^6II`=iTIV98_>hPbo;^=&nu0&W@M1 z3go(XEh5AV$#ifU^-k%rf(Svut>xCHqnW+%&fPQqezrYh*h116qS_6-BkB=)$D`vI zWeM^|wFFe`5(BvrCiHJLYk!Qbe`2*}<8qy!Ki=|g=GXbaH)R~EpM_G*yFbrLpKw#C zCduW?AftZCyDV}*UYKEk-kFYM{!~&*q(XlFuz4zNks9|1a`-&Qj74EYn_wgtd0=rE zkIR!;9-UYCfMH65qC{gWMmqA3=MBEUmLBM06uYT*%qR-E8w0v83vHP&^=PE|po$q* z7tfput@-Cw-Jt5If}B9f%BN~C+8q;SY__s|CQB1{lc``7gsW)4cIOJQFAG3=&#nya zb2Fdw@~`nXWn6eg(c}bPhh7Zde;jCDI@svy?S2_f$LareN+!vMy%Ab{vQuAz%5d=0 zg0T3+W*0O)=|qq8`E%f#qVzElQUkERnl5OQIb4`;h!1(; z4Lo1*P@lA=5kEeid+O7q6Yk(aBYR#&$;9Sw-d;_O%40oW;!n&=mvRqiO3x3EXPDxw z`U}k6)X#D8EK4n)5D^i@KaO{l@<4>EU_JI}5UzBRBQ<9k^cNLyRReMg{cq{R9a4`p zpG7&}-S&g7MduBw@68XNgl>C`Zn4G9OMa|744oTn6t+#OOX}6xIhi2tRn^?v-nkau zv5E%%jdP!x7rm9dG1CuqYY+NU{ zR#T5@`fpq&N#qwo;1>_%&bWk9q)b^ks+<$(yFhj4a&eof%@2WyFkkKVjd3gx(p6C( zRQW0rI+dA=Zv+#Mang1B6tY{SYjg%#)z}i2?lDaOR_;H=&B5<4SmdBlbJC4eT$@7) zvMO=K>s{V-4Gy)?ZWAP~;hsAVq~RCTEIXH7wv{&8s7Ilm3 zQB?!z!d#ZJVD1p}EP6TDP@3a%kAo5T{qmPaQ!q(nmN~FP)UNaivYVcl$T#co$4)6! zRnYmmq{UFd$@2(mrjVkCaxeAJ?IBzxs&&9uzcm<-YyPt zF|14#5q!}t0||UB7cnzjD5_TJdJ4PxvXnuAkGG`9T#!DF*tejDJV5E4_rAOIr@m2E zy=B?InkDX(yOwT0aO9-0fv#ox#xi+*WplSlvZeQ7)eTE&j}OcbU>^eoYZq!aeppIF zUhdXsaf0aX@*^_3(nu6n;nKCipP#<@RPBTyK@~lA`+A{(6+{Q-F!^pF@$b&u|F??q z-_)h)m{C!kRX@BE5WHc~7bqPNjI0wZBp7@Icfhd=wsd#J+p!=9eg84Gj`}4pdCY%H zI%udU&sF_m@4b@h_D%*X=zwyRwm=K-S4mv3Wo_oV9;%Q+m+ks=PEgo3N=*XKUs){M zs66)lKrj(SGd3O%$umO}1F`tlYN_@AuzT{3G#l24);D&_w)0bmAWR%h3g6K1#iCSCk-L#||dPAwBIC!;ha_E}FwstuX(@8NQ@f+JKC ztsVZ>bT%Cy9}h@9f91H^dI(=KT{&$Hb$Rl_K=|N@?>MDYmprm3*zWKV2xDW)NkR)L zZ}TZN&L3iuKa24iwPBl{t>QN?H+3g#GCU)G0~UAjhKG;GG{n)^yLjPs%pbmvd2WAy z^?Rw}{9^@F+;MNVnALZ#s%*Gl98^I?>05$MIH{>YUzEoN_A2wS+xBI! z!On^A0wLmM4ds~VF#GF4ooXzb8{ww!Ux=*!=n<4|Nn9H{;%`1yj)$U-oWx|CS7+Q> zAcp1kefU}V{}j`~CfL3ZsypWbWOtLlOkJyFw*%Lcv8Nxg`_}h&m41wtR@deN%D@T| zx7ygAYtS^eDj5*&g~-%hT@?xL)HZs6MBD*quHnNmZ2KHjz8`#yHVLir3n+_;pd&;RqXFU54W11 zpAe7W%X~5Z6^dU4?mNmy<4i#)1b{?}Js~=7wdL76UrsepEt$>7ddGQi`vf8p# z(~kq2DlHm`WawdXm4f5C5Lm;Y%%@iH-84q5w2!5r2nFX-Bwd&PoC!^EL|o##a>y%G z|7ArYP~kr4mZ&;aAu+uVxvBQO1h$bTgRSJ)9qIv?PwD49l&4r1xbu1eyd2!H_!p_{ zN|ADJs}ue1mkCZ2Hx`f)*1_?{QCN zZ!E?zax0Zw3fxLLc5ioaO)oD;`dp3V&W{%QSF68vV_E**u%_-hP+a!C+n-6^rEHLw zzxu;TVCg>fK8L@LDx{Mu#iY^HXis=*ezN=wZ)cuWOM43RB|CEpuyN3W@3u=E5Q?5XqW}V8?B(*?)@L z+x$x9zqu-Xe;qE|CEc;5ZN#2LXlCOQQmHu!mNqyNfx#h%fg1hW+qaG42$G^DiRklt$Ns;)P5jq1J8n za*6BLXd^!Q&l+DYmh&(9D^W#$8fTg(75o5+eOkmQ`OgrO9wMQyTeJQ?w)xc0SIBhQ zl%-`SaFIK-iH8dwpmyt->wmKs?(kKPVE=;tY)g=X{KWY~Jk9K_jOyRqy&g;>S=8yI zDmOfOzG>g_!+_d`kN&PmM2|^(oLxMSH-hexXP(9w-?e21fgfEBiV19|N4MaF#2ncc||+gX1qjD0Q3p9|fLC zU256+@YwYx?`rP-;Na(OiM^tDQPNXhb7D7x+g4v1CdwguGdK>KuHCJ@7qm9;T1bs! zu&L#5lVp?_^9`=hzw4&Ybw}F zs~aAQ-8Q;Ym=D)z{ft~zU6LD8NAJ;kw9-A)3=eBHe7L`%a(!xp(yV?H;4Zg>if>M; zHs=o0Lt}6c9-8Ul6eA} ziHkeb59ZM7+Fo}nU~LUG1Y@0_w;%kZpJw>D;MZsHl%Ow)Gc^RkD*%#Cl8UH1tMq`| zK3nQ-6!exmpksyzxVY!x0dh(euyaa^%zAJ4cPa{n7yMHerY&Yo7NZ|;f6EQb7?bj0 z^iN%AwMDAm+^3PCqg0rt)qN^mBRGJoLGNTqXMJQ;oX+m{JtQ$38l5vr52xOKxyF?< zq-8TF{*%j;5(8}c! z%|WsVzlzD~ZB5y`kvg-kWAl6t$_i2%4*v@a%S&=`9=6zNmfUL1+VT2J+|py1?~>1a zKVeOGmFh{!ba10N&W?o{B%D75I^`hh*^D&(9JWl6a2TT%k=$_?BEd@!8dMmb>l&xO zYYAuj>PIxxw@|JlH}V$}%A&@7kpDvy(qEOI$*bZiKYD_~tQ7?#T3mmDVT1z_eW@h( zKhF&}h4dZdeZ=Lnm}efC;=JVlvyU^+3@5`w{O?42h?#wH(D8(YT33ZpreSm|fwEeg z?9$u;U0b)(b_HJ{2cOu%YUUOm=SI9GO=F;}b37sv3K6U{gNL)vE7QFRd1c{_5(3^+ zKNU1D{U>mE8o4f)8KrJc9gSq~wq9~>dZ6h%YIIE=7VwZl(2R#O(yhZi_#)`zzD3fE z(HGK~PwgKyp1R7E&L;eF0ld7{{?mNfyn`$UqXWP$sw8-&B>YB;Am}Rowuh<;q(tt# z8#>%i&*UYysSHPxox#vp8>{C%Ul)SUhp-DAZ%(uv|?5F4UpE~-sTeW z7$B@fH}FM!zPlc|{M5}mukgAL-nwXphR{I=9_l^@dXg=BsRW(fv1{k0r&5c{UP5oV zp)Eq!Ev}^I)7dc&cmyL9?Ais#Qf4VQbA(V&O=R}Ht2m}tqbjLe0=tf zz{+oCCM#m-H~;}*SH$}El3@8#Pw~u(ru4Cf_;~AdB1c__Mj>~M4(-z~-I4ROxrq!O zHl6nYNJ|~AV~+er9U3lXr);s6?9SS^20!RPS-JQilacW>GmPa&?}pBG#NV~Uulx6| z07AZLf*q7=Ht1SZ`P^V>P~u#;^+oGCM*1QxGL59?nxw4<|GHWdP<{w}zL9#r*`VgV zQ8z@87^{6z^=uSgn^_<#ljtDrHoIGr02f1Qgcs+W6Ipk2`pOT==F9V7`ouWFOdAGw z7!C&f5mh3f(b2K9iBheta?Vp)yhm*WP7lth>S+9SWm*g1Ehb-F?1CcZ+8Tu;W?I@p zo3WpM!+*$(Rndw)QvdF1ZjTSGfbrcASPojZ8^<;XvhJ~0=)DEU^r61^;aVX!$StJs zz0EEP@ttI9P>|Sq>ERiGto7{|>-4;XM~p_&_<-)ZnB`CcW_47xHOl*j&Nv@U?0384 zBWyo@2f=GRyytg1m}e`CJqLCJfZ{#Ap7fz#By`3J9l!+#u$Ny?`U|72OglS|pSV4D zTnggBT(Tt|b4zz3L)L2fHP>8UZFXh_84OeW1MEZ~yKr;=#h>~Qfx3D&T>`*n!C`2O z+Z4aSdS(87V7B^P=I0LTk*P(mNk_}Xl8Yj8{7T(suGIa4v*E1+v40shaUOV&tT1g% zS`m+-FaAvr>LWUg zK#SGYdb-(J>C=zMXtcvy>N=EDGm)^w*5h2`XyqS(RjXC$ik z2<6U+Cc_8!os2a@wD@YFkX_9Fcf-O#$f--?Wi9LiK^brG(fbyX5F~px7q;oLZ}+*+ zWQP>VFXzt+UFs!pUk&8IkrAqTRe6lK)!T3p8Oar zXJ&oOv+TR?JE~k9v@WfVo8U>M3yud_h3DN@i84woo@MNxfF*PqQ7iYaMRyWT1Obe^@5SXX3GUez>`yb_6Pcq>cV3E{(Oj|0${D$-s!gnQ}E$ak3e8CsjWb9P(BB*?;>4oLviwBiHZV6Q39{g1$Yb?N0a_N4j$@K3f0l(Ty2r)~cJ z$37YJakz3z$Mj$pW2Lvd-pF?AcN4_rtkNb~fMR6G`|9?L1Ffz4f_HT@8kOPJaK_eI zK^%H{Q>SIW&Ng~hlseun$AY=p{}iun^@8zrq(i4*OY;nOc&KMeZ%m*pz-c{S zI-VE086edX9}2U)$N-GKYiZxqgf09M_w@Nxa29G8;M7J>upMSU=^>L?@fM;Dh0<_u zuL`BHm-;FMObXOxs9wYrBr-r^T)MKDD+09B^OmrT?+NyboXco7D;OBsxgMmSA@S3~ z%Ba_EhqLY5I){f#1W_YCDwLGD5hub_A(LEmE4Non;Syn0&P&JT?VPKzlHWG3D+`kUk(HHa|EIVm3U7Ym_($rp82zbAj7>*~IHp(mRMYtG zcIPEeVtsv{jQ-EUr2iDO|1ak#y8>Gqe+iC%CU0$oO&{4087itx$D5ul^n6NV--Smn zm0~RACXt}HFr-`9`LC##>mBWh-8M+_=hapfV#tT%&yXm!OSX`5fpF>7qSN0kMdvh} zVod74GNLos%|++5pX#1x&aw_^KHGrc1CzK9UTemW->uFK2X+S5sc$4VxO69PEB;-U#n{iPgaJQ$zifvNwBiUt zp845Tz&gR8n<^DpYQ2ff&qvQGXjFfor5RRdzj#7Uxlzyx`CvCV&qqY*nAv!vu_!X+ zhC4E}=$`fvDBC1&g)TdFNqDGblVSij;}U;LV^%aK*58?467{n>9l#$01JUY&T#80D z864Af3ZC+41~Pz((#xOVrZVm;r`bU8V=E0FpRcVNHryo0ra6c{T=ahcN)q7tXYG{+ z|JX!tbOYK4D>uqLcC)2H^_dm!2NzNR${h}fyutvu+4u^*x6urW`#!qfb@0Ug(MxUn zeF?ke+xkH%hwr#|;h5i7O@*dzc7^58{cKoMui}p`PrirIe#U)KjU$y?ovWjb-Br0w zF8`*iyxGTc#k&<})8zI@@K;Xmt97G})CVap30!jO>ekMq0e6xYdZfT-eRo1qEVD4p zg?0h_3NOkNuS^A%FG)&A17nkBY20LfwNtvE(f#HDV49IuYSpH)OThMc{$^mx>?a2$ z?#k-q@unsUixxbq?7c1{7U>{uz1P3%Q40HTtncEk2jvOygctj$8GcpNW?v5^&BBD_|-H+p+mz{))I0YpQybf1f|*EHbUY(#T81G?|KDJdk?L_b-I{j@5pv3%&Ix zBicU%6^yMbx+$8Y8T8I;#|55+9-uXPH!r<`Zc2t0-R{0Qbfy*Yde=C06PTXP)88FC zCDr@2@b*i(cI zkf$^+^i-eT-y#Njmch(35x)4U?K-=jspX(f8NLSkM#iMQ6i$UZ%@UcGU^B|`Exdsh z{xL`Qfby-AHGhsKG8R|CiciZ2=_t%$=qFTgbp5 zp3W9VZUODoeL_K$7i8pL%$KrUfWNMsso!P}gPUOwc;6hJ&uh!tHx>oHeRw&Z$Cp$y zW>F7^787 zHSPz>s0y^HJy}PeY4+!>2o1(D+Y&D3T`{oR6eyLR%#n1ZN);f+I*n*tx`?Vu$jw@}ZEU9vQq^B!z^(42`1NYnB$wWiKSFD zSclJfQu)2p5^-hTyv3O`Gg@02Q3-WYgDN*&DmX}|2z+<>x6y94mjAY^x;Q@C;g{B{ zCk1dn%*>F@K|HP(g>lG+(ES|zXD?ETgf9GEH#;Dn-sf<1cm|g$=8o5+2DPp=9sM>U zi_ML#6H;zN`d8$PqZj3dZp9aA=80g|U2X^wcccsF#}G^eOAoEJ$rux3xRGHu2R# zPb+(beL`;dXVK_1c@gN^%-l7%3x@I$ik@ax1hm$eR&pyKe|h~e`x()ITyP?|QjMcr zjs=(;8^Dh(YY=zsCaIXfejo>{l?m>Wx9DqL60u|H*Rg#3n<0JD53n(M^z7fSn4eq+ zm3myD0dj@y7f469kI(!H?0jl`{RFI*`n~6Cv6ag|Qx3bwCE*UF%~|^g8L$@W}4r3vw?~3djm4K)ilEk`DkZ~_|BnrH3HoSdbq;%s_uNe%Ad|y zBE9OqdLr`~OT{N%$U2X6cf-@ivQnq z0{lG<0LCZK6G@+VcUEbu=lzGImiN_7X86mGrQ{2#17wHk$z=C5`w`NctSEvki1pvC z#|qw(tgM?_hhvbCmZ1}c<|^W${uv-&1+l=6?sc1`KWBE9{U8tIHSrY*Mst04RjJ{nM<;q9vvE@DtRhQTD{0l5borxe$73|1Qc$Ex7$>QT`LV{xWkiKemr8bNf%+-g58_ciF89F#TR%m|}soBb>Hs*Q?Bra!dV)7B&R40Lyt-sb6vkCT7w6Wn8-!xJf|InErB z&j0G~gzfgWrpZD);}Hf82wgLGbUiopOHSRd)u&Hw-x%h4GbkRghH zW#cd%)KE}*i=4N4D%Q#X__a*}egpZj17F?+x!E^*o7~Of%B}TstnU4N*mV(c2;56Q_EY*lp#nK7xQ(Z{ZzgG~YQC%xcj7 z->%Xwbt&IBN51K;Sylv-e_FE+Z9V?v4a5-t($n^0L1Z(*To)8knqcE7SA6h63wdDj zLG9PTZ_8(K)2C?9ElX&}E@CAJ&b-t1Tbs@$|34yPhn(gZj3g5iHSiCO)rRr?2LNWj zb3JMTR$U{9ocIE$KjmKBLVW1b!bkNBs=xZ-e@}@$1{&<0Rk0JQgLP4q4YDO({#~@#E%DgU2QM#7NiMh;Y5Z@ z53Bz;9W8S!AM4-W81w#ZEs@~%o>iqg1KQ=5o{yG*a#(8OE#&`U#1^kV{s$vgSR^wS zL-M8}efVdncLD&vr1|zUV5Ey0#@eiq;LlEZNo@L2I~(+ae*w*AaZr=Z_~Q;_IPt|$ zGXR|SmT2Ew=X)PRUXGO2`|YI=NKorF&prHAAnVgJ{^~}ipX>i>?4S4F`_H}ib3Wg@zt|l0q%kmsv-NS6Q;!Twb^-q|4AEcf z=bGK>m^9}D#wgs@AiZj`M?2cs@p2)@8#+IOuo|dMjdFX&WK}GAhNkB!&3ZJKC&cJQ zgk`+hY-SfA4}kOVx{^yDVwraqZ#!N#qQ*v9Ta*s9mR zrkKi5k9@DvbNh+CI`3R7vMYllbqq?=V7^aXrg!$PhwRVa@wQoK!Jef#UQ)LLWYKe5 z3tKRZSrDO{MXaBQ%ZR!VUjP|s@cz{s<`>*CdaU~k47LaoZ~X1va|aOy3~P69l**F! zF!+RSW#HoRuOUMT;HyL8UwUfX_YwkEK3zXqcY7Oaurug)Qm1oI03F9@%2fwiEn@;) zgtyR#*(9!$7CD4r#AZKzNQ6`)kOmBsI)&Q`xCP%B#JLDmhOD^Mwg=JJ;t7NGJUo0G z@33P-v$aVulGIGz`C)8u@$KV@-Aa+iN8kqo@VRI{8%;E?#as`ve!%N>Tmg(YiBQJw zBd%ZN17&3!HXj1~V-@fhQTsOghrZU1Ga~sY-p}Ec6JHE2!iXUjT6W<}xjd!DW=EIu z=)F`zjtU^t)C=mZ&Pzv5XlO`7f1KLzJUd!xd>^YDCzK2aN%Wz>{hQ@-D6q8{)16}q zl-L`ilF@ht_sxO@29?ig0`oEPvuIw=aJrmuNew+ZLd%XnK}%@IN8e^Qs#Ip=2QajO z5ATaKYp$nQ;lj^>QKHnMrS7gu(iZZ~h0(iOk$AK(PaVh`lgJXj3&#idzB(gwWw1Lh zr&7^|%}tiG*AU{jz92t!SLoU0eXt|52Z21l1=$rU2euSlG26yv$);JI!9WLP$Hg*L zN*nd`P0-;1!NE?d{A}gK3;3yzg-(FJCq-B_jGJ`bUO4CHJ|Z}4)o)=Var5t+jdNWw zr<%phENmZ`H^Rzji_6H`6gjIkGh*(I?6`|^B7d*BHZHKA^^XP%(w>Z8rW@M>2*aOE z8pu(uKE$+DNTPrQX%%V^rG_XSAWmQgN^PW2qV5F(A_kGTdZklaYYTKhE*$8yx0Kpz zdyDIs3o}ad6YtN7`Mt>m>GU*~cXTYx2DR`|jnkqGa7J0hw941vS4(5cKdulK4XSJ@WWSuDuj%xC{CTqc070oj( zb|nZ=cc0m{(A>jUbFD-$QL$job1wi(JOpKU&)kZ13eDdgEN3+W7HU#8Vsp^zm1 zBSRlHdVBEhF_il=UT=*@tRdCSr^TlR{lB+QsBl$?*-x*c8J=4Ec;#q!;%Gg_Kj|-V C%IH)8 literal 7000 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 diff --git a/docs/screenshots/pyrtl-renderer-demo-utf-8-basic.png b/docs/screenshots/pyrtl-renderer-demo-utf-8-basic.png index 03b91dc76ef6319b14fb4d988396799c1b628e4c..76320d98cb7a0880800e53e619411d883c7c97ea 100644 GIT binary patch literal 15772 zcmch;Wn3Ivx9(eb0s%tMU`-%+fDl|82@pJZa0tQOT@oO;CAbE6cXxMp2=3NsLj$+7 z)|U0&efQbt!?~wE&0kkb^{kq6jOYK15%f_`0u!AW9RL7K$q(-p0RX8I01#h4fxiIk z=~KY~K)^uqy|A*&!qKv;9qbMT+ikr@O^4hM0}#mLsw7`uxsdVZy-Z2hC4T)74V% z#0}R}=nyUR3k}<77J&2LAJxi8JLQ;*>}i}T4kKKbJR_U>KH`>5N0*m1oI{m&mIdrP ziPUD{pDN$C_;W~aYW~ZhyEGrkgkQuaP`E4x?~{tAm>)V_AO3U?Yr?Z{)md#hQ*A`{ z)P-Aw%7nC4*My@ni~@@*A3ZDIEatom)#Ymqe$$PTkYVQaE>7!XFg0D*ugX}w0+ct% z0Yna}m!$7T0se%YSf$GEtQ!qtxAF{Pv^>{B7 zJ(1WLN+EbgQ6*oB6B1reqBN!}GO#-2=!}O0;2H-zC_S*k1! zR~0W)F7I+-Ko)WI_n+ZeEo$I_TQobG&$m`r8tCmmMpjHG+i1`Fp%Ks>-m;F8kJ?M; z&z~mr=``VUm!F@Rqh8K4EYjS9I-{;^ZJn#H6{j4&G~e=-Sx$aSRin-ss9`;cdPL_v7qq+qYWADUHBfhS?i}Io19hV+LlH`6m{Sm;E^R zw-!GvCmjh!m=`J6BQUXL4h4>6x9fu-ON!wn&S5<{ctBm%kQEWrDosV9fU9uDe#p1u z@y~YXK=Lgz0+n*oRT?O%{?tz+MAPkeu4jP(_a#K;I7D8aH^yI1v>YsZm4KB#2So$E zct5)b=4m>{@`9&ZLx2k1M!F?Zip4-z)TQC`=V-20^c*CnRmqVn)I0L&KSeUvV@8d6 zi6w@>3}oE%%o&+dqUqO_YsRVkxtyxA;DeEtLZ|o_&yzn@b58nqg7Z1(hIy@H#T&a< zTPBzndvpV&Cv2xDg??G!8qj*KG1D()T)uVuIf{LLc*b8F?P=gUq6!T|fqtB$AJlGG zJ~m0dm$pF5*36*0DP%u{nH*q9%N1hcUj^!(RVe1YAZ<;6(ey+YD+sjwu=^0{^h^_5 z;(NyxP4Bmvo)^F_dY^R_OjN)Alj|M#b87g1`rdoKq-a*tV@}C%q@^|F#4qROHeKvO zrYyLenI=o;?p3;=sYJ9$sHvDf614oQ@AacWYu=1cx1y_o9=qcC=3?@43VYKd2j9?EXaRtaplzQp)D-E8tX51`AQGM8BB5?t`o=KkLZa?Azt2{; zf7C&GH$Zyy7&+V`1-xI-pOzoC%_T;sTYQoAc3;eMB^J*<_n>ig{MHc4rL;hJE#CaF zJd-gp*|72X-T7fYKgcoi&p%$&4PWq_zt{KqrC#Z$UCQmo7?^}AA9O--r!%3wI{k2f zKpRJ6b$_)o_5eA__R_~+Jx1{Prq)o^e8gByHqoAPb|98by8$}md$_gI>;2wn1+xE* z0TtIpuN7PM;yc{>c3(>xLk-_vhV7+!z!(7C-C1iuHBqnizQcXG8Y$?$idr;{0xUA? z(~(BnOjsCn06=Y@X+QJl%RZ0iX{BhW9H8i6S1wZYu=_+ZcDuXV} z!MD>QKX^9l2BlrY(P#U`^AZBp#XCRyG&+GjPgg8+r$1{-(`r_27!N}+A!<4v4Qi~Bo^y7c7b z^qx1WZWcWIpkOkQI_WcZjryg(_05&R^sMb_F85ee$IR@}5*o#W9Ny6n5Ur!xrfhBv zqRG7w$z2=+?%Ge8PsRM|eJ#0f4`bQ*fcL{ey>2m>S$p#7*$0qjn$bp0y;M!9;cd^B zvf*!+{bJhI#{qc$(8ZioRN(1DAekxBNT1hw5BR0=V|CU3dYNSf%gPFp+O?PE{j2oH z8=^~lO049E%kVm})-2VF_~*0_={BD>#%8Z;(;jg09NjVN@Qj59F%gDmm77Qwtcps)XSfD5QMr*@b}|_3M!h%j|=knjsZPBSX74^ zXpt6&%TG2Dxy@@mMS8%1y1K)xI?XQ6h0o5Rt1AfT8rot|3PJ*5<+(^4L2S3@H(ae) zIYJ^PdL2V9SVoqb_lxd)^BG;%Y?Q+zUNl1_@_iYse&MMmZ$N1m^~ ze7}6QOevT;YSy+6Q5mLWu4`GmXI9sN?4`#!P<{mfyWPP|u z&-LL>=pY;sXuG}Zyz|Z}%bPs0{@ksIv8FLhoFfzVcHc45|p4-S0A zavo~M62CfL`hCl*T(=U_w^OHB={0#DtRsW} zwR4BiUp}%_eUho8J}v?=7aLWMe2iLU-!S$BpL1CGG;CoBy>qt?^CbmkooZ$I_*@bV zVwq(VOF@7~Qux{j0ZhO!P5z1`p5bzVYEe3#9Z0IpKU%?ZR|P*j@M9ZNtmtFxri!Ctf^o%D>`|k<7!fX^F$4_5A$4j zEiUdQ*t^Ev!V#{f6+-ySdjCnFhdA!+VfvlX5O3gGW)d&vd%@0_#OjbSwc}&)F1jJv ziUt3HbQFOB2KT-FO9p|TULLkVk5rb?an#C|ewZJV?Zu|-;M3f#>PM25gb^p8eQ9!3 zTIa9&O6InNbR*($KnLg29fA8co#Vo~9et3Y;#NX3#>yl@S~i6#BWFiyIF&_wl@1V! zcxAg?ATel`qBrGMjs>{U=PGFsU*n#hS8Po$1^`^jvfTViv8fBK{P~Hr zu9?x-eyG*^9J;zX0@YwX>{%x(!*>ZX!T{t)cbCM1KeB&BD?V+w@>OujDh2>)p?{V< zq2Z;zhxT^!cvncYFzR|kv7&<)IZ1{_=@;PJ|K;7wMBeQ89z|KEZ=kdj-S<=L4kbJ9?gtDIf;}uR?W2i;8g&-Taz_E5 z8tjO1B%w9){+PJ5GczKar|z zthj^N9p!@f`@3}oaBo8oW(wX~-k&966ZeLhZ=n4?TtxtG(`R23**O=}f858f${S8M zoTx?+CC8T&P*e5PQ~w-?We&v#kr77L8e4{6nA~$d^~Nqd>*HGG{OfxQz4G6h*cDq> z)AMOth)#u?LP)GMp2`$B#(dn9BV2sWVW6W@S##c#=zN}R@^f{H759IN2md_p%2Rr~ z3L^Ft?l(B~EY;+b669=2=pli=P(h*Edq z!*xLKkWC@is&r^C-+ELX#Cs(uZ?DWK$OFSXwy*a8(jbK9@s4VS;(mD4{3Dk(-{S;n zQm2tfS^pp8qA|Tlq|Zoi!%rL)0pIF%!{Q#iZmfJ8P?}d>IeN8Zs{R{*F+P4+3zbST zZxq`PVN>+xK4{m%aYZ_L1Zg@i8zDX?Ua;?y4v1d(2Oi;YYO5ut6^`>cS%gQkMe z8b$8V1C}W4Su;=*lo(#5=8aZksWEn5(4{P&9o)z0a%a22JU$nV2*kzCV`gqGIz$k7 zOC$IwrBUd;SCWv~R4=hK_CJlL-ut@SOzZkxh2xhK_Qvh3o%Zclaqy3-3K-$ z`R^pBxV7@t^{t95Hz+YqS942`!FJUaB+CM8TWQTKh=r*qZ*672PYphVSg<@M@qSWE zQ`FQ8OfOpsYIFFhf0wyuCpkr=#e<5^NtC-%1N6C9<85p%RviU3>xKXmg2E2113G(< zW;eO96sOB(K=;%7MXsvmr-=)!1Ha6H{xRi@CNvFAj@V*4o%hqDD4B`|Sr^(|b(1f~cAlyp`tBj|Zqe7h_#esTyYI2ap5>k@aKsXm%3H&7&;lTZRaOh^6$^RX&NET$cCArK_NCGdo85YJS>A!pF z0FSIFJ{!3X;z+^ak7fKy>1xwX1bt6VUXn*Lfc^K{)Z6vO667CXGm`!$3lW%kwkK@H zB{UQe^^%bSbPL0&#Q}7)qayTT5f}=vH39qZimr=pF4+9R%k)U6;nU+p$V8o@8_ zX5^XMC*>ceY2*J$9d=#b?KhJ&WsbuEa_)Lplu_4XPBd9bl)6U>=g01#y1DOpFVC-5 zeJL{*n#}kLt(6WK=9~E8@#>$^=YJY2aFpK4LTKJzlNXB<=k(K^Z?ls3WR8sP#STy3 zC5FDUq1e#p55vVaS4~PDJ+HX-sqJQ)9b7-Ffw8|Pe~4iEZ?w~YRa5`xUP*+VM0A%= ztj6eaC#eBnp>6V@gu?+B5;KDcxepCHo+5=K}tm!oBgf69#@<)Tp?z zETh$Ngx$@k#OYODKAE{>*oSzHBsARan6!j$pYm(8)t0R$+71c`aU!WN18dUo_KS$F z*~<}|a|!uW!s&(ASKSEi{t3?uxh5Rp2qh@U!`ACw8a6iU+o@PklYJ1dvXk8CQ zqL#ZLo*}t&8o;FdeQ}qh%t)|{ryQmD1Xz!o9CJ3z+>XdAuUD=7POn52>Xtgp*rC^@5(otO(^yb}VE7R>v3fktPOv}>%HFA~^Vm2O+nQ{++$UaVlMStpv z?G7qbpV$e{g}bbETuGm;CGA|X>jqH z2@+608^GMk?`V!iYBR#bB7J(s(j9#-v6f;xbALwGH+p?TNrb(D@SA#e9c6bJl(}p` z_J*;=dY|JJq>iR!Ui5l6-tl>-M5DmR(~hql`=c%j*c{#^Q$^Z-Eq2aalr&N;VbjdY zSWLSLs`JunrD}T#7aJkcFp%lSwwYh+*l3NBWPVcSb10x@Rx=lTI^fHT5jR}wR&}Me zBvSaC##1f)Ov1^qH1M_=AiWM898{bp`2^E! z+PtNu$<55$iM-@!Y2eGdgm1tmbx2S|6~8V7-on0;B(N6QT zACIn04=#@&xfY?=GG}0zqQB(2+!?MbIBw+9WAb1>^^r&Mi&SWt<($&xulo>pO(s4K zEQ&iv;PF7v#A9_MHqT0UyVMRIDS?{DciFv1gI@@zt(>0tj8Qxb!~2R!vbAt=gZutq zL*+Vkt5(BoMyo*md=M&`-U$SnuQXT0H8QN-_Td1LSb%E?Ir(G`rccN056hTl2+i~f zeCrhG2`9c(xf#gp2y-7Sz<#49$buLy!ZljW^A00X>p;_T;BPgP2>YI-iult^n_9VHvYYe$aJ<@d(NR1!X}sF(EI-%j^VC0SBp;0mhqh65opfv1VC%IB|~EE?%7<7d4A}X#K6=Hmo}LH z-_quW!x0F7+D_v;qM>M_Vu_D~j<*?P#WH-x4VNNMG$p^v=6_`s*Y#{%|K>Ia&luU+ z$>nDbtIw#-gO|v=-x_KC*-wX-!O03%Ss*7hYXseRlQe063`8!mV2kJ$_BaCdSkO*pOwk3)bcN#lhAQ2ZdSVD5vH>JtzTGi%oF zZo?F8AXB$tW}_sCYx7vgz6uW*Gq9a1m}LSY%Md{=7{4Yb;z7D6juI^Q32EL#_z2Im zQGvi)0>H+sf!%J3W1|5X{yEPqJ74cbgE|(23CyFx@FFRCg+AYLI}taPzvPzwQ7~7t z_MvzQ$ve5McyDDlm6{L{iJ0#qrN*73u#IH*v)7Nkf8ENeA(#Exe=0FL{G+nFMs%S? zk`m3kaq4cv-II7z;011PQ_hX7cbl((qmax*U3Ho&=oyBaSv1!7LR63I5|43W$C`Au5X@8&-Q>l}ASfr8BeG_qGvMr$n7h?wmXt+Km(8FtJ*!Q7((*i;DuyGu}K8 z1_^M|$19l5wV)J{{CUXE6#ex^zGh{|a`}}mfx6G*2x#7W(+p^E?_d=4)J0YmSk+%o ze3tF+uvFI=67g`c$z&|6S|y+!4SY>~-u{J-LCtI7J_wIFG&AYhB4|Kf{xHDR)ODl>=&F2 zr9w*`YQ}~9%dh{_-6R>UauX^IX?!h4`fcWNO^y|_*`D4 zYst(-HwvMP?HNJCs|jp(W6kq*sO0C)+aDh&llBqX!ms;i)Msxl5<@{JxUt~VlVIRK zb;+RX{q8^AT}%y)${^!p+%pT;3Wf8^ks#P>%hT;yX~h$w=#S2|TC~bwy#PoQbNLMD zC9g2pv%rDvW}rZ|X7$c=>nnr$-~Mg&=7)!po1rClt(Pn&GjH@~8L6=}g8njcKeFvi zl7;h^BD7*`o}XEeuWO%K5c5-~pRKDeoz6;6SkqmjJF&P^GN+hMq7{A16Ou*pfl za^z+~Zrx`JBAV|mo`&I!;<1Dn!?m$KOGs}&Y`5tRc|DAMdr9m-GmTMz+RX8=mUXvh z=T~tbyjy2yh=(JpWP=U{mBnURQ(XqRb z5%1{&GbhDffrg+6)IYKra!zKz5Ux5JU~8T7Qa-aw$!n-_U13yyIg#lvAuaMpNTUh; zhmJ<{vEvJ!5OjR<`y#9TU6SBO6Ps!E!`lL1rF1$=6KnbBJuvFm2lYq;m=2O$JFPaq z7{J>(5ytCGEBJpNt;KcQ3%BWe!6db>;S+f6K8;pn=l~CaLp0Vo)^nQ|0A%2~F(RN( z(IvCxzi96HVe^w8vT5=uiPbJTt#%Dj;|H{sg&wNqd7ad$^R>W1Y3u^_vY78xdvK}x z7I|HrHo#Gx1wLtukPR7rR`}EG=Cwa_*uAmK(T^=Orky^~KUtZ}>hc<>O7QPk1|prG zYt!rk4$>mAQe<1NUT+UHSLVL`!VXvN&A-!*lC?W=d58pv07}q|ip7P?ts{KcD!q4PW$sVvEinFuB|=@jDOWcKl7j&4(U*`X5+tX z9R%#c5$PUnJ{I<(!W5Uh)`duUkZHI6X}?B$LM&zA*24=J4&MZ7a=(L?G0r-Vl+Ou0W$(=g<36j)P^>_-auPVE`r`_A$C>6nK-aM zj~!i#U0|-=t4U=vf~*IAP)PUqiG{)F4K|*l15P}Dn~lJuDGho9y;8xkHVfZmCj|Dx zs{9=I^?4SZi}~PEh(G^7HXiRKm(H!H0tSc!%%nGlYFh*zjw3hZQC{6I`DRpQS!6hA zFGH``a;-Q;@rnBG=1lkDF? zV9XGtdA#9XC{Uq{fKWMg zkLS89O}(Mv`0$xlf>^@+_G2ioGU%@2p@pj}uQHZE+0zLY9emC~$b`IazET~H zs)Q4AfT?pA6}&HfFD#1Z+{U|_3SukAa<;?2sRc!tZqGbt3@UAMu3&}T6nT!|U^nHno=3nUn zgj!z?#*DC77RFWeit_)=0r9I}tbS=s-mB2fZ_X7imn8N=f$D!@#h#h(1El95&Vrw> zoKLXhrWc-pru$i(uN(NC32FZJOYOOgnARm-_=|3xWG z?t3lvRuL0til;cD`a#okYMs5Sm=+Aez88_#)%+9l21}Z=<1wE`viN6;I6* zd{D_y1lMLSqpFH*z)r))RC&crvnV;%ZH1OTewuVwz0ww|wrm87r`lRi2kP*V@hIk{ zGuL+A&I?vj6u%ovAE$BdQF&Rld%CP^S?-O@xTy}1=s!4>T8KD>W?5`H2` zUx9Mr%>cWSeOY07flU+42xbdGFgU?(@f>uGi_30xbc!$IfkwUMGMHgVJ(tcNJ&0^Q zkW$-eNRqr}1+PSbtih-;V}yLG!_4J)78>DstPsl=?o?YTMU>~+)-##QDkUt1|L)f| zkW{Lk&4mmb!F}B%o{aUvlcoFbSqRp{qbXDjEgE|$(7lBZ(5S_c9-1EHXhTrbr+Xjf z7R@YO+n%p4_N=CEepOj=0#DL{1sVZAYLv7a0T&z1`>jse>{ma4E~?!t5uoo*b)T+_ zTKtaCn3S%Bw072}s6XfgSJhU3mD>Mi5lzDx4*+IXK`W1J^PDN)7!=VFgkW~WwszX|DXBY%t zaJzrbgRdo?+D!_8!cBatAVqO_q%#11eakrK1~Zf8U+Gx1pb7Xwhx~xhm?hw&q&Q4` zQb#`oUz*A8mu2iWrLJ@H*X>Vyn-5_XDUh>(8T}F$p4c?D})t1p`I}hDTvSTvva*O^nz4T@v503pr!Igh5tejVL*WsY-hGca@&oTh% zPW$9&1jkq&UdPo*e#QbGKZ+DPAJb}s<(U`3ri%X+H<1E*4PxBa5QX0t?QQ)?4OtAB z)^7TIk!dfzRd&L8g!-QXMxREtc)%nMjb10-6<_UF_sEaNAL9lj{NsXs>`fU(X!E9u z^c|MIKjS8FV1sZppsM2%cm34!TPs<|4M|b=OzVW@DfPi~lCZFz6?PmS%MDKj0pOPb zx1v0f(EQHNdsK#*!*T=QW5Y3n_KtQ1<~n7UCl8>fc^Bvi0Cu8NK=EQmWs=E zsD6KQM<$;zF1ycQ)&IktX6Dxvt=8mgK9Y#@;1OX$Jl-#R;BZcdRz{tlj!(`%7`<+I zeFQn5DmRJ;`Cr4Y0rO1MX)Ce|!V$7j6xrPVHkFF@CU5COmgo*iC zX=>XK=KFqBk?4?$YH|dcUJkxL@JnjGlrsdEKlW4Hy6s9tl78Ub9IIwvLzI33l!+B1v1Os^S+oi{ z1rl~hCdp}0OmyIPF_a8~6e6ya*|?1~A^})Z@}3vEc^LM7s*>H}_G2i>s4na6sTWZMb4cRCMdUABAELp+( zQxK(Eqa(_T7``@~hZkp@U$DV|G;=_D&uIcR(d!gUGRW0pW=hzD zMgHo?J%;|LICGg}A6#rQR>Nyk?ukzM*V==;=&gDUz{XF>O#ooy%QXKT=@Eo2Z+=^1 z>t3tYNZK1u6FkYoPFHp9;R%%oBIDlBJXC9cu(`R>w1qtZKF!W`KFp8f5xL$`9MT||}3@`sZj=8}#eZxhctV6c1!uzM2?_$&FS ze6zvF)vK08|e7Q5R@_Je!?>m#q8tUU{9{s4pJ(G+CoZ$K4Me z;ap>LABY!6$5MukXA+<646}ii#Z5R1MP@lQWObXai?@3y%d3 zAnLbHm7;(js=i6q6N|aseQu5JpJ!)}DEId{=OTB=p2xE&CE*!l+r4}crBb6|mK|Du zEF_8&SG9&5ij(eu-YQe1U#Hby_K1@vsIzf3YEdIA=~T9)`|H)x%s7aEEFCC|fP@ILV@JYllq*?HB;m}^{Zjs3fBaKi*2+v|;6 zk?i#`Fv7HOf}%T<06OWDzqc2N)6rrp(Jbt!x}3%s)_Ch+(ewvX?vGYThj@|B&c|1J zdTwq0gbe*4HN8@X<`d^8cn>yYC*cTfJ=kBh&V(P4Mz&gOPhVA>;+YYamdu3vXe0Zu zMf^v_hGNphGo@h(t&te&%DkRtkGS4(2J$&hP?Ob%s{4);lIHc-1m~G0Rv8@QFsExGpSZCmFPa$E}`$2(|m~ntF=xL{{3l;V;LnAh9|HJI|GCb^32| zYVk0+Q1!~Jr|G^{F({AoUkdk3_c)TggEwrFx7o1%CnxTI^L!NTv*cb|Zn?<_C9&Ki z8#qX1aX(5t;D*;3{!5F^zc$^#5_tjR_kM^dt{GAoujan^6=$_=Q=f5*{)`V}z1?5L zCoBr9xW$5RU`s<0wB}a}H$OPUjsIO*uMAAg&c~YSFyytj@xw*YK@;68>7=@RDgeAaZv>T)rERrq;LTl5Fej zIK)DJ=`a)~SqO&&<_qylqYC`5QdXZ|` zYm>8DJb?T1DWW*LC;!M8_x8iN0UKfJ>0tq%SSRc?8yK>0{m&YaQvQl;bAjVT7t!Nm z4hd-lK!8A^*ligRc*=OX)(G%2g+b3Qb(}9I(xA{@Eu6M7L%=7`8Ue`7k*1Q+W-E~v zIzFD3U~pEna({MhDASPcIUl7$PmPX1VC~j8r$F8X%bXy*J<1px@04_=BsVr8t{gj< zKV^I5-dW>t#yZcG^My^7&aYr!O(WrS2ApVkePmeBzjns=so~P9y~>mhM%w!i%IWgn z@Sl{k?O!P8HuJKTa~0NI+#J@2+V={lvu|6Odp4fQ8XW)Kf8y@cosy;Rg(X!RpVqKH zZ86pQIjZ^W^TjR}63FfL9pIqxJiMw{>}=L=Ss9{JKOtl*8c|%obeY5HY1Hx=_1!As z+jQx(0Ysn=4XARb$?=%JTCdY=Sha9(+_!1F6!l)pB;oI|8BCR}=+tpoKlS*#M};3| zx-SF26YsWnjd2H3R|_Tc>%yQ4xngiuQe@*?bRQ>1@VoU~;tEtx>~oxY8Z5s`_*G@p zIlhiY)bv+43E_OXV{Zm0RmQN;j4{yQOt0-qz1-mb8J#c-xZ`9YW;eB*Ub|}_y+`%% z9^B|z+%&HdrcHH(7s7PnCOEOCiU+%XHb#cA8OplVyLXy=`}?QKebGt2UDPrG5Q4bR zqyW4)M&RFyW5C^C?Z7oi+!t&z+FK-D7rn9fK;$EVOlKkaGL!`HNc+Abeyx^sN0dc2 zPC*|g=^GF4TlouV$~H5nw!x;9ocR`cpPNDf9}E&+JS3q-AyOt};Pt3P1cww-_P@|f zgHM0c%w=?-476()+GppiEpi-MQ8f6|eLLprIF#hrN)PL^PTI~2QGbHSSX=okw%`_v zUG`S|#3J9^^Gdl)SbVDqITX%_zw+X#$rZRM+~Q^thGd^0Zrk}no`rv=2SI&0P}x4Q zpsJ7qZ?Lfn+^Qg3bO?yc+V~qoHj*+ss;$e$Sg%~+@~?{$(JgI1tL z$Zj56W?l{(-=SS1c0Crb`kwRRJSCWwE40qFFZu=x(^GzA>6$Ew4ETlgf(x z9d&xbX0F1HGLg)WTM$2A9LuPqwMA?G!;X`a71s_Q>f>_7+Ju@I0cJhCXjwnmWj$-j=Y<-d`Fm6_VIX^!+D+ zydwOIK#q+g106tM!hivsK$dA&Jb607tFtj1OPhp z0>ft6?LMM5&|~@a-5qMlLl~AgrAV;n#4QLLCVJ!OA#5CiAiS z85vW;??f*0xnyaO-~Ux60)@%(H}9HB2kL*T01BvCBcJ$-Hd^(*A*VexQR8Sy|9&3493_0Z3K zSDJm?+jQMF-K?wW{b3g@D1KRO@@5)py5k9jPA5S&dhT*pSo1Pj1YU4@a08o7EMax- z{hqHRB>{^7aEx3`iu#4O{;V!`Tf>fhj5I=R*0bXqY+&w&9XNEq{Hn^e@V{w z8Wi{PZ?q5WZ$@4dq%O70RJImuWG3o+?avlD_I_0rZ!RusQ@s4p9jpCHyj|5}OO3I3 z5!;Ul#oShSDIa%dLI1j zY)A6vAqUjOS5)}Zal0|IyfiAY*)td@j$XfL*Qd!jPFk)J^zz-$(qxh*#FM4;`)$0R z2~EaZx>}8-&%S^MxDc4j-H9-cf~C%7V+i!zTpKrf$BZPyXsFO^X1gmQkb4qd7q!vC v`mg;H3ih};<0m9Gq~W6f3v)a5`Vqm5*ZH{OM-T6xwrfc-x%VX^df)yZEoeye literal 6091 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 diff --git a/docs/screenshots/pyrtl-renderer-demo-utf-8.png b/docs/screenshots/pyrtl-renderer-demo-utf-8.png index 997faa6d5ffb4c07ab3ba7a73576fc6167d772ec..e090c601cf861d497a419e949c139119e3f98f05 100644 GIT binary patch literal 17690 zcmcJ%WmFv9wk}*ifB*>=BtVcra1ZVTO(3`hYqW8f;1VG?BtUQ{xO8x9Bq6v3X{?dp z+7PU9_?o=?ob&E|_IJm* zys5t2Z;JM@I$Y zt(Y8{Y%c<@WGOR;#Sc@~Hw)t%(FuwEC&wrL@_IdKO!td|q^A)YQRXC#ReoOdc@H~T z6kwkUK#4MP<5QIe#6-Q{>|V${!7gPa`t+zQQBKb7>+Q+Kbp)w;EFp2p1CCBis}R>u zX6U$X^5B5YW6^I$My8)=i3$BIIQlABj9%o_ws{x747`|V>PyO>#?>Vb4pMGA;J_>` zjIB5)Z#<2-On)ouN$KvIQ>F6w{rfHcwWioA==74X(8>T=XshL5qMb&Sb>#SYLnbFI zZ)J!qyw!5xuX7!O2?B;+6!gD2*owk5lb)7nC1mX{U3;!4ytj?tLva0)+G9IMjO9n| zlH?13o?q?f?j--{9Qh0xmdY&WXdF_O;iDP+yl`DhHJL?y0r!+QJ`UjBsVB!>sc+kK zex?(6etfgiwW)A#k9g6!!TYrP9;W@el*h{?7OCZsclKN?FZ#?9z=LFl<3S6&VkR-r z+nG^nJhhHorbMr>Rvr{c5Hft??j>SqSC%s{z0`1j74=9g`PKQG+Wmfe6Bu{#wx3## zxSnZTYgs9Ya&G_)#sXk8oQfCq`I>*I(>R+UOXYjO~7!gk~^t7zx6zh&+t(m zn|1$3A=G*@X>oSXgAjDa|bea z@@3ClEGd(k;$lUHJWjoblD}!@tkj*<7u6bHtqULTuf>ED3@2UWn3yMk|C+Nry;7Hh zYZPjh>1DBz)ASUpZgs+&{hbbDqK&Eq?$M;Ilbh7Tu7@IM_FY4(|?UmSN`k!m?yjhA&Z5yi|@^-Yg?7auq4kU;5He9b+nVxV5QH_>%3#MpLTQ4oe zQPT&)kA64oYR!M908@c2K5Hc2t|%%(|13GL(hzF;=)c_Ro?9)V{+z7Z)jgMQ%;b!* zXR)pmM&|q1@qcz-qPF#R;F?b5W)&$*rC%-Y+go83X_?SJO;5V&``60hYgD0rOemYy~8T551z^{JRWREQdYAa&r#~AUpE%zr}>&8X< zKK_};9pG+GlMH5(3r642mFUlx?^lHw(UxZze$)C*URGE#S~%l1TnF$H(uIL>C%k^E z1&i#RrZOn0B4?*{XD?!7)~eI+S;g*S0&lL~-n#%ZTlug{Zq|~D-NW(n9K6!pl`mbB zxx+tP*`oTEMQET`*PYi;uCf0UydZI!p87xHJ#Mcl{jbR$mJ>~J_k1*961x31!b(I9 zMSIgYRZ0x%0{GACxmR~x$KMUHJ{K!~A`QHsDDN(NRgnE&Wh?4f5g3T+J&%1heSX#% z^$^*Qjmwpth2B4Inmt!!A|;x4#Qj2B%1Gi#o6ll(yi?mcO}77JM2p*rmCE|SAl3{% zy23&fUJCBySFEALEn&k{-P)I}FT!R$RBLx-ZXP-sFke(N0}g{EZ!co*Wq^)MrkNdm z=Q%C??a+9{_gCzu4{w4Nfo$b1TArp2>c(#IkZE621itK2!jP=zjdsGr;1#l|+$T&G zK`ekxJQhv7A1~B%cy1&+-HU)|I}cv-&>byA3OVlfjh+sr$+>t>L#E@Raid2OHltj)~1jr`1LUEJ28 zX788+^UD<5UdT+J9HilOfJW93Qx-Nt1&8CwdaKvy>F2{3BhCT!)kRkcLk&$j`?|$3 z)%oA;;8N+g%e@;Ya2{Nhmb*>oz4p@V#=ftxpdq0B%X{yXLleG&yyK)iCrDm{`znT6 z%j(b#XmORD0A2c26Gl zDCxx0Z%vHdh(Ys?Y0YW~lN2hGz&3&4(fcM@>ZROmy<;`qChqI$OFPnh=u8* z!fKnv=O3QIv#lP~9`Y9sdRS|hQOU>%QR0GZ|Jt`}?+lY$rS1SedpEm6T1cVzMDCmI zs+#`p*4FpXtS#T3N{yjJdYF~+#Rq;vw^bCL)jAi`5B5yINpa5dVn>P+GF2DTN#9ce zfDOwJ+Fm+=CQWw}bT1{d&<)tw7^&l2WWH&=L7zEWrL7I%;5^F@&|acwe6v==4?M71 zBFBtX-EZm=Hl&B8aW;t#CvqNGDQguc>J0Vbc((97#~N&4e#dvicmg5@e%6F@O6mAO z-n=b+%s|Fw($X-ob_9(;(APsKlT_J7e-v!eI=#^Oy+ZHEGeFAxxB`u+Z`A%Q+hr4P z)o}Ggmzd#qs%3|LEqfF?*y&rrbZ3c3@jHcDSs1@uitumC%PWTQFYomPO_LGfvOpVT zi*u@#Z?X{67{1cG?nVKkXx!%vJ}?d65+S+p0~Z--RL1lxQT%mADqxskxefPB@MCJ77X z;5CB!uYGM@1VGpJ{<}D;gfeXA&;?f~?%<8-@K+F<6V;p0uW_DdO7xFh>a+2>=l-OumYn9jJ zL_CfPcAd+lxQ<#G>vr|p8eDdh{ARc=MQWk_Q*}#_DuP1V8)VMJVIbW0Ig}9xdy;LF z+ne4^h}EE@Lu%;x>H7R!*J}o`#T_^K90_OQz=e`8r@}E+>C>7NuoC*)#OT2AAGzLs zV}9b}EvZoLN#-22->^gR22_3*rpN#({fWR=lWP?{6nwy|VSlCz!0i(KBL2mP`xw7R zm=AKz^Kw%7i8yW%i)}WN{>j*ZmPa)XtNa6(entu8cX-3me{;B?h zS~Ae?i^P!c#_SgAAn2pPHfiOz^ImCi1%3>itS&fW(`{6?9}tj8SgHLdOZ$siK15Bb zLCBB#mi&aXP@us3zVYB68YJHY$(CYI;Z!LwSgJnK$jH5nPQlh?KVQ{S`^Fda+^Lit zFKD4HqsVyiExPu@XQ|CAGeI&o(QNHHpL($cDSO|MHlvXj z8UTxNn=E83Ss6D0VI657s1Q^2E?6^f$MBAG?WkG0ZgvXj8buOS#4S$!tfN|!epA!!nL zQ{(k?^B-O@r7-01$*8J-S`&V5q)m29Je+0qs^vww^-w&%3opW2Ilk%eQ&^AVe~Gbw zuh1qYm4tZ0dpwp^WfXWLG*m<)!u}TyO0sWo_Us7Z3^5Jz{%P_Ha}$+%NNTD=tx@8J z>iCfdva@wcZwyh&q!PgKKCEcOqV@@W+&frY*mHbcWqNv%OK1yvN%F43fK$ES#i<4A z@-G1g8p{Kvl}H`x6VC9k71MvY*9s6@y#yw>tG(^Sh%~hHxM5YEZxIW3!Dgwar$&<(b&fYrpJSNz?08Ln7Pe>L z4>}?PG*p(umE>0LA8T@+WMUIOZD(MAcq3zNna<@nFL6})>n2gecHCK&+ukX;Ewqk^ zNJB!WpMW2j@%dt4N3#{R*UD0L2N@`6zEy`8=UC%4h)Z7Q93VbxVHh4(1R6RZp}L19 zTd6p~UCE3LNH%t0n?g$FYJGuwoLjtKtZp+Vlc@U?7B)LyAEg{|pJPz+b!{S3>U&j< zz%D$+NU$8ESNCFoCY~*|<-8#Pyt+}B+k>QgcywG9)ViL&`ew3^C0 z>J@K)sGsvdlam9j42kSFJba||0PU5a3Ck}1T!G3R&0#d@O}EqIT1D!FC}O6gZ%E_X zfMnIc#p_O7h(9xZiOKGc;fM3ba7({4h2$4aD#@w?l~Hv;NyjVHPm+F)GS<#x#4O-5 zUw>RhaLUW6q@_(7_6g%~&U-IjA`wn|80|=gTJEibcc7`Ka&kInKOVr*Yv(~2^z`IV zBhFYU;ea*Xdo;U_w_>nSHW~XH7ix;_m21jsov+*mKXb=v@?FE&M6v>{Tq|#u zInz%VwRgO?ejT+wrl(hPFEpSW4Es3^;(B#p)Y%Lp0F$MLxWIWwUIkgg^XRGbfb{e6 zN5~{X<^a-^t2{>m-AT$xXiIHa(WYCW0Z1^{njgsS53c(V;iX(EabLLlVas8ZUXLnEk=1{ttv9J%YY{UGO zHgx5*>C;6r$2#@9&1hW%2%eKt+j{C5ZmBnMvJ_W5NC(lsk{Rw zVFfhl=?jb{=Dj)2X}z_#g;+Jt1ldP}DylSDM50qj9NKb24B=&jijrJ(oS$Byi63~d zNOcf*Y(kGy1rxGE1N%v+LrIzG$`f31nv-l_<_>qWHf)p?1O!D~c`M9FDy zU(!VZhV<_rc8c65Q<(*z)&RfHLX0zCq;{e?73EZvTl^#S18^u!5a9}p7qbqsa@u?T zB?bmu*xFaTY6@xo&JaE#0U}8q&cm$IEWu;TDno*B_q}K7JCOmE+$P)h@`1-$0VM|K z$-TE{AWXB9+-I;LWVkiTWjquAlfwTbSf z_P=rT2;t0w&~%^^1}&|bjXlt0@XkAX-ZUWmdcJrzoBq>9|Q z%OBtJ4^%3S2|G1Dl_}3$D@mVzgK>KywilHt+V6g}C#ZBvH9(#jY;&&wyO z|K0uk8{i(hVQQpb%@1CR%bTU@UNef2B@MnOY*Dq~;^Lp2X95zJ&?l7{=-rfCwEHI? zINSuD=j49uSc%Da2t1crKow{d|5x6(! z3z(T1hjNJSmJOz}J_f$~dQesUuBo3)3ZpFaEl!MlhgRb~!@w@QE4ku4i=wqi8tS#{ zYU!$Q9#^shuN^K`O1PlyP`^A4Tvu*90j69l4gi@xKa79ev*ez~NuN783Ja8YtyCAD z`Jrqw2=ldL+JdLLW=WwSDUpC}YoIDr_Ff$VE!bYUtZ8x7@o!eu5<-9}x2v}$K>4xx zM$wm_xmw$rhw|2r{DX?o&wsAcymBx30Zv$uVtRFR6+Nz*i~iEO9}P(2o2ifAWmOuG z0*jfo8j{R-yIK%yFsy-UcdnnSaT1Dn|Gqwn6=6^6CGaE(POP7Yt{vJ}NF zkgVq7lb^It;5NIlEEiiAM6a$iFB=5N9W*Ag81pWjV}))$Y8Zy*G<|e79Z+clhFH!XhG_6!JSPs67~P5<8aVi}-aH(R+}W2QT=Ghe^fGudA& zDV)<7qPIbtr?QdA0wX#PqSdE=;06_H>=UG2epuWQs^xY# zDILMC=m`0h!WVJ{A@%cpN2Kv!b@k$hMHdDk!OHl2iO0JrIVQC+njlVi^CqFj^6ILe zj}n(SujYgV-+MgoNLiwcI3V@1mZFVn6Wmv)ofRT>Kt zhi_6{hwoTlZ--geqhb!c>rc#GO($(HX2w_kc@d*mFkknXwV1~yMD~+}5;G~-STftW z&vB@AA8rZ5nl|~6^Wz1>UDhD{LErr%z4|9a0!}E1U;CUFjbQrG?zczzYQG}iU~`Z+ zM}-H-jtySOP()+73i6qeViexoZeq=T=h$5hMjy@KmznIQhqMI@z~OOWlzd(#t1!L| z!EXf8zgx_T{KE_?C|aESvs=CKuR_tKBU4z!e~IG)Ljfi<0eT-jOsw5`pi+RGL;>r< zu4RZXm(AxJgOD7{ZNqQv(@ZWvpD_jL4N?8RMgLU1UO7iwU4qZ z2F(X8AMW+)?d{CIG(1~A(R1D;UbTjP^>XYqj+RyRfs?n)- zmNfPHPUndp4inycI!74jB^WTBsZqX_We1MyV~jJ80<*UaRh^7bRPF%^5LrJpq$+Y0 zAvrB_M_&0Q9CxknFWm#e{9BY^H#Zv(;BFBmfpv*CTHhl_!+Vzful#(%!u;Q<1!Q?& zL+#Wm2i)uL6KS*@7Tei=+7}>loAHJ{b%p?k=AeO6&`XG`)IF*22mieU*5I$s$QoDV z7UaWbOwtZb)*I_*uZHgS)6xGg9JO~*Ku0@aPzW+fS^a}m3qz5x(ME9i*0F#@1`4~@ zR^dLjOp= zF>-Dc9zyPwIFp88w#_b`iiK3barl^k?Ie9W+a)RQS7L3m7~2QpwHaYW#idDh)1u#y z&hM*uRQ&xbwgU`v&hqMkuo8sr3&*TSMQA)8$ha&eiRyn`+;}1${1Givza!AySKqzk z(%ya)+4;n%k0laO6!dgMjFk2#io-ldLFa#{tG!fGE{BD4Z*NCOnis@+0boK5MM;vU zp50)zGAtqipJTVg!YNaphY=E0fz&q-%}#fmlR9T+o_Ka=5>!Rpo762+EPY0!f1lp& zV0P~Rtgnb%P>QN{LMhwW*W}5a6O1An*2g$XBWroHxNhcj)wvC7ctO)qa^o8)_IYJBIFUe} zdUfO)`@w&8r7U7MTueRH8W!@}`0`Sc2)MlV$ckr~doZ$=pAr{&b_FIEO9TSXi)KXpkW_9X%$t?VzCqFqJoeukj3l z>luW@Y3$ZQqiNelr)v~f(5K6gThKkY%?b8*B6Ehi1V(z*pP-rgNu;L|5tDT$w$|ro z3K0-}%1{%pOOYiu=s~>9ox|CkC*`=w5>}RVPQR5 zv&D(JLMDV-an_(1aAM{X!wkfLeNCPJTO7JoYAyf=E@ z(3%m}gX2{K?p3HfI}A7bHrO;cmZ&3nk3oze4=yyeeSB^T_!xG6={5|(Qk-=oAIhvz z?7WpU^AX>(UkqlHnfy(9saC19cf?<+aj;Fo$MbiHiA0uB(8As{H-6j_FMs~!d4It> zQfGtzp$sdx3PHb%*VWEKG*zQtqLL&f%`auVKZYmn`vQeoy0!e!R4GXgir|K|4yvqT zJ?5BjN_1co_*nnDGJ%W}AZe|HnaB2}{d$N(!##qqEU4ZA{@%}T$OkgFf{US1^bO@* z3HBg^jeje>O#ZK>7tbH5Mf=f4%k7!TF}1U^CcRz4Y)jI5*bjtI!SQzKwas*GDY9sZ zncZYJ4IlXSpp?30wwmC1P(#<#Co_*)7x1WJ!cvoc&&aCJiTPV+9z-i48>c^n70sV% z*VY)}7oA&VMhTwHgRJT8=usMMO-fJ7@zF~hFKbWwSsb^q6=)OpyW4E8ljT$11G%nN z(@~C1N!UOLxPYtb^@9KW)ba1tmknh%CwHUIp?9m&c2ds72b&e2V$X=T%P{@}HZ9w$ z{|y25uVbb^KskAm<<2JgM6?!44F`d<(I^y+^zmWCef7!Y%38O7W+0=KpPr(h`18rK z6UkwT)6i8kAEZkZ)S5xgBhhj`Oj*yzNN=a~F9zRVKH-0&Sp(DijX&KYjT5?`%%q=X z7WGlCk^yE!eO#@?(O3^^zL^=EJuYxiUbVj=V~ZmBgXLtI0|6c~`>DC2-12|5iSQn_ z$F64xjWR93joX9f1^P`Y;2h0TQn)VzUXB#-IbN(Dc`83o3w&VMAM@g7yS8uAG3m!s z?zK)RG&PC2bhT(?vJTc_Fz;7SBmL^tcoqCOZd6LFvchp^u zPAh_*6xSBu9-brZZ*Q+~2-#a(JMaQ&Dp~hry$(S}^FsRfZyZo#@`JAX4k?SfyhWUx|0W|5*2x0@B_rV)_ zZ+H)!9F2Y5jx)_Sk0Wt;GHPMp`Y8}_kr&?^9E+>ka#Rp+Mna=gx zZ}=Yd$ApA~E>>%mbMa9fj2|(ywaEURh?BQj)CF&x)U);^6S$JlD3!ynz-Z|XU9Lh_Ql&%X)alKM&%Bh365ZOXtAGC@Jxc9G2RGaHaZ3d-7$@e$GP-w5h@>~{!D zUfd6$4cHY0{!8CFb6@vtmef#t`wkw*)YotDE(>6MJaYyt#2)IA0@9K|HtetxT!Lm;CGWNV&9Ookwzc#18_Yp3=eV%ZkX-%A6K!bUSDBH8^>j>% zH;3om*WTfNK8(7O*te!iSC-zO9qTN)^_5Q!&Z+PG&w1G(AiGg2_p(1$-t<^`e|bW9 zZqTvXCx=w*gv){VNf%%lfSK(c8mE)QMun2poat@Y!q5P-HXM63_yXc)iR{;fSQdUm zbD|yVhNpb(WvBXjoX17UIOl8=+00`lbiprq9wXUOPqrv6Kp4*U={^Dz`*sIDu(Fax zjE}A3cj%m5aZsq%Um<*2ewPk`_v6T|DSLLf9EiEO6QH<>RoPOxd>2@`p*sIYy0;5Q z2Nnu*{DKcZJ2d|~)~~(v!icN8pV7>MLx{G&)YmP^euPZ*qlfHK+Jd4zp{f2LffLR& z?8lt6fD2d)N(2~SEhaeX8?NW{Q(EIG)ypH!9vCPI*^pYcn2Oy=vAS0*jtOpN>hY~H zl(tM9`}|k`K?Oe5zCeA9s+4;rzOfS9`ME*+`@4)p3`?C$7={svn|q%`)0dTfqP^H5 zKZ_+ZCWUrml493ak>U;pJ}~WS11ww9ngz+z2t<}?xlK)m9B;yA`U0;-&76A*f$%im zy^)A-`*lg+$EYVeoaXsNY1W zpwW397WDQ2`k^JYZPzMmXq&vUEo~VkCmhW{ZU-g3iyX1)hdkK|MgASQ>*O-wuX5<=*PhwX*ghw9e~Q&{-M(b$Fdqrvf^r z6K2V$$wY~YB^dz?SArPCh>vmb~*LqF;6XNY=)J>?z5SWF|YcN1kVFz0j9%;X@=}zZ);GG}IhjVV!0UO>2A=m)j z-b2wS7_h-lqhG82Rs6lK$eJ%N2F3@Jy&Q0OGos|A^mmgZ98ng*z-^2lBrZSw>28j4 zk?oZaFwwF7^ZOV<(7pmlkx~zoL3QCRPz6nh)f-e>N>q!(SUZ9zQ1kiHaXDcHR}Ei; zpxo}}$F2@>r=^IlZf*sv!51^HrjC)q+li0X`&C;EPj-YR(N@yY)sePsR%*v*(^I}i zCh6k%DgSDVI35{$0>oEDLgVP^!wJm}UJq3h(4KR5ubR}>mDaBGcppQpJk&e$zQlnu z4Yubj)+=wQ7F5KKwCb!ZqnN7?K%l&2J=vaZZ-znTMQ;&~)A8Ky4r~If;PhBW&-L~+ zf)6pY1nq81%J6q@hqy1>e)C!Y$pl=G)yg@Dz!2@%GfvTZMHWPk@ldTvdb%apYO}w_2afga3o~l(IdnBceNtRqTQ$DCgRZj zFK-bi`sYQe8rNL|7^T}+3alpNb>4%S?(#CPE>^>#sNm{bB|2 zei|s@y(HaB*qfrIq9^Ma>dCx4m5bc5aywK6F&k zz#Np>-#^)w6dKkebUN-Oxi(yiyv!B%f)f(K#Ii~f6P1t0ZaMsZyzoCYK>zVfLY@6{ zK0t6|wJATvOgQ<67d31A$rx(#Xeq0^a{rSy?ElwmV9coc`>(OJA)Uf3OAcjic4p5D z&B^o&SYPC_4y`{bvHJQRX9;YTaS>@?bpN|n?!UP|fhebG@-jZOc5IdAeBam65sScn zJ;~41IFpk7NnkbpLn)PL6}?vbZV`9O1stNxU6!lk%f3m@8=`y}yRAiU0ghHNP^M9S zNFGGOyLd?1_Hc#ne(>Y!1!KLXG8H&8wjFRU;|f`zNx*amAcS0BFawj~a|A$okUfO7 z9g=koewl6U_td!I)5p#-1t+^dBZ`A0+ngzG%>Q0~e^GCHVNT2iPUw6+E=782+!(57 zbHf}e@Ch?>7ZY#^ytb`T8V6_bw%Vre?2S~U-e;|8>5+8AvC$5-Mh5x+z+2W4@2y@Y zow4a=KYp-4&20inObr!XZsv~Qc+-*{hm0 zc*?~p_?7=+3f3pYkAv#Ji6W07g9k>nG738;VFL6_%fAAF#bw!{Ys%5KeB^off@9=E z0y?yBT6k!5&iS0`HfbcwDDPz4#>A=q+pGBapA68;J~Qi3Rs-ym6EXmpkRlnmVDA+~ zyzM_BK@UD%VBKi!>wq`Rr4zATh4-=`X~*vY?~B=8R#ZuSIZjWT+c!@Ha!n)w#9BcS zKWJSTbljfQ-Cy}n_L-FLBYu0MWK_wl^=OS3kRCYNfL%Di+_)s?2|r|#Ox)d7SOl36gUfFgtDyW>1%o&(NOitt`wV73*pz;__rd3&5qdUIRzR@A&$P zgh7FiAWesx`)*U?fz?*_eRzX`=M9R-CW#oq|76pROuv=Mbk_e!{&3H3$|P6iof5tL8G z++G`WGVi@;yK;GEw!c!EG_9*+51Hc$qcQ$gS z5ZCeBXmR*8>Xpjed~`j1UGcT(ZbL#Hhl2wrOj8JoD8O^!JjGwxL-ws9%a&kw^%kF% zZ!#qW(9G^b9HAM`vfZdvutaeQI|}l5vbOX<{~C5)Ga#LI_e&;5@aXD;t8>xv#6mR; z>E5PismKdPs+wpLf^{Gmj98wLB!#&d69GmG0u?^*4=-HeOn%NEeB6e6@IMfZ5Ucuf z&8)gUqyR1IlQ*f*pU6O!u#Wtta$Iw3zql-zfL@>wCT`c!=Y)S`-`AX|yHs`M&pft5 z9pVwIRAx-T-LY_yI&D*Uk!+B)liLx<-roMSDVdznlkAp1Jw zMQ>R2<-XhLlZrQ;fmmIEn3};@NcUy3>WQo~# z)|r+V05KP2YrM3wYCnSO?0m(@?y7wo4O^{8-4mX>z^zldnz>42_`2sU&36J5pG!2k z624Y%ZKz{GD6Nf_3Z3b}>xuj1-KAz4f*^s?e4Y0b*REot3vTy=r`e{sAClIvU;@fu zDk*8CYK}h1Y=eBiFM|^Hx>`ZRtDmKp-9q3;_iaoMK;k<=+gh1z_7ewMCD%@HR`KdR zDZ5TDS5&}E?Qs2_x;ZbSC{Y5*YIj&%Tdl8K7hF@pthB{4}7?JXSo zM+8GF)vdHYiSQT@qDfEAobl})#ol9C_^rCko*1Hhau)6PGFtJT<>kYfVItfGX)*(oU(Hp#o;-VTEtJ`nBXJZcp511d}VgoPl;G?y}{5>MEfSY|5DTMzt z_@|D(zZLKKG>wM1>E`I7+vJ{k_(HoC5M235c;m~b-#x-@Ey}B8zdp$NJHPY!$uOwB z@d7T|?v3(|UfM4%jKIT%)E_}U$nSf@$`To=eyk1G6X4-*OR5>x5&h}iQLDkdAAZ}r zBZ3302~7MBsu{tSS3!in)63w#c$9jd0EI;7(m)TK^PKZm(~;#TN!HPW zYDbh2`{mlgH=S4B3s*4E-cPdY{FGvIvno_#i9Zp>0<%?@mSG2 z304ss#Gvbz9p&<}y-r3IL{L+WPpnmbe}<9!^eO@2pqk$0kxck3xS3%)k{&qgobodU zx}uPlCd`x4zy0!-3fCokTih>OoJqK^TR$hKn1w^x2jV4)OV7RM{HvKSmb_sZj!;~G z4^+0!UxZ!moAm-e1ZZb6*W*w6ELb@W02Y6XQiP8*qjO@Eq+Id=Bt;Z3iUPe$XfVl)ICgC)Q{KAukr<#`J^MVM^#-jB*PM!qW~=SKg% zqnJ(1{)37D$7d)n0B2cd0UDQxMYr3SSt1^(Lk;ULeW!TAw(1Q_agI$|-mI~Qlu^Kn z_049^`AGLH2Wf?$K1*s2QdtdLsSTl0s3qu`ZkfL}TBsUWdIYDI22(V+MlL0miHTtX zUxN&Wuh(ZjAutXJAf;1^90StFRmH`EySo3>x0GJX+Ngf)s;uj+DeVuV66=td(Q`>F ziOo9v9bZ<{(d;~*mS@ZBQInd~=52Jmf3Ty+i{%R48mRB?FTCc!RC53wcT1pJm9(5u zq?UQ#l0yq|ZS*gswsb9HN7A!c_vfiyy?x@2d-Z=*aT|>gTJo*Uj$vV28EQKH{uGJ^ zt2K}5OT1dI?>EZHwZ8e+`e<>rxFoZbY)v`m}qNshix*WtaDi3i@DbE z&ixX5lPyhqXz=DHENG%Aos~$VlNU$L&5{ox!Wf{fi*`kt|>!&u}FA2zdn%q_|cG0g7 zE2e!O824?cY8WhsjMH-a@??ot?p$B8@Er4!78KdSxeFnNGBZbMQ!^bB`8US~tJ`(T z<`P+{zPC`ow!GRK5=$B2XgF7zf0K~%sbXdzg&3W#OtJnko|+#|jws6wa@(l({M;ji zNc!8za`W}46$F%uEk>_HvvrA`w5xyeq$?zBI=%*z+4sZvgw+zq3Svqtoxjd;bT(nx-BQ8IFD#mV=IDz(Kk zkH*nIy~ExMx=AiKVv-uy01W1R4`+reM2tToGbu#rSXo!2wT4oUe7=-og;7h{A(Ey^ z_b{czUSiB;OD+Vk7<0KV%sYC1?)W6csptri)A+4tmd8qV_Jc0ggjzFaJ${C!PVa4( zL4izYTbpNXXFOtDNsaUt&dT@QiV{a|qGXY4rMw->7n0|*o`8*z6uPZgB(cK#1<>WE zu|)^5-$$w2r~==JMVCDm-Qfbz^_r)G4G8uJq)XQ=`gQjN>sqQ0sT1>&Ey__84U5?Y zK@qz{@8D0!{RF7E^7SP3Sf9O9wsR23Pc8MXR4`wSZ+cp$Zbm?F{Y>E(RI)WtPLbkv zIVNtw^?QKpMAmIb+4_Bi#1S@-dcn}wcKPa#ZX1b|Q}kFYuA?A#jrsa~2?X2NSwR8)G+}ob4xGlGHBs9<^nNI1lX9@UKPgD~gXH z;_~B7WCo-$OHR)fH*=o_JsNJG+nRVbN8yE}TaVnk zm5PXvyTX5`TE=-D{?ire4;l>UUwihv9~&^5CUL$KocK%_46pk4=D2dgtvUX<{sF4x zXoi#SX=z2{`)l5r8ZNc1AduF6GLlcyO-y5CauS_M&bu{>Xy1JQ4X1qn(aHEi4ns`R zx^|S_hIUMnCd!fhh^27B`2jL@jWZFU01qdVO&K~f7Epjw7o7#iXZ#>6f9N1(W=uwG zv|rKEK#K9qQ-#sA>$%y2Z_@hv)VpIshCk4jb%e!X1@~RHzv>-MM%(Tp(y5+~P1?my z4nE?}e>8M(SAc-j?tPz7nM+`oei<_MPBdyO>ooG|O4l1KzYAHD88ysC?mxTg%s2VA zhsQ5oAA0`7{C1fme-g>#zu-kdzO`2mVU3y8V~f=j?N;X18IImO5{$tHpS0WrQac|W zrHQNfT?$ZG|4h4c*ta_2G+g9mr6-0yanG4~E*Ql@?+EPq^WXS2R^JelW?Up@Q;3N1 z93l?ctd{%B3?4lDEJ;VpvsIW)=&s&~-ODU=F52`xua}ezX!E z_}9iY&mVbdC5vAj{7Z$er!#5xx_z%pf|w-$X?5>Pa-DDcc64^S{ZH}GYwE_t#|$VW z0d+f4k2=|;Yf%z3=@e45I*4swY-yBNH2>r>{UCzhHV=4^X8BV#0 z)jdv?8^$a@SePGDBNJ2vK}oK?BPi>I?i$OeY!736rMV{Jq#ToV9QRo1>_=sqoV9;# z>BEqoUcdUDMFXAtC@lEm683s|nVjL>+7m~P9bdn6Pvw|HaN&HpA2Mwla8pHNxu`Lz zE-kqQMf z`5p0t_GrXnuNF?7mU6PH1Q;yDr{kMazk5e7d9$wZ2>(}OphKw&_PjsOe|7^}i?{v0 z`Q9CcW-8eLO;l9dof>N!TtG8DbO&5ck3-YuUQ+@4OUy%AU~SpIIoH~0Q#LkCDkZ13 zQ3R6W5{L4B-^E@7$zqf70mhA3+kKx&r5q17IvOz6qk)9#U{;d0wy zsC#ui{qZO8&4J^qiPXx%=&;KmF3>d5)9hOM+EgwWD|m4$nkBmNOSX9sKL>7-a;XQ$ z9i3)Rm^RiOZO;0h{&>3wcap5g3US@Vh?X&vVrV5BZxeWt3js6L^2jyLt1Pm58-Ev=@ t$=31w32&5r?P-GbKk}wE#(v+Ru?fzCHpkDTZ~y7Z3wc$!3K`S4{~z(9uqgll literal 9958 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 z tuple[pyrtl.WireVector, pyrtl.WireVector]: + # `match_bitwidth` zero-extends its arguments to the widest argument's bitwidth. a, b = pyrtl.match_bitwidth(a, b) - # This function is a function that allows us to match the bitwidth of multiple - # different wires. By default, it zero extends the shorter bits if len(a) == 1: return one_bit_add(a, b, carry_in) lsb, ripple_carry = one_bit_add(a[0], b[0], carry_in) @@ -47,7 +46,7 @@ def ripple_add( # # 1. If `a` is one-bit wide, just do a `one_bit_add`. # 2. Otherwise, do a `one_bit_add` on the least significant bits, `ripple_add` the rest, -# and then stick the results back together into one `WireVector`. +# and then `concat` the results back together into one `WireVector`. # # ## A couple interesting features of PyRTL can be seen here: # @@ -62,26 +61,26 @@ def ripple_add( # and PyRTL will cast integers and some other types to `WireVectors` when it can. # # Now let's build a 3-bit counter from our N-bit ripple carry adder. -counter = pyrtl.Register(bitwidth=3, name="counter") -sum, carry_out = ripple_add(counter, pyrtl.Const("1'b1")) +counter = pyrtl.Register(name="counter", bitwidth=3) +sum, _carry_out = ripple_add(counter, pyrtl.Const(1)) counter.next <<= sum # ## A few new things in the above code: # # * The two remaining types of basic `WireVectors`, `Const` and `Register`, both appear. # `Const`, unsurprisingly, is just for holding constants (such as the `0` in -# `ripple_add`), but here we create one explicitly with a Verilog-like string which -# includes both the value and the bitwidth. +# `ripple_add`), but here we create one explicitly. # * `Registers` are just like `WireVectors`, except their updates are delayed to the # next clock cycle. This is made explicit in the syntax through the property `.next` -# which should always be set for registers. +# which must be set for registers. # * In this simple example, we make the counter's value on the next cycle equal to the # counter's value this cycle plus one. # # Now let's run the bugger. No need for `Inputs`, as this circuit doesn't have any. -# Finally we'll print the trace to the screen and check that it counts up correctly. +# Finally we'll print the trace and check that `counter` counts up to 7, then wraps +# around to 0. sim = pyrtl.Simulation() -for cycle in range(15): +for cycle in range(12): sim.step() - assert sim.value[counter] == cycle % 8 + assert sim.inspect("counter") == cycle % 8 sim.tracer.render_trace() diff --git a/ipynb-examples/example2-counter.ipynb b/ipynb-examples/example2-counter.ipynb index 739e27b1..5862a6b8 100644 --- a/ipynb-examples/example2-counter.ipynb +++ b/ipynb-examples/example2-counter.ipynb @@ -61,12 +61,12 @@ "source": [ " If we call `one_bit_add` above with the arguments `x`, `y`, and `z`, it will make a\n", " one-bit adder to add those values together, returning [WireVectors](https://pyrtl.readthedocs.io/en/latest/basic.html#pyrtl.WireVector) for `sum` and\n", - " `carry_out` as applied to `x`, `y`, and `z`. If I call it again on `i`, `j`, and `k`\n", - " it will build a new one-bit adder for those inputs and return the resulting `sum` and\n", - " `carry_out` for that adder.\n", + " `carry_out` as applied to `x`, `y`, and `z`. If I call `one_bit_add` again on `i`,\n", + " `j`, and `k` it will build a new one-bit adder for those inputs and return the\n", + " resulting `sum` and `carry_out` for that adder.\n", "\n", - " While PyRTL actually provides an `+` operator for [WireVectors](https://pyrtl.readthedocs.io/en/latest/basic.html#pyrtl.WireVector) which generates\n", - " adders, a ripple carry adder is something people can understand easily but has enough\n", + " While PyRTL actually provides a `+` operator for [WireVectors](https://pyrtl.readthedocs.io/en/latest/basic.html#pyrtl.WireVector) which generates adders,\n", + " a ripple carry adder is something people can understand easily but has enough\n", " structure to be mildly interesting. Let's define an adder of arbitrary length\n", " recursively and (hopefully) Pythonically. More comments after the code.\n" ] @@ -82,9 +82,8 @@ "def ripple_add(\n", " a: pyrtl.WireVector, b: pyrtl.WireVector, carry_in: pyrtl.WireVector = 0\n", ") -> tuple[pyrtl.WireVector, pyrtl.WireVector]:\n", + " # `match_bitwidth` zero-extends its arguments to the widest argument's bitwidth.\n", " a, b = pyrtl.match_bitwidth(a, b)\n", - " # This function is a function that allows us to match the bitwidth of multiple\n", - " # different wires. By default, it zero extends the shorter bits\n", " if len(a) == 1:\n", " return one_bit_add(a, b, carry_in)\n", " lsb, ripple_carry = one_bit_add(a[0], b[0], carry_in)\n", @@ -100,7 +99,7 @@ "\n", " 1. If `a` is one-bit wide, just do a `one_bit_add`.\n", " 2. Otherwise, do a `one_bit_add` on the least significant bits, `ripple_add` the rest,\n", - " and then stick the results back together into one [WireVector](https://pyrtl.readthedocs.io/en/latest/basic.html#pyrtl.WireVector).\n", + " and then `concat` the results back together into one [WireVector](https://pyrtl.readthedocs.io/en/latest/basic.html#pyrtl.WireVector).\n", "\n", " ## A couple interesting features of PyRTL can be seen here:\n", "\n", @@ -125,8 +124,8 @@ }, "outputs": [], "source": [ - "counter = pyrtl.Register(bitwidth=3, name=\"counter\")\n", - "sum, carry_out = ripple_add(counter, pyrtl.Const(\"1'b1\"))\n", + "counter = pyrtl.Register(name=\"counter\", bitwidth=3)\n", + "sum, _carry_out = ripple_add(counter, pyrtl.Const(1))\n", "counter.next <<= sum\n" ] }, @@ -138,16 +137,16 @@ "\n", " * The two remaining types of basic [WireVectors](https://pyrtl.readthedocs.io/en/latest/basic.html#pyrtl.WireVector), [Const](https://pyrtl.readthedocs.io/en/latest/basic.html#pyrtl.Const) and [Register](https://pyrtl.readthedocs.io/en/latest/basic.html#pyrtl.Register), both appear.\n", " [Const](https://pyrtl.readthedocs.io/en/latest/basic.html#pyrtl.Const), unsurprisingly, is just for holding constants (such as the `0` in\n", - " `ripple_add`), but here we create one explicitly with a Verilog-like string which\n", - " includes both the value and the bitwidth.\n", + " `ripple_add`), but here we create one explicitly.\n", " * [Registers](https://pyrtl.readthedocs.io/en/latest/basic.html#pyrtl.Register) are just like [WireVectors](https://pyrtl.readthedocs.io/en/latest/basic.html#pyrtl.WireVector), except their updates are delayed to the\n", " next clock cycle. This is made explicit in the syntax through the property `.next`\n", - " which should always be set for registers.\n", + " which must be set for registers.\n", " * In this simple example, we make the counter's value on the next cycle equal to the\n", " counter's value this cycle plus one.\n", "\n", " Now let's run the bugger. No need for [Inputs](https://pyrtl.readthedocs.io/en/latest/basic.html#pyrtl.Input), as this circuit doesn't have any.\n", - " Finally we'll print the trace to the screen and check that it counts up correctly.\n" + " Finally we'll print the trace and check that `counter` counts up to 7, then wraps\n", + " around to 0.\n" ] }, { @@ -159,9 +158,9 @@ "outputs": [], "source": [ "sim = pyrtl.Simulation()\n", - "for cycle in range(15):\n", + "for cycle in range(12):\n", " sim.step()\n", - " assert sim.value[counter] == cycle % 8\n", + " assert sim.inspect(\"counter\") == cycle % 8\n", "sim.tracer.render_trace()\n" ] } diff --git a/justfile b/justfile index e41e7e93..589d844c 100644 --- a/justfile +++ b/justfile @@ -4,7 +4,7 @@ set windows-shell := ["powershell.exe", "-NoLogo", "-Command"] -presubmit: tests docs +presubmit: tests docs www tests: # Run `pytest` with the latest version of Python supported by PyRTL, @@ -39,3 +39,9 @@ docs: # # Output: docs/_build/html/index.html uv run sphinx-build -M html docs/ docs/_build + +www: + # Run `sphinx-build` to generate github.io webpage. + # + # Output: www/_build/html/index.html + uv run sphinx-build -M html www/ www/_build diff --git a/pyproject.toml b/pyproject.toml index c42d638a..829f78d0 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -118,6 +118,7 @@ ignore = [ dev = [ "furo>=2025.9.25", "graphviz>=0.21", + "pydata-sphinx-theme>=0.15.4", "pyparsing>=3.2.5", "pytest>=8.4.2", "pytest-cov>=7.0.0", @@ -127,4 +128,5 @@ dev = [ "sphinx>=7.4.7", "sphinx-autodoc-typehints>=2.3.0", "sphinx-copybutton>=0.5.2", + "sphinx-design>=0.6.1", ] diff --git a/pyrtl/simulation.py b/pyrtl/simulation.py index 63a2d8e8..8ce6569c 100644 --- a/pyrtl/simulation.py +++ b/pyrtl/simulation.py @@ -1374,7 +1374,7 @@ class Utf8RendererConstants(RendererConstants): vertical rising and falling edges. Multi-bit :class:`WireVector` values are rendered in reverse-video rectangles. - This is the default renderer on non-Windows platforms. + This is the default renderer. Enable this renderer by default by setting the ``PYRTL_RENDERER`` environment variable to ``utf-8``:: @@ -1382,6 +1382,7 @@ class Utf8RendererConstants(RendererConstants): export PYRTL_RENDERER=utf-8 .. image:: ../docs/screenshots/pyrtl-renderer-demo-utf-8.png + :width: 35em """ # Start reverse-video, reset all attributes @@ -1422,6 +1423,7 @@ class Utf8AltRendererConstants(RendererConstants): export PYRTL_RENDERER=utf-8-alt .. image:: ../docs/screenshots/pyrtl-renderer-demo-utf-8-alt.png + :width: 25em """ # Start reverse-video, reset all attributes @@ -1452,7 +1454,7 @@ class PowerlineRendererConstants(Utf8RendererConstants): in reverse-video hexagons. This renderer requires a `terminal font that supports Powerline glyphs - `_ + `_. Enable this renderer by default by setting the ``PYRTL_RENDERER`` environment variable to ``powerline``:: @@ -1460,6 +1462,7 @@ class PowerlineRendererConstants(Utf8RendererConstants): export PYRTL_RENDERER=powerline .. image:: ../docs/screenshots/pyrtl-renderer-demo-powerline.png + :width: 35em """ # Start reverse-video, reset all attributes @@ -1490,6 +1493,7 @@ class Utf8BasicRendererConstants(RendererConstants): export PYRTL_RENDERER=utf-8-basic .. image:: ../docs/screenshots/pyrtl-renderer-demo-utf-8-basic.png + :width: 25em """ _tick = "│" @@ -1521,6 +1525,7 @@ class AsciiRendererConstants(RendererConstants): export PYRTL_RENDERER=ascii .. image:: ../docs/screenshots/pyrtl-renderer-demo-ascii.png + :width: 25em """ _tick = "|" @@ -1823,7 +1828,7 @@ def print_vcd(self, file: TextIO | None = None, include_clock: bool = False): This VCD output can be saved to a ``file`` and opened in `GTKWave `_: - .. image:: ../docs/screenshots/gtkwave.png + .. image:: ../docs/images/gtkwave.png :param file: File to output VCD data to. Defaults to ``stdout``. :param include_clock: Boolean specifying if the implicit ``clk`` should be diff --git a/tests/test_examples.py b/tests/test_examples.py index b2e930a2..b761e228 100644 --- a/tests/test_examples.py +++ b/tests/test_examples.py @@ -1,29 +1,38 @@ import os import subprocess +import sys +from itertools import chain from pathlib import Path import pytest -import pyrtl -""" -Tests all of the files in the example folder - -Note that this file is structure dependent, so don't forget to change it if the relative -location of the examples changes -""" +def get_scripts(directory: str) -> Path: + return (Path(os.path.dirname(__file__)) / ".." / directory).glob("*.py") @pytest.mark.parametrize( "file", - (Path(os.path.dirname(__file__)) / ".." / "examples").glob("*.py"), + chain(get_scripts("examples"), get_scripts("www/examples")), ids=lambda path: path.name, ) def test_all_examples(file): + """Test all Python scripts in ``examples/`` and ``www/examples``. + + This just checks that all Python scripts terminate with exit status 0. + """ # Always use the ASCII renderer for deterministic example output. os.environ["PYRTL_RENDERER"] = "ascii" - pyrtl.reset_working_block() + try: subprocess.check_output(["uv", "run", file]) - except subprocess.CalledProcessError as e: - raise e + except subprocess.CalledProcessError: + pytest.fail(f"Failed to execute {file}") + + +if __name__ == "__main__": + print( + "ERROR: This test must be run with `pytest`. Try " + "`uv run pytest tests/test_examples.py`." + ) + sys.exit(1) diff --git a/uv.lock b/uv.lock index 2dfe81b7..3253c5f0 100644 --- a/uv.lock +++ b/uv.lock @@ -321,7 +321,7 @@ name = "exceptiongroup" version = "1.3.1" source = { registry = "https://pypi.org/simple" } dependencies = [ - { name = "typing-extensions", marker = "python_full_version < '3.13'" }, + { name = "typing-extensions", marker = "python_full_version < '3.11'" }, ] sdist = { url = "https://files.pythonhosted.org/packages/50/79/66800aadf48771f6b62f7eb014e352e5d06856655206165d775e675a02c9/exceptiongroup-1.3.1.tar.gz", hash = "sha256:8b412432c6055b0b7d14c310000ae93352ed6754f70fa8f7c34141f91c4e3219", size = 30371, upload-time = "2025-11-21T23:01:54.787Z" } wheels = [ @@ -506,6 +506,51 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/54/20/4d324d65cc6d9205fabedc306948156824eb9f0ee1633355a8f7ec5c66bf/pluggy-1.6.0-py3-none-any.whl", hash = "sha256:e920276dd6813095e9377c0bc5566d94c932c33b27a3e3945d8389c374dd4746", size = 20538, upload-time = "2025-05-15T12:30:06.134Z" }, ] +[[package]] +name = "pydata-sphinx-theme" +version = "0.15.4" +source = { registry = "https://pypi.org/simple" } +resolution-markers = [ + "python_full_version < '3.11'", +] +dependencies = [ + { name = "accessible-pygments", marker = "python_full_version < '3.11'" }, + { name = "babel", marker = "python_full_version < '3.11'" }, + { name = "beautifulsoup4", marker = "python_full_version < '3.11'" }, + { name = "docutils", version = "0.21.2", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.11'" }, + { name = "packaging", marker = "python_full_version < '3.11'" }, + { name = "pygments", marker = "python_full_version < '3.11'" }, + { name = "sphinx", version = "8.1.3", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.11'" }, + { name = "typing-extensions", marker = "python_full_version < '3.11'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/67/ea/3ab478cccacc2e8ef69892c42c44ae547bae089f356c4b47caf61730958d/pydata_sphinx_theme-0.15.4.tar.gz", hash = "sha256:7762ec0ac59df3acecf49fd2f889e1b4565dbce8b88b2e29ee06fdd90645a06d", size = 2400673, upload-time = "2024-06-25T19:28:45.041Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/e7/d3/c622950d87a2ffd1654208733b5bd1c5645930014abed8f4c0d74863988b/pydata_sphinx_theme-0.15.4-py3-none-any.whl", hash = "sha256:2136ad0e9500d0949f96167e63f3e298620040aea8f9c74621959eda5d4cf8e6", size = 4640157, upload-time = "2024-06-25T19:28:42.383Z" }, +] + +[[package]] +name = "pydata-sphinx-theme" +version = "0.16.1" +source = { registry = "https://pypi.org/simple" } +resolution-markers = [ + "python_full_version >= '3.12'", + "python_full_version == '3.11.*'", +] +dependencies = [ + { name = "accessible-pygments", marker = "python_full_version >= '3.11'" }, + { name = "babel", marker = "python_full_version >= '3.11'" }, + { name = "beautifulsoup4", marker = "python_full_version >= '3.11'" }, + { name = "docutils", version = "0.22.4", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.11'" }, + { name = "pygments", marker = "python_full_version >= '3.11'" }, + { name = "sphinx", version = "9.0.4", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version == '3.11.*'" }, + { name = "sphinx", version = "9.1.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.12'" }, + { name = "typing-extensions", marker = "python_full_version >= '3.11'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/00/20/bb50f9de3a6de69e6abd6b087b52fa2418a0418b19597601605f855ad044/pydata_sphinx_theme-0.16.1.tar.gz", hash = "sha256:a08b7f0b7f70387219dc659bff0893a7554d5eb39b59d3b8ef37b8401b7642d7", size = 2412693, upload-time = "2024-12-17T10:53:39.537Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/e2/0d/8ba33fa83a7dcde13eb3c1c2a0c1cc29950a048bfed6d9b0d8b6bd710b4c/pydata_sphinx_theme-0.16.1-py3-none-any.whl", hash = "sha256:225331e8ac4b32682c18fcac5a57a6f717c4e632cea5dd0e247b55155faeccde", size = 6723264, upload-time = "2024-12-17T10:53:35.645Z" }, +] + [[package]] name = "pygments" version = "2.20.0" @@ -540,6 +585,8 @@ svg = [ dev = [ { name = "furo" }, { name = "graphviz" }, + { name = "pydata-sphinx-theme", version = "0.15.4", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.11'" }, + { name = "pydata-sphinx-theme", version = "0.16.1", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.11'" }, { name = "pyparsing" }, { name = "pytest" }, { name = "pytest-cov" }, @@ -553,6 +600,8 @@ dev = [ { name = "sphinx-autodoc-typehints", version = "3.6.1", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version == '3.11.*'" }, { name = "sphinx-autodoc-typehints", version = "3.10.2", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.12'" }, { name = "sphinx-copybutton" }, + { name = "sphinx-design", version = "0.6.1", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.11'" }, + { name = "sphinx-design", version = "0.7.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.11'" }, ] [package.metadata] @@ -566,6 +615,7 @@ provides-extras = ["blif", "svg"] dev = [ { name = "furo", specifier = ">=2025.9.25" }, { name = "graphviz", specifier = ">=0.21" }, + { name = "pydata-sphinx-theme", specifier = ">=0.15.4" }, { name = "pyparsing", specifier = ">=3.2.5" }, { name = "pytest", specifier = ">=8.4.2" }, { name = "pytest-cov", specifier = ">=7.0.0" }, @@ -575,6 +625,7 @@ dev = [ { name = "sphinx", specifier = ">=7.4.7" }, { name = "sphinx-autodoc-typehints", specifier = ">=2.3.0" }, { name = "sphinx-copybutton", specifier = ">=0.5.2" }, + { name = "sphinx-design", specifier = ">=0.6.1" }, ] [[package]] @@ -879,6 +930,38 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/9e/48/1ea60e74949eecb12cdd6ac43987f9fd331156388dcc2319b45e2ebb81bf/sphinx_copybutton-0.5.2-py3-none-any.whl", hash = "sha256:fb543fd386d917746c9a2c50360c7905b605726b9355cd26e9974857afeae06e", size = 13343, upload-time = "2023-04-14T08:10:20.844Z" }, ] +[[package]] +name = "sphinx-design" +version = "0.6.1" +source = { registry = "https://pypi.org/simple" } +resolution-markers = [ + "python_full_version < '3.11'", +] +dependencies = [ + { name = "sphinx", version = "8.1.3", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.11'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/2b/69/b34e0cb5336f09c6866d53b4a19d76c227cdec1bbc7ac4de63ca7d58c9c7/sphinx_design-0.6.1.tar.gz", hash = "sha256:b44eea3719386d04d765c1a8257caca2b3e6f8421d7b3a5e742c0fd45f84e632", size = 2193689, upload-time = "2024-08-02T13:48:44.277Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/c6/43/65c0acbd8cc6f50195a3a1fc195c404988b15c67090e73c7a41a9f57d6bd/sphinx_design-0.6.1-py3-none-any.whl", hash = "sha256:b11f37db1a802a183d61b159d9a202314d4d2fe29c163437001324fe2f19549c", size = 2215338, upload-time = "2024-08-02T13:48:42.106Z" }, +] + +[[package]] +name = "sphinx-design" +version = "0.7.0" +source = { registry = "https://pypi.org/simple" } +resolution-markers = [ + "python_full_version >= '3.12'", + "python_full_version == '3.11.*'", +] +dependencies = [ + { name = "sphinx", version = "9.0.4", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version == '3.11.*'" }, + { name = "sphinx", version = "9.1.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.12'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/13/7b/804f311da4663a4aecc6cf7abd83443f3d4ded970826d0c958edc77d4527/sphinx_design-0.7.0.tar.gz", hash = "sha256:d2a3f5b19c24b916adb52f97c5f00efab4009ca337812001109084a740ec9b7a", size = 2203582, upload-time = "2026-01-19T13:12:53.297Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/30/cf/45dd359f6ca0c3762ce0490f681da242f0530c49c81050c035c016bfdd3a/sphinx_design-0.7.0-py3-none-any.whl", hash = "sha256:f82bf179951d58f55dca78ab3706aeafa496b741a91b1911d371441127d64282", size = 2220350, upload-time = "2026-01-19T13:12:51.077Z" }, +] + [[package]] name = "sphinxcontrib-applehelp" version = "2.0.0" diff --git a/www/README.md b/www/README.md new file mode 100644 index 00000000..39eef71c --- /dev/null +++ b/www/README.md @@ -0,0 +1,40 @@ +# PyRTL's GitHub Pages Webpage + +PyRTL's GitHub Pages webpage is at https://ucsbarchlab.github.io/PyRTL/ . + +The sources for this webpage are in this `www` directory. The page is built +with [Sphinx](https://www.sphinx-doc.org/en/master/), and written in +[reStructuredText](https://www.sphinx-doc.org/en/master/usage/restructuredtext/index.html). +The main Sphinx configuration file is +[`www/conf.py`](https://github.com/UCSBarchlab/PyRTL/blob/development/www/conf.py), +and source for the main page is +[`www/index.rst`](https://github.com/UCSBarchlab/PyRTL/blob/development/www/index.rst) + +Follow the instructions on this page to build a local copy of PyRTL's webpage. +This is useful for verifying that PyRTL's webpage still renders correctly after +making a local change. + +There is additional PyRTL documentation in [Read the +Docs](https://pyrtl.readthedocs.io/), see +[`docs/README.md`](https://github.com/UCSBarchlab/PyRTL/blob/development/docs/README.md). + +## Running Sphinx + +Run Sphinx with the provided +[`justfile`](https://github.com/UCSBarchlab/PyRTL/blob/development/justfile), +from the repository's root directory: + +```shell +# Run Sphinx to build PyRTL's webpage. +$ uv run just www +``` + +This builds a local copy of PyRTL's webpage in `www/_build/html`. +`www/_build/html/index.html` is the home page. + +## GitHub Actions Workflow + +When a commit is pushed that changes `www/`, the +[`pages-deploy`](https://github.com/UCSBarchlab/PyRTL/blob/development/.github/workflows/pages-deploy.yml) +workflow automatically runs Sphinx to regenerate the webpage and deploy it to +GitHub Pages. diff --git a/www/_static/custom.css b/www/_static/custom.css new file mode 100644 index 00000000..f584543d --- /dev/null +++ b/www/_static/custom.css @@ -0,0 +1,77 @@ +body { + line-height: 1.5; +} + +div.body h1 { + font-size: 120%; +} + +/* Spacing adjustments. */ +pre { + padding: 12px; +} +div.bodywrapper { + margin: 0px; +} +div.body { + max-width: 100%; +} + +div.body h1, +div.body h2, +div.body h3, +div.body h4, +div.body h5, +div.body h6 { + color: #2980B9; +} + +/* Code blocks. */ +.highlight { + border: 1px solid #ccc; + background-color: #f1f1f1; + font-size: 1rem; +} + +/* Syntax highlighting. */ +.highlight .n, +.highlight .p { + color: #567482; +} +.highlight .nf { + color: #795da3; +} +.highlight .k, +.highlight .kn { + color: #a71d5d; + font-weight: inherit; +} + +/* Documentation links. */ +a code { + color: inherit; +} + +/* Tabs. */ +.sd-tab-set { + margin: 0px; +} + +/* Buttons. */ +:root { + --sd-color-secondary: #6a7e8c; + --sd-color-secondary-highlight: #7a8e9c; + --sd-color-tabs-underline: rgba(222, 222, 222, 0); +} + +.title-card { + background-image: linear-gradient(180deg, #2980B9, #3a4e5c, #4a5e6c); +} + +/* Hide the sidebar. It may appear as a footer on small screens. */ +div.sphinxsidebar { + height: 0px; + width: 0px; + margin: 0px; + padding: 0px; +} diff --git a/www/conf.py b/www/conf.py new file mode 100644 index 00000000..330b3661 --- /dev/null +++ b/www/conf.py @@ -0,0 +1,51 @@ +# Configuration file for the Sphinx documentation builder. +# +# This file only contains a selection of the most common options. For a full +# list see the documentation: +# https://www.sphinx-doc.org/en/master/usage/configuration.html + +# -- Project information ----------------------------------------------------- + +project = "PyRTL" + +# -- General configuration --------------------------------------------------- + +master_doc = "index" + +# Add any Sphinx extension module names here, as strings. They can be +# extensions coming with Sphinx (named 'sphinx.ext.*') or your custom +# ones. +extensions = ["sphinx.ext.intersphinx", "sphinx_copybutton", "sphinx_design"] + +# Add any paths that contain templates here, relative to this directory. +templates_path = ["_templates"] + +# List of patterns, relative to source directory, that match files and +# directories to ignore when looking for source files. +# This pattern also affects html_static_path and html_extra_path. +exclude_patterns = ["_build", "Thumbs.db", ".DS_Store"] + +# Enable links to Python standard library classes (str, list, dict, etc). +intersphinx_mapping = { + "python": ("https://docs.python.org/3", None), + "pyrtl": ("https://pyrtl.readthedocs.io/en/latest/", None), +} + +# -- Options for HTML output ------------------------------------------------- + +# The theme to use for HTML and HTML Help pages. See the documentation for +# a list of builtin themes. +html_baseurl = "https://ucsbarchlab.github.io/PyRTL" +html_theme = "alabaster" +html_theme_options = { + "font_family": '"Open Sans", "Helvetica Neue", Helvetica, Arial, sans-serif', + "code_font_family": 'Consolas, "Liberation Mono", Menlo, Courier, monospace', + "font_size": "1.1rem", + "body_text": "#606c71", + "link": "#1e6bb8", +} +html_title = "Home" +html_show_sphinx = False +html_show_copyright = False +html_show_sourcelink = False +html_static_path = ["_static"] diff --git a/www/examples/example-adder.py b/www/examples/example-adder.py new file mode 100644 index 00000000..4b17638a --- /dev/null +++ b/www/examples/example-adder.py @@ -0,0 +1,37 @@ +import pyrtl + + +def fa( + x: pyrtl.WireVector, y: pyrtl.WireVector, cin: pyrtl.WireVector +) -> tuple[pyrtl.WireVector, pyrtl.WireVector]: + """Full adder.""" + sum = x ^ y ^ cin + cout = x & y | y & cin | x & cin + return sum, cout + + +def adder( + a: pyrtl.WireVector, b: pyrtl.WireVector, cin: pyrtl.WireVector +) -> tuple[pyrtl.WireVector, pyrtl.WireVector]: + """n-bit ripple carry adder with carry in and carry out.""" + a, b = pyrtl.match_bitwidth(a, b) + + sum = [None] * a.bitwidth + for i in range(a.bitwidth): + sum[i], cout = fa(a[i], b[i], cin) + cin = cout + + full_sum = pyrtl.concat_list(sum) + return full_sum, cout + + +a = pyrtl.Input(name="a", bitwidth=4) +b = pyrtl.Input(name="b", bitwidth=4) +sum = pyrtl.Output(name="sum", bitwidth=8) + +sum_, cout_ = adder(a, b, pyrtl.Const(0)) +sum <<= sum_ + +sim = pyrtl.Simulation() +sim.step_multiple({"a": [1, 2, 3], "b": [2, 3, 4]}) +sim.tracer.render_trace() diff --git a/www/examples/example-fir.py b/www/examples/example-fir.py new file mode 100644 index 00000000..81d72e02 --- /dev/null +++ b/www/examples/example-fir.py @@ -0,0 +1,22 @@ +import pyrtl + + +def fir(x: pyrtl.WireVector, bs: list[int]): + rwidth = x.bitwidth # Bitwidth of the registers. + ntaps = len(bs) # Number of coefficients. + + zs = [x] + [pyrtl.Register(rwidth) for _ in range(ntaps - 1)] + for i in range(1, ntaps): + zs[i].next <<= zs[i - 1] + + # Produce the final sum of products. + return sum(z * b for z, b in zip(zs, bs, strict=True)) + + +x = pyrtl.Input(name="x", bitwidth=8) +y = pyrtl.Output(name="y", bitwidth=8) +y <<= fir(x, bs=[0, 1]) + +sim = pyrtl.Simulation() +sim.step_multiple({"x": [0, 9, 18, 8, 17, 7, 16, 6, 15, 5]}) +sim.tracer.render_trace() diff --git a/www/examples/example-gcd.py b/www/examples/example-gcd.py new file mode 100644 index 00000000..5a78cad9 --- /dev/null +++ b/www/examples/example-gcd.py @@ -0,0 +1,39 @@ +import pyrtl + + +def gcd( + a: pyrtl.WireVector, b: pyrtl.WireVector, begin: pyrtl.WireVector +) -> tuple[pyrtl.WireVector, pyrtl.WireVector]: + x = pyrtl.Register(bitwidth=a.bitwidth) + y = pyrtl.Register(bitwidth=b.bitwidth) + done = pyrtl.WireVector(bitwidth=1) + + with pyrtl.conditional_assignment: + with begin: + x.next |= a + y.next |= b + with x > y: + x.next |= x - y + with y > x: + y.next |= y - x + with pyrtl.otherwise: + done |= True + return x, done + + +a = pyrtl.Input(name="a", bitwidth=8) +b = pyrtl.Input(name="b", bitwidth=8) +begin = pyrtl.Input(name="begin", bitwidth=1) + +x = pyrtl.Output(name="x", bitwidth=8) +done = pyrtl.Output(name="done", bitwidth=1) + +x_, done_ = gcd(a, b, begin) +x <<= x_ +done <<= done_ + +sim = pyrtl.Simulation() +sim.step({"a": 12, "b": 9, "begin": True}) +while not sim.inspect("done"): + sim.step({"a": 0, "b": 0, "begin": False}) +sim.tracer.render_trace() diff --git a/www/examples/example-maxn.py b/www/examples/example-maxn.py new file mode 100644 index 00000000..cec198ac --- /dev/null +++ b/www/examples/example-maxn.py @@ -0,0 +1,22 @@ +from functools import reduce + +import pyrtl + + +def max_n(*inputs): + def max_2(x, y): + return pyrtl.select(x > y, x, y) + + return reduce(max_2, inputs) + + +a = pyrtl.Input(name="a", bitwidth=8) +b = pyrtl.Input(name="b", bitwidth=8) +c = pyrtl.Input(name="c", bitwidth=8) +max = pyrtl.Output(name="max", bitwidth=8) + +max <<= max_n(a, b, c) + +sim = pyrtl.Simulation() +sim.step_multiple({"a": [1, 5, 9], "b": [2, 6, 7], "c": [3, 4, 8]}) +sim.tracer.render_trace() diff --git a/www/examples/example-mul.py b/www/examples/example-mul.py new file mode 100644 index 00000000..c65b8695 --- /dev/null +++ b/www/examples/example-mul.py @@ -0,0 +1,23 @@ +import pyrtl + + +def mul(x: pyrtl.WireVector, y: pyrtl.WireVector) -> pyrtl.WireVector: + assert x.bitwidth == 4 + assert y.bitwidth == 4 + + def romdata(addr: int) -> int: + return (addr >> 4) * (addr & 0xF) + + tbl = pyrtl.RomBlock(bitwidth=8, addrwidth=8, romdata=romdata) + return tbl[pyrtl.concat(x, y)] + + +a = pyrtl.Input(name="a", bitwidth=4) +b = pyrtl.Input(name="b", bitwidth=4) +product = pyrtl.Output(name="product", bitwidth=8) + +product <<= mul(a, b) + +sim = pyrtl.Simulation() +sim.step_multiple({"a": [1, 2, 3], "b": [2, 3, 4]}) +sim.tracer.render_trace() diff --git a/www/examples/example-ripple-carry.py b/www/examples/example-ripple-carry.py new file mode 100644 index 00000000..a81443f5 --- /dev/null +++ b/www/examples/example-ripple-carry.py @@ -0,0 +1,34 @@ +import pyrtl + + +def one_bit_add( + a: pyrtl.WireVector, b: pyrtl.WireVector, carry_in: pyrtl.WireVector | int +) -> tuple[pyrtl.WireVector, pyrtl.WireVector]: + assert len(a) == len(b) == 1 # `len` returns the bitwidth. + sum = a ^ b ^ carry_in # WireVector operators build the hardware. + carry_out = a & b | a & carry_in | b & carry_in + return sum, carry_out + + +def ripple_add( + a: pyrtl.WireVector, b: pyrtl.WireVector, carry_in: pyrtl.WireVector | int = 0 +) -> tuple[pyrtl.WireVector, pyrtl.WireVector]: + a, b = pyrtl.match_bitwidth(a, b) + if len(a) == 1: + sumbits, carry_out = one_bit_add(a, b, carry_in) + else: + lsbit, ripplecarry = one_bit_add(a[0], b[0], carry_in) + msbits, carry_out = ripple_add(a[1:], b[1:], ripplecarry) + sumbits = pyrtl.concat(msbits, lsbit) + return sumbits, carry_out + + +# Use the adder in a 3-bit counter. +counter = pyrtl.Register(bitwidth=3, name="counter") +sum, _carry_out = ripple_add(counter, pyrtl.Const(1)) +counter.next <<= sum + +# Simulate the instantiated design for 12 cycles. +sim = pyrtl.Simulation() +sim.step_multiple(nsteps=12) +sim.tracer.render_trace() diff --git a/www/index.rst b/www/index.rst new file mode 100644 index 00000000..651fd648 --- /dev/null +++ b/www/index.rst @@ -0,0 +1,244 @@ +.. meta:: + :google-site-verification: ls9UjPExLzNwr4BVvQ_THSjcGqyNM-KO9Rs9njbX318 + +.. card:: + :text-align: center + :class-card: title-card + + .. image:: ../docs/brand/pyrtl_logo.png + + .. grid:: 1 2 2 4 + :gutter: 2 + + .. grid-item:: + + .. button-link:: http://pyrtl.readthedocs.org/ + :color: secondary + :expand: + :shadow: + + Documentation + + .. grid-item:: + + .. button-link:: https://github.com/UCSBarchlab/pyrtl + :color: secondary + :expand: + :shadow: + + GitHub + + .. grid-item:: + + .. button-link:: https://github.com/UCSBarchlab/PyRTL/tree/development/examples + :color: secondary + :expand: + :shadow: + + Examples + + .. grid-item:: + + .. button-link:: https://mybinder.org/v2/gh/UCSBarchlab/PyRTL/development?filepath=%2Fipynb-examples%2F + :color: secondary + :expand: + :shadow: + + Notebooks + +PyRTL +===== + +PyRTL is a Python library for register-transfer-level hardware design and +simulation. Get started with: + +.. code-block:: shell + + $ pip install pyrtl + +Features +======== + +PyRTL provides a collection of classes for Pythonic `register-transfer level +`_ design, simulation, +tracing, and testing suitable for teaching and research. Simplicity, usability, +clarity, and extensibility are overarching goals, rather than performance or +optimization. Features include: + +* Elaboration-through-execution, meaning all of Python can be used, including + introspection. +* Design, instantiate, and simulate all in one file, and without leaving Python. +* Export to, or import from, common HDLs (BLIF-in, Verilog-out currently + supported). +* Examine execution with waveforms in a terminal or export to `.vcd + `_ as projects scale. +* Elaboration, synthesis, and basic optimizations all included. +* Small and well-defined internal core structure means writing new transforms + is easier. +* Batteries included means many useful components are already available. + +.. card:: :octicon:`rocket` New in `PyRTL 1.0.0 `_ + + The new :mod:`pyrtl.rtllib.float` module generates floating point hardware! + +Simple Examples +=============== + +Here are some simple examples of PyRTL in action. These examples implement the +same functionality as those highlighted in the wonderful related work `Chisel +`_, which in turn allows us to see the stylistic +differences between the approaches. + +.. grid:: 1 1 1 1 + :outline: + + .. grid-item:: + :columns: auto + + .. tab-set:: + .. tab-item:: GCD + + A greatest common denominator calculator: ``gcd`` generates a sequential + circuit that saves inputs ``a`` and ``b`` when ``begin`` goes high, and + then, while ``begin`` is low, calculates the GCD with `Euclid's algorithm + `_. The function + returns two :class:`WireVectors `, one which holds the + GCD when the computation is ``done``, and the other which is a boolean + ``done`` signal. + + The code below provides everything needed to instantiate, simulate, and + visualize the resulting design. + + .. literalinclude:: examples/example-gcd.py + + .. image:: ../docs/screenshots/gcd.png + :width: 16em + + .. tab-item:: FIR + + A finite impulse response filter: ``fir`` generates a sequential circuit + that accepts inputs ``x`` and a list of coefficients ``bs``. From the + `Wikipedia FIR description + `_, the list + ``zs`` is the registers required to implement the delay. ``fir`` returns + an output ``y`` which is the resulting sum of products and is valid every + cycle (since the design is naturally fully pipelined). + + .. literalinclude:: examples/example-fir.py + + .. image:: ../docs/screenshots/fir.png + :width: 30em + + .. tab-item:: MaxN + + ``max_n`` generates hardware that identifies the largest of N input + values. This example makes use of Python's `notation for handling + multiple inputs + `_ + by packing them into a :class:`list`. It also demonstrates that the full + power of Python is available to you in PyRTL, including functional tools + like :func:`~functools.reduce`, which is used to chain together multiple + ``max_2`` elements into a bigger ``max_n``. + + .. literalinclude:: examples/example-maxn.py + + .. image:: ../docs/screenshots/maxn.png + :width: 15em + + .. tab-item:: Mul + + ``mul`` generates a small 4 x 4 multiplier with a simple `ROM + `_ lookup. The first two + lines simply check that the inputs are each 4-bits wide. ``romdata`` is a + Python function that calculates the values we want stored in the ROM, as + a function of the ROM address. :class:`~pyrtl.RomBlock` automatically + initializes the ROM with values computed by ``romdata``. The generated + hardware simply :func:`concats ` the two 4-bit inputs into + an 8-bit ROM address and returns the value stored in the ROM at that + address. + + .. literalinclude:: examples/example-mul.py + + .. image:: ../docs/screenshots/mul.png + :width: 15em + + .. tab-item:: Adder + + The classic ripple-carry adder: ``adder`` generates a ripple carry adder + of arbitrary length including both carry in and carry out. The `full + adder `_ + (``fa``) takes 1-bit inputs and produces 1-bit outputs. We iteratively + create full adders and link the carry in of each new full adder to the + carry out of the last full adder. ``adder``'s ``sum`` is a Python + :class:`list` that keeps track of the wires carrying the sum bits. The + final ``full_sum`` is produced by concatenating the wires in ``sum`` with + :func:`~pyrtl.concat_list`. + + .. literalinclude:: examples/example-adder.py + + .. image:: ../docs/screenshots/adder.png + :width: 15em + +The 10,000 Foot Overview +======================== + +At a high level, PyRTL builds hardware that you `explicitly define`. If you are +looking for a tool to take your random Python code and turn it into hardware, +you will have to look elsewhere: this is `not` `HLS +`_. Instead, PyRTL helps +you concisely and precisely describe a digital hardware structure, which you +already have worked out in detail, in Python. + +PyRTL restricts you to a set of reasonable digital designs practices: the clock +and resets are implicit, block memories are synchronous by default, there are +no "undriven" states, and un-registered feedback loops are not allowed. Instead +of worrying about these "analog-ish" tricks that are horrible ideas in modern +processes anyways, PyRTL lets you treat hardware design like a software +problem: build recursive hardware, write introspective containers, and have fun +building digital designs again! + +To the user it provides a set of Python classes that allow them to Pythonically +express their hardware designs. For example, with :class:`~pyrtl.WireVector` +you get a structure that acts very much like a Python list of 1-bit wires, so +``mywire[:-1]`` selects everything except the most-significant-bit. Of course +you can :meth:`add `, :meth:`subtract +`, and :meth:`multiply ` +these :class:`WireVectors `, or :func:`~pyrtl.concat` multiple +bit-vectors end-to-end as well. + +You can even put :class:`WireVectors ` in Python collections +and process them in bulk. For example, if ``x`` is a :class:`list` of +:class:`WireVectors `, and you want to multiply each of them +by 2 and sum them into a :class:`~pyrtl.WireVector` ``y``:: + + y = sum([elem * 2 for elem in x]) + +Hardware comprehensions are surprisingly useful. We'll cover an example in more +detail below, but if you just want to play around with PyRTL `try Jupyter +Notebooks on any of our examples on MyBinder +`_. + +Hello N-bit Ripple-Carry Adder! +=============================== + +While adders are a builtin primitive for PyRTL, most people doing RTL are +familiar with the idea of a `Ripple-Carry Adder +`_ and so it is useful to +see how you might express one in PyRTL. Rather than the typical `Verilog +introduction to fixed 4-bit adders +`_, let's go ahead and build an +`arbitrary` bitwidth adder. + +.. literalinclude:: examples/example-ripple-carry.py + +The code above includes ``ripple_add``, an adder generator with Python-style +slices on wires, ``counter``, an instance of :class:`~pyrtl.Register`, and all +the code needed to simulate the design, generate a waveform, and render it to +the terminal. `Example 2 +`_'s +comments describe this code in much more detail. Running this code shows a +counter running from 0 to 7 and repeating: + +.. image:: ../docs/screenshots/ripple-carry.png + :width: 34em + From 8eb0a9576cb30892d2833fca76d0692f9364e4e2 Mon Sep 17 00:00:00 2001 From: Jeremy Lau <30300826+fdxmw@users.noreply.github.com> Date: Thu, 30 Jul 2026 16:32:36 -0700 Subject: [PATCH 2/2] Remove no-longer-used `pydata-sphinx-theme` dependency. --- pyproject.toml | 1 - uv.lock | 48 ------------------------------------------------ 2 files changed, 49 deletions(-) diff --git a/pyproject.toml b/pyproject.toml index 829f78d0..8127d23c 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -118,7 +118,6 @@ ignore = [ dev = [ "furo>=2025.9.25", "graphviz>=0.21", - "pydata-sphinx-theme>=0.15.4", "pyparsing>=3.2.5", "pytest>=8.4.2", "pytest-cov>=7.0.0", diff --git a/uv.lock b/uv.lock index 3253c5f0..cac79b06 100644 --- a/uv.lock +++ b/uv.lock @@ -506,51 +506,6 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/54/20/4d324d65cc6d9205fabedc306948156824eb9f0ee1633355a8f7ec5c66bf/pluggy-1.6.0-py3-none-any.whl", hash = "sha256:e920276dd6813095e9377c0bc5566d94c932c33b27a3e3945d8389c374dd4746", size = 20538, upload-time = "2025-05-15T12:30:06.134Z" }, ] -[[package]] -name = "pydata-sphinx-theme" -version = "0.15.4" -source = { registry = "https://pypi.org/simple" } -resolution-markers = [ - "python_full_version < '3.11'", -] -dependencies = [ - { name = "accessible-pygments", marker = "python_full_version < '3.11'" }, - { name = "babel", marker = "python_full_version < '3.11'" }, - { name = "beautifulsoup4", marker = "python_full_version < '3.11'" }, - { name = "docutils", version = "0.21.2", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.11'" }, - { name = "packaging", marker = "python_full_version < '3.11'" }, - { name = "pygments", marker = "python_full_version < '3.11'" }, - { name = "sphinx", version = "8.1.3", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.11'" }, - { name = "typing-extensions", marker = "python_full_version < '3.11'" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/67/ea/3ab478cccacc2e8ef69892c42c44ae547bae089f356c4b47caf61730958d/pydata_sphinx_theme-0.15.4.tar.gz", hash = "sha256:7762ec0ac59df3acecf49fd2f889e1b4565dbce8b88b2e29ee06fdd90645a06d", size = 2400673, upload-time = "2024-06-25T19:28:45.041Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/e7/d3/c622950d87a2ffd1654208733b5bd1c5645930014abed8f4c0d74863988b/pydata_sphinx_theme-0.15.4-py3-none-any.whl", hash = "sha256:2136ad0e9500d0949f96167e63f3e298620040aea8f9c74621959eda5d4cf8e6", size = 4640157, upload-time = "2024-06-25T19:28:42.383Z" }, -] - -[[package]] -name = "pydata-sphinx-theme" -version = "0.16.1" -source = { registry = "https://pypi.org/simple" } -resolution-markers = [ - "python_full_version >= '3.12'", - "python_full_version == '3.11.*'", -] -dependencies = [ - { name = "accessible-pygments", marker = "python_full_version >= '3.11'" }, - { name = "babel", marker = "python_full_version >= '3.11'" }, - { name = "beautifulsoup4", marker = "python_full_version >= '3.11'" }, - { name = "docutils", version = "0.22.4", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.11'" }, - { name = "pygments", marker = "python_full_version >= '3.11'" }, - { name = "sphinx", version = "9.0.4", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version == '3.11.*'" }, - { name = "sphinx", version = "9.1.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.12'" }, - { name = "typing-extensions", marker = "python_full_version >= '3.11'" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/00/20/bb50f9de3a6de69e6abd6b087b52fa2418a0418b19597601605f855ad044/pydata_sphinx_theme-0.16.1.tar.gz", hash = "sha256:a08b7f0b7f70387219dc659bff0893a7554d5eb39b59d3b8ef37b8401b7642d7", size = 2412693, upload-time = "2024-12-17T10:53:39.537Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/e2/0d/8ba33fa83a7dcde13eb3c1c2a0c1cc29950a048bfed6d9b0d8b6bd710b4c/pydata_sphinx_theme-0.16.1-py3-none-any.whl", hash = "sha256:225331e8ac4b32682c18fcac5a57a6f717c4e632cea5dd0e247b55155faeccde", size = 6723264, upload-time = "2024-12-17T10:53:35.645Z" }, -] - [[package]] name = "pygments" version = "2.20.0" @@ -585,8 +540,6 @@ svg = [ dev = [ { name = "furo" }, { name = "graphviz" }, - { name = "pydata-sphinx-theme", version = "0.15.4", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.11'" }, - { name = "pydata-sphinx-theme", version = "0.16.1", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.11'" }, { name = "pyparsing" }, { name = "pytest" }, { name = "pytest-cov" }, @@ -615,7 +568,6 @@ provides-extras = ["blif", "svg"] dev = [ { name = "furo", specifier = ">=2025.9.25" }, { name = "graphviz", specifier = ">=0.21" }, - { name = "pydata-sphinx-theme", specifier = ">=0.15.4" }, { name = "pyparsing", specifier = ">=3.2.5" }, { name = "pytest", specifier = ">=8.4.2" }, { name = "pytest-cov", specifier = ">=7.0.0" },