From dd7f63733cc4aafb02171ed1ba8213f03bd11387 Mon Sep 17 00:00:00 2001 From: "github-merge-queue[bot]" Date: Thu, 5 Oct 2023 01:59:36 +0000 Subject: [PATCH] =?UTF-8?q?Deploying=20to=20main=20from=20@=20amaranth-lan?= =?UTF-8?q?g/amaranth@cce4e4462e41b630bfb1c4f77d431ec39420b650=20?= =?UTF-8?q?=F0=9F=9A=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/amaranth/latest/.buildinfo | 2 +- .../latest/.doctrees/environment.pickle | Bin 2375117 -> 2386161 bytes .../latest/_static/documentation_options.js | 2 +- docs/amaranth/latest/changes.html | 10 +-- docs/amaranth/latest/contrib.html | 6 +- docs/amaranth/latest/cover.html | 4 +- docs/amaranth/latest/genindex.html | 4 +- docs/amaranth/latest/index.html | 4 +- docs/amaranth/latest/install.html | 6 +- docs/amaranth/latest/intro.html | 4 +- docs/amaranth/latest/lang.html | 30 ++++---- docs/amaranth/latest/objects.inv | Bin 2993 -> 2993 bytes docs/amaranth/latest/platform.html | 4 +- docs/amaranth/latest/platform/gowin.html | 4 +- docs/amaranth/latest/platform/intel.html | 4 +- .../latest/platform/lattice-ecp5.html | 4 +- .../latest/platform/lattice-ice40.html | 4 +- .../latest/platform/lattice-machxo-2-3l.html | 4 +- docs/amaranth/latest/platform/quicklogic.html | 4 +- docs/amaranth/latest/platform/xilinx.html | 4 +- docs/amaranth/latest/py-modindex.html | 4 +- docs/amaranth/latest/search.html | 4 +- docs/amaranth/latest/start.html | 4 +- docs/amaranth/latest/stdlib.html | 4 +- docs/amaranth/latest/stdlib/cdc.html | 34 ++++----- docs/amaranth/latest/stdlib/coding.html | 20 +++--- docs/amaranth/latest/stdlib/crc.html | 20 +++--- docs/amaranth/latest/stdlib/crc/catalog.html | 4 +- docs/amaranth/latest/stdlib/data.html | 50 ++++++------- docs/amaranth/latest/stdlib/enum.html | 20 +++--- docs/amaranth/latest/stdlib/fifo.html | 66 +++++++++--------- docs/amaranth/latest/tutorial.html | 4 +- 32 files changed, 169 insertions(+), 169 deletions(-) diff --git a/docs/amaranth/latest/.buildinfo b/docs/amaranth/latest/.buildinfo index 0f411cac..6101ed56 100644 --- a/docs/amaranth/latest/.buildinfo +++ b/docs/amaranth/latest/.buildinfo @@ -1,4 +1,4 @@ # Sphinx build info version 1 # This file hashes the configuration used when building these files. When it is not found, a full rebuild will be done. -config: 1359bc177102d47bc0afe08f67c27f04 +config: e7d589590ce9365be8c367ebfb42d51e tags: 645f666f9bcd5a90fca523b33c5a78b7 diff --git a/docs/amaranth/latest/.doctrees/environment.pickle b/docs/amaranth/latest/.doctrees/environment.pickle index 1fd535da22eccc8c1e0722e880d8b0a2edbce976..0d6df7659b4f3eff9547f87b471db4337ad0f344 100644 GIT binary patch delta 87723 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 z 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 diff --git a/docs/amaranth/latest/_static/documentation_options.js b/docs/amaranth/latest/_static/documentation_options.js index 8a8acedd..3b06b4d4 100644 --- a/docs/amaranth/latest/_static/documentation_options.js +++ b/docs/amaranth/latest/_static/documentation_options.js @@ -1,6 +1,6 @@ var DOCUMENTATION_OPTIONS = { URL_ROOT: document.getElementById("documentation_options").getAttribute('data-url_root'), - VERSION: '0.4.dev211', + VERSION: '0.4.dev212', LANGUAGE: 'en', COLLAPSE_INDEX: false, BUILDER: 'html', diff --git a/docs/amaranth/latest/changes.html b/docs/amaranth/latest/changes.html index f33086de..42716e19 100644 --- a/docs/amaranth/latest/changes.html +++ b/docs/amaranth/latest/changes.html @@ -4,7 +4,7 @@ - Changelog — Amaranth HDL toolchain 0.4.dev211 documentation + Changelog — Amaranth HDL toolchain 0.4.dev212 documentation @@ -39,7 +39,7 @@ Amaranth HDL toolchain

- 0.4.dev211+gc941667.editable + 0.4.dev212+gcce4e44.editable
@@ -165,7 +165,7 @@

Language changesMemory supports transparent read ports with read enable.

  • Changed: creating a Signal with a shape that is a ShapeCastable implementing ShapeCastable.__call__() wraps the returned object using that method. (RFC 15)

  • Changed: Value.cast() casts ValueCastable objects recursively.

  • -
  • Changed: Value.cast() treats instances of classes derived from both enum.Enum and int (including enum.IntEnum) as enumerations rather than integers.

  • +
  • Changed: Value.cast() treats instances of classes derived from both enum.Enum and int (including enum.IntEnum) as enumerations rather than integers.

  • Changed: Value.matches() with an empty list of patterns returns Const(1) rather than Const(0), to match the behavior of with m.Case():.

  • Changed: Cat warns if an enumeration without an explicitly specified shape is used. (RFC 3)

  • Deprecated: Const.normalize(); use Const(value, shape).value instead of Const.normalize(value, shape). (RFC 5)

  • @@ -195,7 +195,7 @@

    Toolchain changessim.Simulator.step().

  • Removed: (deprecated in 0.3) back.pysim.

  • Removed: (deprecated in 0.3) support for invoking back.rtlil.convert() and back.verilog.convert() without an explicit ports= argument.

  • -
  • Removed: (deprecated in 0.3) test.

  • +
  • Removed: (deprecated in 0.3) test.

  • @@ -235,7 +235,7 @@

    Migrating from version 0.2

    Language changes

      -
    • Added: Value can be used with abs().

    • +
    • Added: Value can be used with abs().

    • Added: Value.rotate_left() and Value.rotate_right().

    • Added: Value.shift_left() and Value.shift_right().

    • Added: ValueCastable.

    • diff --git a/docs/amaranth/latest/contrib.html b/docs/amaranth/latest/contrib.html index 1cbd9b71..ca9d2291 100644 --- a/docs/amaranth/latest/contrib.html +++ b/docs/amaranth/latest/contrib.html @@ -4,7 +4,7 @@ - Contributing — Amaranth HDL toolchain 0.4.dev211 documentation + Contributing — Amaranth HDL toolchain 0.4.dev212 documentation @@ -38,7 +38,7 @@ Amaranth HDL toolchain
      - 0.4.dev211+gc941667.editable + 0.4.dev212+gcce4e44.editable
      @@ -135,7 +135,7 @@

      Preparing the environment
      $ pdm install --dev
       

      -

      This command creates a virtual environment located at ./.venv/ and installs the runtime dependencies of Amaranth as well as the necessary development tools in it.

      +

      This command creates a virtual environment located at ./.venv/ and installs the runtime dependencies of Amaranth as well as the necessary development tools in it.

      Amaranth itself is installed in the editable mode, meaning that the changes to its source files are immediately reflected in running the tests and documentation. However, other changes (addition or removal of source files, or changes to dependencies) will not be picked up, and it is a good habit to run pdm install each time after updating the source tree.

    diff --git a/docs/amaranth/latest/cover.html b/docs/amaranth/latest/cover.html index e61883aa..f29a4e74 100644 --- a/docs/amaranth/latest/cover.html +++ b/docs/amaranth/latest/cover.html @@ -4,7 +4,7 @@ - Amaranth HDL documentation — Amaranth HDL toolchain 0.4.dev211 documentation + Amaranth HDL documentation — Amaranth HDL toolchain 0.4.dev212 documentation @@ -38,7 +38,7 @@ Amaranth HDL toolchain
    - 0.4.dev211+gc941667.editable + 0.4.dev212+gcce4e44.editable
    diff --git a/docs/amaranth/latest/genindex.html b/docs/amaranth/latest/genindex.html index 37d6444e..99f468c2 100644 --- a/docs/amaranth/latest/genindex.html +++ b/docs/amaranth/latest/genindex.html @@ -3,7 +3,7 @@ - Index — Amaranth HDL toolchain 0.4.dev211 documentation + Index — Amaranth HDL toolchain 0.4.dev212 documentation @@ -36,7 +36,7 @@ Amaranth HDL toolchain
    - 0.4.dev211+gc941667.editable + 0.4.dev212+gcce4e44.editable
    diff --git a/docs/amaranth/latest/index.html b/docs/amaranth/latest/index.html index 0f04dccc..3dd6264f 100644 --- a/docs/amaranth/latest/index.html +++ b/docs/amaranth/latest/index.html @@ -4,7 +4,7 @@ - Language & toolchain — Amaranth HDL toolchain 0.4.dev211 documentation + Language & toolchain — Amaranth HDL toolchain 0.4.dev212 documentation @@ -39,7 +39,7 @@ Amaranth HDL toolchain
    - 0.4.dev211+gc941667.editable + 0.4.dev212+gcce4e44.editable
    diff --git a/docs/amaranth/latest/install.html b/docs/amaranth/latest/install.html index 12bee689..1eb07c11 100644 --- a/docs/amaranth/latest/install.html +++ b/docs/amaranth/latest/install.html @@ -4,7 +4,7 @@ - Installation — Amaranth HDL toolchain 0.4.dev211 documentation + Installation — Amaranth HDL toolchain 0.4.dev212 documentation @@ -39,7 +39,7 @@ Amaranth HDL toolchain
    - 0.4.dev211+gc941667.editable + 0.4.dev212+gcce4e44.editable
    @@ -115,7 +115,7 @@

    System requirements

    Windows

    -

    Install Python, either from Windows Store or using the full installer. If using the full installer, make sure to install a 64-bit version of Python.

    +

    Install Python, either from Windows Store or using the full installer. If using the full installer, make sure to install a 64-bit version of Python.

    Download GTKWave, either win32 or win64 binaries. GTKWave does not need to be installed; it can be unpacked to any convenient location and run from there.

    Before continuing, make sure you have the latest version of pip installed by running:

    > pip install --upgrade pip
    diff --git a/docs/amaranth/latest/intro.html b/docs/amaranth/latest/intro.html
    index b89df9e9..f45a94a2 100644
    --- a/docs/amaranth/latest/intro.html
    +++ b/docs/amaranth/latest/intro.html
    @@ -4,7 +4,7 @@
       
     
       
    -  Introduction — Amaranth HDL toolchain 0.4.dev211 documentation
    +  Introduction — Amaranth HDL toolchain 0.4.dev212 documentation
           
           
           
    @@ -39,7 +39,7 @@
                 Amaranth HDL toolchain
               
                   
    - 0.4.dev211+gc941667.editable + 0.4.dev212+gcce4e44.editable
    diff --git a/docs/amaranth/latest/lang.html b/docs/amaranth/latest/lang.html index 290629af..f0063901 100644 --- a/docs/amaranth/latest/lang.html +++ b/docs/amaranth/latest/lang.html @@ -4,7 +4,7 @@ - Language guide — Amaranth HDL toolchain 0.4.dev211 documentation + Language guide — Amaranth HDL toolchain 0.4.dev212 documentation @@ -39,7 +39,7 @@ Amaranth HDL toolchain
    - 0.4.dev211+gc941667.editable + 0.4.dev212+gcce4e44.editable
    @@ -153,7 +153,7 @@

    Language guidetutorial for a step-by-step introduction to the language.

    The prelude

    -

    Because Amaranth is a regular Python library, it needs to be imported before use. The root amaranth module, called the prelude, is carefully curated to export a small amount of the most essential names, useful in nearly every design. In source files dedicated to Amaranth code, it is a good practice to use a glob import for readability:

    +

    Because Amaranth is a regular Python library, it needs to be imported before use. The root amaranth module, called the prelude, is carefully curated to export a small amount of the most essential names, useful in nearly every design. In source files dedicated to Amaranth code, it is a good practice to use a glob import for readability:

    from amaranth import *
     
    @@ -236,7 +236,7 @@

    Shapes of values

    Shapes from ranges

    -

    Casting a shape from a range r produces a shape that:

    +

    Casting a shape from a range r produces a shape that:

    • has a width large enough to represent both min(r) and max(r), but not larger, and

    • @@ -277,7 +277,7 @@

      Shapes of values

      Shapes from enumerations

      -

      Casting a shape from an enum.Enum subclass requires all of the enumeration members to have constant-castable values. The shape has a width large enough to represent the value of every member, and is signed only if there is a member with a negative value.

      +

      Casting a shape from an enum.Enum subclass requires all of the enumeration members to have constant-castable values. The shape has a width large enough to represent the value of every member, and is signed only if there is a member with a negative value.

      Specifying a shape with an enumeration is convenient for finite state machines, multiplexers, complex control signals, and all other values whose width is derived from a few distinct choices they must be able to fit:

      class Direction(enum.Enum):
           TOP    = 0
      @@ -303,7 +303,7 @@ 

      Shapes of values

      Note

      -

      The enumeration does not have to subclass enum.IntEnum or have int as one of its base classes; it only needs to have integers as values of every member. Using enumerations based on enum.Enum rather than enum.IntEnum prevents unwanted implicit conversion of enum members to integers.

      +

      The enumeration does not have to subclass enum.IntEnum or have int as one of its base classes; it only needs to have integers as values of every member. Using enumerations based on enum.Enum rather than enum.IntEnum prevents unwanted implicit conversion of enum members to integers.

    @@ -320,7 +320,7 @@

    Values from integers

    Note

    -

    If a value subclasses enum.IntEnum or its class otherwise inherits from both int and Enum, it is treated as an enumeration.

    +

    If a value subclasses enum.IntEnum or its class otherwise inherits from both int and Enum, it is treated as an enumeration.

    @@ -332,7 +332,7 @@

    Values from enumeration members

    Note

    -

    If a value subclasses enum.IntEnum or its class otherwise inherits from both int and Enum, it is treated as an enumeration.

    +

    If a value subclasses enum.IntEnum or its class otherwise inherits from both int and Enum, it is treated as an enumeration.

    @@ -553,7 +553,7 @@

    Signal shapes

    Bitwise, shift, and rotate operators

    All bitwise and shift operations on integers provided by Python can be used on Amaranth values as well.

    Similar to arithmetic operations, if any operand of a bitwise expression is signed, the expression itself is signed as well. A shift expression is signed if the shifted value is signed. A rotate expression is always unsigned.

    -

    Rotate operations with variable rotate amounts cannot be efficiently synthesized for non-power-of-2 widths of the rotated value. Because of that, the rotate operations are only provided for constant rotate amounts, specified as Python ints.

    +

    Rotate operations with variable rotate amounts cannot be efficiently synthesized for non-power-of-2 widths of the rotated value. Because of that, the rotate operations are only provided for constant rotate amounts, specified as Python ints.

    The following table lists the bitwise and shift operations provided by Amaranth:

    @@ -670,7 +670,7 @@

    Signal shapes [4] (1,2) -

    Conceptually the same as applying the Python all() or any() function to the value viewed as a collection of bits.

    +

    Conceptually the same as applying the Python all() or any() function to the value viewed as a collection of bits.

    @@ -849,7 +849,7 @@

    Signal shapes

    Choice operator

    -

    The Mux(sel, val1, val0) choice expression (similar to the conditional expression in Python) is equal to the operand val1 if sel is non-zero, and to the other operand val0 otherwise. If any of val1 or val0 are signed, the expression itself is signed as well.

    +

    The Mux(sel, val1, val0) choice expression (similar to the conditional expression in Python) is equal to the operand val1 if sel is non-zero, and to the other operand val0 otherwise. If any of val1 or val0 are signed, the expression itself is signed as well.

    @@ -962,7 +962,7 @@

    Signal shapes

    Control structures

    -

    Although it is possible to write any decision tree as a combination of assignments and choice expressions, Amaranth provides control structures tailored for this task: If, Switch, and FSM. The syntax of all control structures is based on context managers and uses with blocks, for example:

    +

    Although it is possible to write any decision tree as a combination of assignments and choice expressions, Amaranth provides control structures tailored for this task: If, Switch, and FSM. The syntax of all control structures is based on context managers and uses with blocks, for example:

    timer = Signal(8)
     with m.If(timer == 0):
         m.d.sync += timer.eq(10)
    diff --git a/docs/amaranth/latest/objects.inv b/docs/amaranth/latest/objects.inv
    index 9989dba5b83166255be964549c423888b50ba40d..fa37d39f090e8736d49d0cb65d23f5db6df068d2 100644
    GIT binary patch
    delta 21
    ccmdlezEONaFqe^bdUA5ANves-#@G;U08bSL+W-In
    
    delta 21
    ccmdlezEONaFqffrda|X7p_!Ta#@G;U07_&AQUCw|
    
    diff --git a/docs/amaranth/latest/platform.html b/docs/amaranth/latest/platform.html
    index 6b819bda..b25d9a59 100644
    --- a/docs/amaranth/latest/platform.html
    +++ b/docs/amaranth/latest/platform.html
    @@ -4,7 +4,7 @@
       
     
       
    -  Platform integration — Amaranth HDL toolchain 0.4.dev211 documentation
    +  Platform integration — Amaranth HDL toolchain 0.4.dev212 documentation
           
           
           
    @@ -39,7 +39,7 @@
                 Amaranth HDL toolchain
               
                   
    - 0.4.dev211+gc941667.editable + 0.4.dev212+gcce4e44.editable
    diff --git a/docs/amaranth/latest/platform/gowin.html b/docs/amaranth/latest/platform/gowin.html index 3b553514..15fad333 100644 --- a/docs/amaranth/latest/platform/gowin.html +++ b/docs/amaranth/latest/platform/gowin.html @@ -4,7 +4,7 @@ - Gowin — Amaranth HDL toolchain 0.4.dev211 documentation + Gowin — Amaranth HDL toolchain 0.4.dev212 documentation @@ -39,7 +39,7 @@ Amaranth HDL toolchain
    - 0.4.dev211+gc941667.editable + 0.4.dev212+gcce4e44.editable
    diff --git a/docs/amaranth/latest/platform/intel.html b/docs/amaranth/latest/platform/intel.html index 43d88198..f061e425 100644 --- a/docs/amaranth/latest/platform/intel.html +++ b/docs/amaranth/latest/platform/intel.html @@ -4,7 +4,7 @@ - Intel — Amaranth HDL toolchain 0.4.dev211 documentation + Intel — Amaranth HDL toolchain 0.4.dev212 documentation @@ -39,7 +39,7 @@ Amaranth HDL toolchain
    - 0.4.dev211+gc941667.editable + 0.4.dev212+gcce4e44.editable
    diff --git a/docs/amaranth/latest/platform/lattice-ecp5.html b/docs/amaranth/latest/platform/lattice-ecp5.html index 5921033e..7fc95d5e 100644 --- a/docs/amaranth/latest/platform/lattice-ecp5.html +++ b/docs/amaranth/latest/platform/lattice-ecp5.html @@ -4,7 +4,7 @@ - Lattice ECP5 — Amaranth HDL toolchain 0.4.dev211 documentation + Lattice ECP5 — Amaranth HDL toolchain 0.4.dev212 documentation @@ -39,7 +39,7 @@ Amaranth HDL toolchain
    - 0.4.dev211+gc941667.editable + 0.4.dev212+gcce4e44.editable
    diff --git a/docs/amaranth/latest/platform/lattice-ice40.html b/docs/amaranth/latest/platform/lattice-ice40.html index 76c8d3ca..b7e55492 100644 --- a/docs/amaranth/latest/platform/lattice-ice40.html +++ b/docs/amaranth/latest/platform/lattice-ice40.html @@ -4,7 +4,7 @@ - Lattice iCE40 — Amaranth HDL toolchain 0.4.dev211 documentation + Lattice iCE40 — Amaranth HDL toolchain 0.4.dev212 documentation @@ -39,7 +39,7 @@ Amaranth HDL toolchain
    - 0.4.dev211+gc941667.editable + 0.4.dev212+gcce4e44.editable
    diff --git a/docs/amaranth/latest/platform/lattice-machxo-2-3l.html b/docs/amaranth/latest/platform/lattice-machxo-2-3l.html index ee40092c..be826bcb 100644 --- a/docs/amaranth/latest/platform/lattice-machxo-2-3l.html +++ b/docs/amaranth/latest/platform/lattice-machxo-2-3l.html @@ -4,7 +4,7 @@ - Lattice MachXO2 and MachXO3L — Amaranth HDL toolchain 0.4.dev211 documentation + Lattice MachXO2 and MachXO3L — Amaranth HDL toolchain 0.4.dev212 documentation @@ -39,7 +39,7 @@ Amaranth HDL toolchain
    - 0.4.dev211+gc941667.editable + 0.4.dev212+gcce4e44.editable
    diff --git a/docs/amaranth/latest/platform/quicklogic.html b/docs/amaranth/latest/platform/quicklogic.html index ebb612aa..6b35a52d 100644 --- a/docs/amaranth/latest/platform/quicklogic.html +++ b/docs/amaranth/latest/platform/quicklogic.html @@ -4,7 +4,7 @@ - Quicklogic — Amaranth HDL toolchain 0.4.dev211 documentation + Quicklogic — Amaranth HDL toolchain 0.4.dev212 documentation @@ -39,7 +39,7 @@ Amaranth HDL toolchain
    - 0.4.dev211+gc941667.editable + 0.4.dev212+gcce4e44.editable
    diff --git a/docs/amaranth/latest/platform/xilinx.html b/docs/amaranth/latest/platform/xilinx.html index 7a804859..f494560e 100644 --- a/docs/amaranth/latest/platform/xilinx.html +++ b/docs/amaranth/latest/platform/xilinx.html @@ -4,7 +4,7 @@ - Xilinx — Amaranth HDL toolchain 0.4.dev211 documentation + Xilinx — Amaranth HDL toolchain 0.4.dev212 documentation @@ -39,7 +39,7 @@ Amaranth HDL toolchain
    - 0.4.dev211+gc941667.editable + 0.4.dev212+gcce4e44.editable
    diff --git a/docs/amaranth/latest/py-modindex.html b/docs/amaranth/latest/py-modindex.html index 9004981d..610a2cd9 100644 --- a/docs/amaranth/latest/py-modindex.html +++ b/docs/amaranth/latest/py-modindex.html @@ -3,7 +3,7 @@ - Python Module Index — Amaranth HDL toolchain 0.4.dev211 documentation + Python Module Index — Amaranth HDL toolchain 0.4.dev212 documentation @@ -39,7 +39,7 @@ Amaranth HDL toolchain
    - 0.4.dev211+gc941667.editable + 0.4.dev212+gcce4e44.editable
    diff --git a/docs/amaranth/latest/search.html b/docs/amaranth/latest/search.html index dc9cb8d0..7c83ce3a 100644 --- a/docs/amaranth/latest/search.html +++ b/docs/amaranth/latest/search.html @@ -3,7 +3,7 @@ - Search — Amaranth HDL toolchain 0.4.dev211 documentation + Search — Amaranth HDL toolchain 0.4.dev212 documentation @@ -39,7 +39,7 @@ Amaranth HDL toolchain
    - 0.4.dev211+gc941667.editable + 0.4.dev212+gcce4e44.editable
    diff --git a/docs/amaranth/latest/start.html b/docs/amaranth/latest/start.html index 16e0e69d..aa2f1c35 100644 --- a/docs/amaranth/latest/start.html +++ b/docs/amaranth/latest/start.html @@ -4,7 +4,7 @@ - Getting started — Amaranth HDL toolchain 0.4.dev211 documentation + Getting started — Amaranth HDL toolchain 0.4.dev212 documentation @@ -39,7 +39,7 @@ Amaranth HDL toolchain
    - 0.4.dev211+gc941667.editable + 0.4.dev212+gcce4e44.editable
    diff --git a/docs/amaranth/latest/stdlib.html b/docs/amaranth/latest/stdlib.html index e5113fa4..23933895 100644 --- a/docs/amaranth/latest/stdlib.html +++ b/docs/amaranth/latest/stdlib.html @@ -4,7 +4,7 @@ - Standard library — Amaranth HDL toolchain 0.4.dev211 documentation + Standard library — Amaranth HDL toolchain 0.4.dev212 documentation @@ -39,7 +39,7 @@ Amaranth HDL toolchain
    - 0.4.dev211+gc941667.editable + 0.4.dev212+gcce4e44.editable
    diff --git a/docs/amaranth/latest/stdlib/cdc.html b/docs/amaranth/latest/stdlib/cdc.html index 8128df59..c47b6427 100644 --- a/docs/amaranth/latest/stdlib/cdc.html +++ b/docs/amaranth/latest/stdlib/cdc.html @@ -4,7 +4,7 @@ - Clock domain crossing — Amaranth HDL toolchain 0.4.dev211 documentation + Clock domain crossing — Amaranth HDL toolchain 0.4.dev212 documentation @@ -39,7 +39,7 @@ Amaranth HDL toolchain
    - 0.4.dev211+gc941667.editable + 0.4.dev212+gcce4e44.editable
    @@ -119,14 +119,14 @@
    • i (Signal(n), in) – Signal to be resynchronised.

    • o (Signal(n), out) – Signal connected to synchroniser output.

    • -
    • o_domain (str) – Name of output clock domain.

    • -
    • reset (int) – Reset value of the flip-flops. On FPGAs, even if reset_less is True, +

    • o_domain (str) – Name of output clock domain.

    • +
    • reset (int) – Reset value of the flip-flops. On FPGAs, even if reset_less is True, the FFSynchronizer is still set to this value during initialization.

    • -
    • reset_less (bool) – If True (the default), this FFSynchronizer is unaffected by o_domain +

    • reset_less (bool) – If True (the default), this FFSynchronizer is unaffected by o_domain reset. See the note below for details.

    • -
    • stages (int, >=2) – Number of synchronization stages between input and output. The lowest safe number is 2, +

    • stages (int, >=2) – Number of synchronization stages between input and output. The lowest safe number is 2, with higher numbers reducing MTBF further, at the cost of increased latency.

    • -
    • max_input_delay (None or float) – Maximum delay from the input signal’s clock to the first synchronization stage, in seconds. +

    • max_input_delay (None or float) – Maximum delay from the input signal’s clock to the first synchronization stage, in seconds. If specified and the platform does not support it, elaboration will fail.

    @@ -164,11 +164,11 @@
    • i (Signal(1), in) – Asynchronous input signal, to be synchronized.

    • o (Signal(1), out) – Synchronously released output signal.

    • -
    • o_domain (str) – Name of clock domain to synchronize to.

    • -
    • stages (int, >=2) – Number of synchronization stages between input and output. The lowest safe number is 2, +

    • o_domain (str) – Name of clock domain to synchronize to.

    • +
    • stages (int, >=2) – Number of synchronization stages between input and output. The lowest safe number is 2, with higher numbers reducing MTBF further, at the cost of increased deassertion latency.

    • -
    • async_edge (str) – The edge of the input signal which causes the output to be set. Must be one of “pos” or “neg”.

    • -
    • max_input_delay (None or float) – Maximum delay from the input signal’s clock to the first synchronization stage, in seconds. +

    • async_edge (str) – The edge of the input signal which causes the output to be set. Must be one of “pos” or “neg”.

    • +
    • max_input_delay (None or float) – Maximum delay from the input signal’s clock to the first synchronization stage, in seconds. If specified and the platform does not support it, elaboration will fail.

    @@ -193,10 +193,10 @@
    Parameters:
    • arst (Signal(1), in) – Asynchronous reset signal, to be synchronized.

    • -
    • domain (str) – Name of clock domain to reset.

    • -
    • stages (int, >=2) – Number of synchronization stages between input and output. The lowest safe number is 2, +

    • domain (str) – Name of clock domain to reset.

    • +
    • stages (int, >=2) – Number of synchronization stages between input and output. The lowest safe number is 2, with higher numbers reducing MTBF further, at the cost of increased deassertion latency.

    • -
    • max_input_delay (None or float) – Maximum delay from the input signal’s clock to the first synchronization stage, in seconds. +

    • max_input_delay (None or float) – Maximum delay from the input signal’s clock to the first synchronization stage, in seconds. If specified and the platform does not support it, elaboration will fail.

    @@ -217,9 +217,9 @@
    Parameters:
      -
    • i_domain (str) – Name of input clock domain.

    • -
    • o_domain (str) – Name of output clock domain.

    • -
    • stages (int, >=2) – Number of synchronization stages between input and output. The lowest safe number is 2, +

    • i_domain (str) – Name of input clock domain.

    • +
    • o_domain (str) – Name of output clock domain.

    • +
    • stages (int, >=2) – Number of synchronization stages between input and output. The lowest safe number is 2, with higher numbers reducing MTBF further, at the cost of increased deassertion latency.

    diff --git a/docs/amaranth/latest/stdlib/coding.html b/docs/amaranth/latest/stdlib/coding.html index 191d276d..6b650581 100644 --- a/docs/amaranth/latest/stdlib/coding.html +++ b/docs/amaranth/latest/stdlib/coding.html @@ -4,7 +4,7 @@ - Code conversion — Amaranth HDL toolchain 0.4.dev211 documentation + Code conversion — Amaranth HDL toolchain 0.4.dev212 documentation @@ -39,7 +39,7 @@ Amaranth HDL toolchain
    - 0.4.dev211+gc941667.editable + 0.4.dev212+gcce4e44.editable
    @@ -117,12 +117,12 @@

    One-hot codingn is high and o is 0.

    Parameters:
    -

    width (int) – Bit width of the input

    +

    width (int) – Bit width of the input

    Variables:
    • i (Signal(width), in) – One-hot input.

    • -
    • o (Signal(range(width)), out) – Encoded natural binary.

    • +
    • o (Signal(range(width)), out) – Encoded natural binary.

    • n (Signal, out) – Invalid: either none or multiple input bits are asserted.

    @@ -137,11 +137,11 @@

    One-hot codingn is high, o is 0.

    Parameters:
    -

    width (int) – Bit width of the output.

    +

    width (int) – Bit width of the output.

    Variables:
      -
    • i (Signal(range(width)), in) – Input binary.

    • +
    • i (Signal(range(width)), in) – Input binary.

    • o (Signal(width), out) – Decoded one-hot.

    • n (Signal, in) – Invalid, no output bits are to be asserted.

    @@ -161,12 +161,12 @@

    Priority codingn is high and o is 0.

    Parameters:
    -

    width (int) – Bit width of the input.

    +

    width (int) – Bit width of the input.

    Variables:
    • i (Signal(width), in) – Input requests.

    • -
    • o (Signal(range(width)), out) – Encoded natural binary.

    • +
    • o (Signal(range(width)), out) – Encoded natural binary.

    • n (Signal, out) – Invalid: no input bits are asserted.

    @@ -189,7 +189,7 @@

    Gray coding
    Parameters:
    -

    width (int) – Bit width.

    +

    width (int) – Bit width.

    Variables:
      @@ -206,7 +206,7 @@

      Gray coding
      Parameters:
      -

      width (int) – Bit width.

      +

      width (int) – Bit width.

      Variables:
        diff --git a/docs/amaranth/latest/stdlib/crc.html b/docs/amaranth/latest/stdlib/crc.html index 1795d677..7d43187a 100644 --- a/docs/amaranth/latest/stdlib/crc.html +++ b/docs/amaranth/latest/stdlib/crc.html @@ -4,7 +4,7 @@ - Cyclic redundancy checks — Amaranth HDL toolchain 0.4.dev211 documentation + Cyclic redundancy checks — Amaranth HDL toolchain 0.4.dev212 documentation @@ -39,7 +39,7 @@ Amaranth HDL toolchain
        - 0.4.dev211+gc941667.editable + 0.4.dev212+gcce4e44.editable
        @@ -158,24 +158,24 @@
        Parameters:
          -
        • crc_width (int) – Bit width of CRC word. Also known as “width” in the Williams model.

        • -
        • polynomial (int) – CRC polynomial to use, crc_width bits long, without the implicit +

        • crc_width (int) – Bit width of CRC word. Also known as “width” in the Williams model.

        • +
        • polynomial (int) – CRC polynomial to use, crc_width bits long, without the implicit x**crc_width term. Polynomial is always specified with the highest order terms in the most significant bit positions; use reflect_input and reflect_output to perform a least significant bit first computation.

        • -
        • initial_crc (int) – Initial value of CRC register at reset. Most significant bit always +

        • initial_crc (int) – Initial value of CRC register at reset. Most significant bit always corresponds to the highest order term in the CRC register.

        • -
        • reflect_input (bool) – If True, the input data words are bit-reflected, so that they are +

        • reflect_input (bool) – If True, the input data words are bit-reflected, so that they are processed least significant bit first.

        • -
        • reflect_output (bool) – If True, the output CRC is bit-reflected, so the least-significant bit +

        • reflect_output (bool) – If True, the output CRC is bit-reflected, so the least-significant bit of the output is the highest-order bit of the CRC register. Note that this reflection is performed over the entire CRC register; for transmission you may want to treat the output as a little-endian multi-word value, so for example the reflected 16-bit output 0x4E4C would be transmitted as the two octets 0x4C 0x4E, each transmitted least significant bit first.

        • -
        • xor_output (int) – The output CRC will be the CRC register XOR’d with this value, applied +

        • xor_output (int) – The output CRC will be the CRC register XOR’d with this value, applied after any output bit-reflection.

        @@ -187,7 +187,7 @@ Algorithm with the specified data_width.

        Parameters:
        -

        data_width (int) – Bit width of data words, default 8.

        +

        data_width (int) – Bit width of data words, default 8.

    @@ -210,7 +210,7 @@
  • algorithm (Algorithm) – CRC algorithm to use. Specifies the CRC width, polynomial, initial value, whether to reflect the input or output words, and any output XOR.

  • -
  • data_width (int) – Bit width of data words.

  • +
  • data_width (int) – Bit width of data words.

  • diff --git a/docs/amaranth/latest/stdlib/crc/catalog.html b/docs/amaranth/latest/stdlib/crc/catalog.html index 02ff976a..bb348943 100644 --- a/docs/amaranth/latest/stdlib/crc/catalog.html +++ b/docs/amaranth/latest/stdlib/crc/catalog.html @@ -4,7 +4,7 @@ - Predefined CRC Algorithms — Amaranth HDL toolchain 0.4.dev211 documentation + Predefined CRC Algorithms — Amaranth HDL toolchain 0.4.dev212 documentation @@ -39,7 +39,7 @@ Amaranth HDL toolchain
    - 0.4.dev211+gc941667.editable + 0.4.dev212+gcce4e44.editable
    diff --git a/docs/amaranth/latest/stdlib/data.html b/docs/amaranth/latest/stdlib/data.html index b2d00776..f0b969f3 100644 --- a/docs/amaranth/latest/stdlib/data.html +++ b/docs/amaranth/latest/stdlib/data.html @@ -4,7 +4,7 @@ - Data structures — Amaranth HDL toolchain 0.4.dev211 documentation + Data structures — Amaranth HDL toolchain 0.4.dev212 documentation @@ -39,7 +39,7 @@ Amaranth HDL toolchain
    - 0.4.dev211+gc941667.editable + 0.4.dev212+gcce4e44.editable
    @@ -118,7 +118,7 @@

    OverviewField and Layout. These classes are rarely used directly, but are the foundation on which all other functionality is built. They are also useful for introspection.

  • High-level bitwise layout description via StructLayout, UnionLayout, ArrayLayout, and FlexibleLayout. These classes are the ones most often used directly, in particular StructLayout and ArrayLayout.

  • Data views via View or its user-defined subclasses. This class is used to apply a layout description to a plain Value, enabling structured access to its bits.

  • -
  • Data classes Struct and Union. These classes are data views with a layout that is defined using Python variable annotations (also known as type annotations).

  • +
  • Data classes Struct and Union. These classes are data views with a layout that is defined using Python variable annotations (also known as type annotations).

  • @@ -284,7 +284,7 @@

    Modeling structured dataVariables:
    • shape (shape-castable) – Shape of the field. When initialized or assigned, the object is stored as-is.

    • -
    • offset (int, >=0) – Index of the least significant bit of the field.

    • +
    • offset (int, >=0) – Index of the least significant bit of the field.

    @@ -300,7 +300,7 @@

    Modeling structured data

    Shape.cast(self.shape).width

    Return type:
    -

    int

    +

    int

    @@ -335,8 +335,8 @@

    Modeling structured data
    Raises:
    @@ -349,7 +349,7 @@

    Modeling structured data
    Yields:
      -
    • str or int – Key (either name or index) for accessing the field.

    • +
    • str or int – Key (either name or index) for accessing the field.

    • Field – Description of the field.

    @@ -368,7 +368,7 @@

    Modeling structured data

    Field

    Raises:
    -

    KeyError – If there is no field associated with key.

    +

    KeyError – If there is no field associated with key.

    @@ -382,7 +382,7 @@

    Modeling structured data

    The amount of bits required to store every field in the layout.

    Return type:
    -

    int

    +

    int

    @@ -471,7 +471,7 @@

    Common data layouts
    Variables:
    -

    members (mapping of str to shape-castable) – Dictionary of structure members.

    +

    members (mapping of str to shape-castable) – Dictionary of structure members.

    @@ -484,7 +484,7 @@

    Common data layoutsReturn type: -

    int

    +

    int

    @@ -508,7 +508,7 @@

    Common data layouts
    Variables:
    -

    members (mapping of str to shape-castable) – Dictionary of union members.

    +

    members (mapping of str to shape-castable) – Dictionary of union members.

    @@ -521,7 +521,7 @@

    Common data layoutsReturn type: -

    int

    +

    int

    @@ -564,7 +564,7 @@

    Common data layoutsVariables:
    @@ -577,7 +577,7 @@

    Common data layouts

    Size of an individual element multiplied by their amount.

    Return type:
    -

    int

    +

    int

    @@ -604,8 +604,8 @@

    Common data layouts
    Variables:
      -
    • size (int) – Size of the layout.

    • -
    • fields (mapping of str or int to Field) – Fields defined in the layout.

    • +
    • size (int) – Size of the layout.

    • +
    • fields (mapping of str or int to Field) – Fields defined in the layout.

    @@ -698,7 +698,7 @@

    Custom view classes
    Parameters:
    -

    key (str or int or ValueCastable) – Name or index of a field.

    +

    key (str or int or ValueCastable) – Name or index of a field.

    Returns:

    A slice of the underlying value defined by the field.

    @@ -708,10 +708,10 @@

    Custom view classesRaises:
      -
    • KeyError – If the layout does not define a field corresponding to key.

    • -
    • TypeError – If key is a value-castable object, but the layout of the view is not +

    • KeyError – If the layout does not define a field corresponding to key.

    • +
    • TypeError – If key is a value-castable object, but the layout of the view is not a ArrayLayout.

    • -
    • TypeError – If ShapeCastable.__call__ does not return a value or a value-castable object.

    • +
    • TypeError – If ShapeCastable.__call__ does not return a value or a value-castable object.

    @@ -724,7 +724,7 @@

    Custom view classesself[name].

    Raises:
    -

    AttributeError – If the layout does not define a field called name, or if name starts with +

    AttributeError – If the layout does not define a field called name, or if name starts with an underscore.

    @@ -742,7 +742,7 @@

    Data classesStruct base class is a subclass of View that provides a concise way to describe the structure layout and reset values for the fields using Python -variable annotations.

    +variable annotations.

    Any annotations containing shape-castable objects are used, in the order in which they appear in the source code, to construct a StructLayout. The values assigned to such annotations are used to populate the reset value of the signal @@ -825,7 +825,7 @@

    Data classesclass amaranth.lib.data.Union(target)

    Unions defined with annotations.

    The Union base class is a subclass of View that provides a concise way -to describe the union layout using Python variable annotations. It is very similar to the Struct class, except that its layout +to describe the union layout using Python variable annotations. It is very similar to the Struct class, except that its layout is a UnionLayout.

    A Union can have only one field with a specified reset value. If a reset value is explicitly provided during instantiation, it overrides the reset value specified with diff --git a/docs/amaranth/latest/stdlib/enum.html b/docs/amaranth/latest/stdlib/enum.html index 1bce7465..5f62ca6e 100644 --- a/docs/amaranth/latest/stdlib/enum.html +++ b/docs/amaranth/latest/stdlib/enum.html @@ -4,7 +4,7 @@ - Enumerations — Amaranth HDL toolchain 0.4.dev211 documentation + Enumerations — Amaranth HDL toolchain 0.4.dev212 documentation @@ -39,7 +39,7 @@ Amaranth HDL toolchain

    - 0.4.dev211+gc941667.editable + 0.4.dev212+gcce4e44.editable
    @@ -105,7 +105,7 @@

    Enumerations

    -

    The amaranth.lib.enum module is a drop-in replacement for the standard enum module that provides extended Enum, IntEnum, Flag, and IntFlag classes with the ability to specify a shape explicitly.

    +

    The amaranth.lib.enum module is a drop-in replacement for the standard enum module that provides extended Enum, IntEnum, Flag, and IntFlag classes with the ability to specify a shape explicitly.

    A shape can be specified for an enumeration with the shape= keyword argument:

    from amaranth.lib import enum
     
    @@ -136,7 +136,7 @@
     <Instr.SUBI: 17>
     
    -

    The shape= argument is optional. If not specified, classes from this module behave exactly the same as classes from the standard enum module, and likewise, this module re-exports everything exported by the standard enum module.

    +

    The shape= argument is optional. If not specified, classes from this module behave exactly the same as classes from the standard enum module, and likewise, this module re-exports everything exported by the standard enum module.

    import amaranth.lib.enum
     
     class NormalEnum(amaranth.lib.enum.Enum):
    @@ -144,7 +144,7 @@
         HAM  = 1
     
    -

    In this way, this module is a drop-in replacement for the standard enum module, and in an Amaranth project, all import enum statements may be replaced with from amaranth.lib import enum.

    +

    In this way, this module is a drop-in replacement for the standard enum module, and in an Amaranth project, all import enum statements may be replaced with from amaranth.lib import enum.

    Metaclass

    @@ -171,7 +171,7 @@

    Metaclass

    Shape

    Raises:
    -

    TypeError – If the enumeration has neither an explicitly provided shape nor any members.

    +

    TypeError – If the enumeration has neither an explicitly provided shape nor any members.

    @@ -184,28 +184,28 @@

    Base classes
    class amaranth.lib.enum.Enum
    -

    Subclass of the standard enum.Enum that has EnumMeta as +

    Subclass of the standard enum.Enum that has EnumMeta as its metaclass.

    class amaranth.lib.enum.IntEnum
    -

    Subclass of the standard enum.IntEnum that has EnumMeta as +

    Subclass of the standard enum.IntEnum that has EnumMeta as its metaclass.

    class amaranth.lib.enum.Flag
    -

    Subclass of the standard enum.Flag that has EnumMeta as +

    Subclass of the standard enum.Flag that has EnumMeta as its metaclass.

    class amaranth.lib.enum.IntFlag
    -

    Subclass of the standard enum.IntFlag that has EnumMeta as +

    Subclass of the standard enum.IntFlag that has EnumMeta as its metaclass.

    diff --git a/docs/amaranth/latest/stdlib/fifo.html b/docs/amaranth/latest/stdlib/fifo.html index bcd5fc07..b35726fb 100644 --- a/docs/amaranth/latest/stdlib/fifo.html +++ b/docs/amaranth/latest/stdlib/fifo.html @@ -4,7 +4,7 @@ - First-in first-out queues — Amaranth HDL toolchain 0.4.dev211 documentation + First-in first-out queues — Amaranth HDL toolchain 0.4.dev212 documentation @@ -39,7 +39,7 @@ Amaranth HDL toolchain
    - 0.4.dev211+gc941667.editable + 0.4.dev212+gcce4e44.editable
    @@ -118,9 +118,9 @@
    Parameters:
      -
    • width (int) – Bit width of data entries.

    • -
    • depth (int) – Depth of the queue. If zero, the FIFO cannot be read from or written to.

    • -
    • fwft (bool) – First-word fallthrough. If set, when r_rdy rises, the first entry is already +

    • width (int) – Bit width of data entries.

    • +
    • depth (int) – Depth of the queue. If zero, the FIFO cannot be read from or written to.

    • +
    • fwft (bool) – First-word fallthrough. If set, when r_rdy rises, the first entry is already available, i.e. r_data is valid. Otherwise, after r_rdy rises, it is necessary to strobe r_en for r_data to become valid.

    @@ -131,13 +131,13 @@
  • w_rdy (Signal(1), out) – Asserted if there is space in the queue, i.e. w_en can be asserted to write a new entry.

  • w_en (Signal(1), in) – Write strobe. Latches w_data into the queue. Does nothing if w_rdy is not asserted.

  • -
  • w_level (Signal(range(depth + 1)), out) – Number of unread entries.

  • +
  • w_level (Signal(range(depth + 1)), out) – Number of unread entries.

  • r_data (Signal(width), out) – Output data. The conditions in which r_data is valid depends on the type of the queue.

  • r_rdy (Signal(1), out) – Asserted if there is an entry in the queue, i.e. r_en can be asserted to read an existing entry.

  • r_en (Signal(1), in) – Read strobe. Makes the next entry (if any) available on r_data at the next cycle. Does nothing if r_rdy is not asserted.

  • -
  • r_level (Signal(range(depth + 1)), out) – Number of unread entries.

  • +
  • r_level (Signal(range(depth + 1)), out) – Number of unread entries.

  • @@ -156,27 +156,27 @@
    Parameters:
      -
    • width (int) – Bit width of data entries.

    • -
    • depth (int) – Depth of the queue. If zero, the FIFO cannot be read from or written to.

    • -
    • fwft (bool) – First-word fallthrough. If set, when the queue is empty and an entry is written into it, +

    • width (int) – Bit width of data entries.

    • +
    • depth (int) – Depth of the queue. If zero, the FIFO cannot be read from or written to.

    • +
    • fwft (bool) – First-word fallthrough. If set, when the queue is empty and an entry is written into it, that entry becomes available on the output on the same clock cycle. Otherwise, it is necessary to assert r_en for r_data to become valid.

    Variables:
      -
    • level (Signal(range(depth + 1)), out) – Number of unread entries. This level is the same between read and write for synchronous FIFOs.

    • +
    • level (Signal(range(depth + 1)), out) – Number of unread entries. This level is the same between read and write for synchronous FIFOs.

    • w_data (Signal(width), in) – Input data.

    • w_rdy (Signal(1), out) – Asserted if there is space in the queue, i.e. w_en can be asserted to write a new entry.

    • w_en (Signal(1), in) – Write strobe. Latches w_data into the queue. Does nothing if w_rdy is not asserted.

    • -
    • w_level (Signal(range(depth + 1)), out) – Number of unread entries.

    • +
    • w_level (Signal(range(depth + 1)), out) – Number of unread entries.

    • r_data (Signal(width), out) – Output data. For FWFT queues, valid if r_rdy is asserted. For non-FWFT queues, valid on the next cycle after r_rdy and r_en have been asserted.

    • r_rdy (Signal(1), out) – Asserted if there is an entry in the queue, i.e. r_en can be asserted to read an existing entry.

    • r_en (Signal(1), in) – Read strobe. Makes the next entry (if any) available on r_data at the next cycle. Does nothing if r_rdy is not asserted.

    • -
    • r_level (Signal(range(depth + 1)), out) – Number of unread entries.

    • +
    • r_level (Signal(range(depth + 1)), out) – Number of unread entries.

    @@ -193,25 +193,25 @@
    Parameters:
      -
    • width (int) – Bit width of data entries.

    • -
    • depth (int) – Depth of the queue. If zero, the FIFO cannot be read from or written to.

    • -
    • fwft (bool) – Always set.

    • +
    • width (int) – Bit width of data entries.

    • +
    • depth (int) – Depth of the queue. If zero, the FIFO cannot be read from or written to.

    • +
    • fwft (bool) – Always set.

    Variables:
      -
    • level (Signal(range(depth + 1)), out) – Number of unread entries. This level is the same between read and write for synchronous FIFOs.

    • +
    • level (Signal(range(depth + 1)), out) – Number of unread entries. This level is the same between read and write for synchronous FIFOs.

    • w_data (Signal(width), in) – Input data.

    • w_rdy (Signal(1), out) – Asserted if there is space in the queue, i.e. w_en can be asserted to write a new entry.

    • w_en (Signal(1), in) – Write strobe. Latches w_data into the queue. Does nothing if w_rdy is not asserted.

    • -
    • w_level (Signal(range(depth + 1)), out) – Number of unread entries.

    • +
    • w_level (Signal(range(depth + 1)), out) – Number of unread entries.

    • r_data (Signal(width), out) – Output data. Valid if r_rdy is asserted.

    • r_rdy (Signal(1), out) – Asserted if there is an entry in the queue, i.e. r_en can be asserted to read an existing entry.

    • r_en (Signal(1), in) – Read strobe. Makes the next entry (if any) available on r_data at the next cycle. Does nothing if r_rdy is not asserted.

    • -
    • r_level (Signal(range(depth + 1)), out) – Number of unread entries.

    • +
    • r_level (Signal(range(depth + 1)), out) – Number of unread entries.

    @@ -231,11 +231,11 @@
    Parameters:
      -
    • width (int) – Bit width of data entries.

    • -
    • depth (int) – Depth of the queue. If zero, the FIFO cannot be read from or written to.

    • -
    • r_domain (str) – Read clock domain.

    • -
    • w_domain (str) – Write clock domain.

    • -
    • fwft (bool) – Always set.

    • +
    • width (int) – Bit width of data entries.

    • +
    • depth (int) – Depth of the queue. If zero, the FIFO cannot be read from or written to.

    • +
    • r_domain (str) – Read clock domain.

    • +
    • w_domain (str) – Write clock domain.

    • +
    • fwft (bool) – Always set.

    Variables:
    @@ -244,13 +244,13 @@
  • w_rdy (Signal(1), out) – Asserted if there is space in the queue, i.e. w_en can be asserted to write a new entry.

  • w_en (Signal(1), in) – Write strobe. Latches w_data into the queue. Does nothing if w_rdy is not asserted.

  • -
  • w_level (Signal(range(depth + 1)), out) – Number of unread entries.

  • +
  • w_level (Signal(range(depth + 1)), out) – Number of unread entries.

  • r_data (Signal(width), out) – Output data. Valid if r_rdy is asserted.

  • r_rdy (Signal(1), out) – Asserted if there is an entry in the queue, i.e. r_en can be asserted to read an existing entry.

  • r_en (Signal(1), in) – Read strobe. Makes the next entry (if any) available on r_data at the next cycle. Does nothing if r_rdy is not asserted.

  • -
  • r_level (Signal(range(depth + 1)), out) – Number of unread entries.

  • +
  • r_level (Signal(range(depth + 1)), out) – Number of unread entries.

  • r_rst (Signal(1), out) – Asserted, for at least one read-domain clock cycle, after the FIFO has been reset by the write-domain reset.

  • @@ -274,11 +274,11 @@
    Parameters:
      -
    • width (int) – Bit width of data entries.

    • -
    • depth (int) – Depth of the queue. If zero, the FIFO cannot be read from or written to.

    • -
    • r_domain (str) – Read clock domain.

    • -
    • w_domain (str) – Write clock domain.

    • -
    • fwft (bool) – Always set.

    • +
    • width (int) – Bit width of data entries.

    • +
    • depth (int) – Depth of the queue. If zero, the FIFO cannot be read from or written to.

    • +
    • r_domain (str) – Read clock domain.

    • +
    • w_domain (str) – Write clock domain.

    • +
    • fwft (bool) – Always set.

    Variables:
    @@ -287,13 +287,13 @@
  • w_rdy (Signal(1), out) – Asserted if there is space in the queue, i.e. w_en can be asserted to write a new entry.

  • w_en (Signal(1), in) – Write strobe. Latches w_data into the queue. Does nothing if w_rdy is not asserted.

  • -
  • w_level (Signal(range(depth + 1)), out) – Number of unread entries.

  • +
  • w_level (Signal(range(depth + 1)), out) – Number of unread entries.

  • r_data (Signal(width), out) – Output data. Valid if r_rdy is asserted.

  • r_rdy (Signal(1), out) – Asserted if there is an entry in the queue, i.e. r_en can be asserted to read an existing entry.

  • r_en (Signal(1), in) – Read strobe. Makes the next entry (if any) available on r_data at the next cycle. Does nothing if r_rdy is not asserted.

  • -
  • r_level (Signal(range(depth + 1)), out) – Number of unread entries.

  • +
  • r_level (Signal(range(depth + 1)), out) – Number of unread entries.

  • r_rst (Signal(1), out) – Asserted, for at least one read-domain clock cycle, after the FIFO has been reset by the write-domain reset.

  • diff --git a/docs/amaranth/latest/tutorial.html b/docs/amaranth/latest/tutorial.html index 708e3d67..56a307bf 100644 --- a/docs/amaranth/latest/tutorial.html +++ b/docs/amaranth/latest/tutorial.html @@ -4,7 +4,7 @@ - Tutorial — Amaranth HDL toolchain 0.4.dev211 documentation + Tutorial — Amaranth HDL toolchain 0.4.dev212 documentation @@ -39,7 +39,7 @@ Amaranth HDL toolchain
    - 0.4.dev211+gc941667.editable + 0.4.dev212+gcce4e44.editable