Skip to content

Commit ec2dd90

Browse files
Deploying to main from @ amaranth-lang/amaranth@f2fdc41 🚀
1 parent 28b4525 commit ec2dd90

40 files changed

+211
-189
lines changed

docs/amaranth/latest/_sources/changes.rst.txt

+11-1
Original file line numberDiff line numberDiff line change
@@ -66,10 +66,20 @@ Platform integration changes
6666
* Changed: the Gowin platform now uses ``nextpnr-himbaechel`` rather than ``nextpnr-gowin``.
6767

6868

69-
Version 0.5.2 (unreleased)
69+
Version 0.5.3 (unreleased)
7070
==========================
7171

7272

73+
Language changes
74+
----------------
75+
76+
* Added: individual bits of the same signal can now be assigned from different modules or domains.
77+
78+
79+
Version 0.5.2
80+
=============
81+
82+
7383
Standard library changes
7484
------------------------
7585

docs/amaranth/latest/_sources/guide.rst.txt

+7-11
Original file line numberDiff line numberDiff line change
@@ -940,7 +940,7 @@ If the name of a domain is not known upfront, the ``m.d["<domain>"] += ...`` syn
940940

941941
.. _lang-signalgranularity:
942942

943-
Every signal included in the target of an assignment becomes a part of the domain, or equivalently, *driven* by that domain. A signal can be either undriven or driven by exactly one domain; it is an error to add two assignments to the same signal to two different domains:
943+
Every signal bit included in the target of an assignment becomes a part of the domain, or equivalently, *driven* by that domain. A signal bit can be either undriven or driven by exactly one domain; it is an error to add two assignments to the same signal bit to two different domains:
944944

945945
.. doctest::
946946

@@ -949,19 +949,15 @@ Every signal included in the target of an assignment becomes a part of the domai
949949
>>> m.d.sync += d.eq(0)
950950
Traceback (most recent call last):
951951
...
952-
amaranth.hdl.dsl.SyntaxError: Driver-driver conflict: trying to drive (sig d) from d.sync, but it is already driven from d.comb
952+
amaranth.hdl.dsl.SyntaxError: Driver-driver conflict: trying to drive (sig d) bit 0 from d.sync, but it is already driven from d.comb
953953

954-
.. note::
955-
956-
Clearly, Amaranth code that drives a single bit of a signal from two different domains does not describe a meaningful circuit. However, driving two different bits of a signal from two different domains does not inherently cause such a conflict. Would Amaranth accept the following code?
954+
However, two different bits of a signal can be driven from two different domains without an issue:
957955

958-
.. code-block::
959-
960-
e = Signal(2)
961-
m.d.comb += e[0].eq(0)
962-
m.d.sync += e[1].eq(1)
956+
.. testcode::
963957

964-
The answer is no. While this kind of code is occasionally useful, rejecting it greatly simplifies backends, simulators, and analyzers.
958+
e = Signal(2)
959+
m.d.comb += e[0].eq(1)
960+
m.d.sync += e[1].eq(0)
965961

966962
In addition to assignments, :ref:`assertions <lang-assert>` and :ref:`debug prints <lang-print>` can be added using the same syntax.
967963

docs/amaranth/latest/_static/documentation_options.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
var DOCUMENTATION_OPTIONS = {
22
URL_ROOT: document.getElementById("documentation_options").getAttribute('data-url_root'),
3-
VERSION: '0.6.0.dev56',
3+
VERSION: '0.6.0.dev57',
44
LANGUAGE: 'en',
55
COLLAPSE_INDEX: false,
66
BUILDER: 'html',

docs/amaranth/latest/changes.html

+69-56
Large diffs are not rendered by default.

docs/amaranth/latest/changes.rst

+11-1
Original file line numberDiff line numberDiff line change
@@ -66,10 +66,20 @@ Platform integration changes
6666
* Changed: the Gowin platform now uses ``nextpnr-himbaechel`` rather than ``nextpnr-gowin``.
6767

6868

69-
Version 0.5.2 (unreleased)
69+
Version 0.5.3 (unreleased)
7070
==========================
7171

7272

73+
Language changes
74+
----------------
75+
76+
* Added: individual bits of the same signal can now be assigned from different modules or domains.
77+
78+
79+
Version 0.5.2
80+
=============
81+
82+
7383
Standard library changes
7484
------------------------
7585

docs/amaranth/latest/contrib.html

+3-3
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
<meta charset="utf-8" /><meta name="viewport" content="width=device-width, initial-scale=1" />
55

66
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
7-
<title>Contributing &mdash; Amaranth language &amp; toolchain 0.6.0.dev56 documentation</title>
7+
<title>Contributing &mdash; Amaranth language &amp; toolchain 0.6.0.dev57 documentation</title>
88
<link rel="stylesheet" type="text/css" href="_static/pygments.css?v=80d5e7a1" />
99
<link rel="stylesheet" type="text/css" href="_static/css/theme.css?v=19f00094" />
1010
<link rel="stylesheet" type="text/css" href="_static/platformpicker.css" />
@@ -17,7 +17,7 @@
1717

1818
<script src="_static/jquery.js?v=5d32c60e"></script>
1919
<script src="_static/_sphinx_javascript_frameworks_compat.js?v=2cd50e6c"></script>
20-
<script data-url_root="./" id="documentation_options" src="_static/documentation_options.js?v=6de5cc12"></script>
20+
<script data-url_root="./" id="documentation_options" src="_static/documentation_options.js?v=c99d480b"></script>
2121
<script src="_static/doctools.js?v=888ff710"></script>
2222
<script src="_static/sphinx_highlight.js?v=4825356b"></script>
2323
<script src="_static/platformpicker.js"></script>
@@ -40,7 +40,7 @@
4040
<img src="_static/logo.png" class="logo" alt="Logo"/>
4141
</a>
4242
<div class="version">
43-
0.6.0.dev56
43+
0.6.0.dev57
4444
</div>
4545
<div role="search">
4646
<form id="rtd-search-form" class="wy-form" action="search.html" method="get">

docs/amaranth/latest/cover.html

+3-3
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
<meta charset="utf-8" /><meta name="viewport" content="width=device-width, initial-scale=1" />
55

66
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
7-
<title>Amaranth project documentation &mdash; Amaranth language &amp; toolchain 0.6.0.dev56 documentation</title>
7+
<title>Amaranth project documentation &mdash; Amaranth language &amp; toolchain 0.6.0.dev57 documentation</title>
88
<link rel="stylesheet" type="text/css" href="_static/pygments.css?v=80d5e7a1" />
99
<link rel="stylesheet" type="text/css" href="_static/css/theme.css?v=19f00094" />
1010
<link rel="stylesheet" type="text/css" href="_static/platformpicker.css" />
@@ -17,7 +17,7 @@
1717

1818
<script src="_static/jquery.js?v=5d32c60e"></script>
1919
<script src="_static/_sphinx_javascript_frameworks_compat.js?v=2cd50e6c"></script>
20-
<script data-url_root="./" id="documentation_options" src="_static/documentation_options.js?v=6de5cc12"></script>
20+
<script data-url_root="./" id="documentation_options" src="_static/documentation_options.js?v=c99d480b"></script>
2121
<script src="_static/doctools.js?v=888ff710"></script>
2222
<script src="_static/sphinx_highlight.js?v=4825356b"></script>
2323
<script src="_static/platformpicker.js"></script>
@@ -40,7 +40,7 @@
4040
<img src="_static/logo.png" class="logo" alt="Logo"/>
4141
</a>
4242
<div class="version">
43-
0.6.0.dev56
43+
0.6.0.dev57
4444
</div>
4545
<div role="search">
4646
<form id="rtd-search-form" class="wy-form" action="search.html" method="get">

docs/amaranth/latest/genindex.html

+3-3
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
<head>
44
<meta charset="utf-8" />
55
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
6-
<title>Index &mdash; Amaranth language &amp; toolchain 0.6.0.dev56 documentation</title>
6+
<title>Index &mdash; Amaranth language &amp; toolchain 0.6.0.dev57 documentation</title>
77
<link rel="stylesheet" type="text/css" href="_static/pygments.css?v=80d5e7a1" />
88
<link rel="stylesheet" type="text/css" href="_static/css/theme.css?v=19f00094" />
99
<link rel="stylesheet" type="text/css" href="_static/platformpicker.css" />
@@ -16,7 +16,7 @@
1616

1717
<script src="_static/jquery.js?v=5d32c60e"></script>
1818
<script src="_static/_sphinx_javascript_frameworks_compat.js?v=2cd50e6c"></script>
19-
<script data-url_root="./" id="documentation_options" src="_static/documentation_options.js?v=6de5cc12"></script>
19+
<script data-url_root="./" id="documentation_options" src="_static/documentation_options.js?v=c99d480b"></script>
2020
<script src="_static/doctools.js?v=888ff710"></script>
2121
<script src="_static/sphinx_highlight.js?v=4825356b"></script>
2222
<script src="_static/platformpicker.js"></script>
@@ -38,7 +38,7 @@
3838
<img src="_static/logo.png" class="logo" alt="Logo"/>
3939
</a>
4040
<div class="version">
41-
0.6.0.dev56
41+
0.6.0.dev57
4242
</div>
4343
<div role="search">
4444
<form id="rtd-search-form" class="wy-form" action="search.html" method="get">

docs/amaranth/latest/guide.html

+9-13
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
<meta charset="utf-8" /><meta name="viewport" content="width=device-width, initial-scale=1" />
55

66
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
7-
<title>Language guide &mdash; Amaranth language &amp; toolchain 0.6.0.dev56 documentation</title>
7+
<title>Language guide &mdash; Amaranth language &amp; toolchain 0.6.0.dev57 documentation</title>
88
<link rel="stylesheet" type="text/css" href="_static/pygments.css?v=80d5e7a1" />
99
<link rel="stylesheet" type="text/css" href="_static/css/theme.css?v=19f00094" />
1010
<link rel="stylesheet" type="text/css" href="_static/platformpicker.css" />
@@ -17,7 +17,7 @@
1717

1818
<script src="_static/jquery.js?v=5d32c60e"></script>
1919
<script src="_static/_sphinx_javascript_frameworks_compat.js?v=2cd50e6c"></script>
20-
<script data-url_root="./" id="documentation_options" src="_static/documentation_options.js?v=6de5cc12"></script>
20+
<script data-url_root="./" id="documentation_options" src="_static/documentation_options.js?v=c99d480b"></script>
2121
<script src="_static/doctools.js?v=888ff710"></script>
2222
<script src="_static/sphinx_highlight.js?v=4825356b"></script>
2323
<script src="_static/platformpicker.js"></script>
@@ -41,7 +41,7 @@
4141
<img src="_static/logo.png" class="logo" alt="Logo"/>
4242
</a>
4343
<div class="version">
44-
0.6.0.dev56
44+
0.6.0.dev57
4545
</div>
4646
<div role="search">
4747
<form id="rtd-search-form" class="wy-form" action="search.html" method="get">
@@ -985,25 +985,21 @@ <h3>Signal shapes<a class="headerlink" href="#signal-shapes" title="Permalink to
985985
<span class="n">add_toggle</span><span class="p">(</span><span class="mi">2</span><span class="p">)</span>
986986
</pre></div>
987987
</div>
988-
<p id="lang-signalgranularity">Every signal included in the target of an assignment becomes a part of the domain, or equivalently, <em>driven</em> by that domain. A signal can be either undriven or driven by exactly one domain; it is an error to add two assignments to the same signal to two different domains:</p>
988+
<p id="lang-signalgranularity">Every signal bit included in the target of an assignment becomes a part of the domain, or equivalently, <em>driven</em> by that domain. A signal bit can be either undriven or driven by exactly one domain; it is an error to add two assignments to the same signal bit to two different domains:</p>
989989
<div class="highlight-pycon notranslate"><div class="highlight"><pre><span></span><span class="gp">&gt;&gt;&gt; </span><span class="n">d</span> <span class="o">=</span> <span class="n">Signal</span><span class="p">()</span>
990990
<span class="gp">&gt;&gt;&gt; </span><span class="n">m</span><span class="o">.</span><span class="n">d</span><span class="o">.</span><span class="n">comb</span> <span class="o">+=</span> <span class="n">d</span><span class="o">.</span><span class="n">eq</span><span class="p">(</span><span class="mi">1</span><span class="p">)</span>
991991
<span class="gp">&gt;&gt;&gt; </span><span class="n">m</span><span class="o">.</span><span class="n">d</span><span class="o">.</span><span class="n">sync</span> <span class="o">+=</span> <span class="n">d</span><span class="o">.</span><span class="n">eq</span><span class="p">(</span><span class="mi">0</span><span class="p">)</span>
992992
<span class="gt">Traceback (most recent call last):</span>
993993
<span class="w"> </span><span class="c">...</span>
994-
<span class="gr">amaranth.hdl.dsl.SyntaxError</span>: <span class="n">Driver-driver conflict: trying to drive (sig d) from d.sync, but it is already driven from d.comb</span>
994+
<span class="gr">amaranth.hdl.dsl.SyntaxError</span>: <span class="n">Driver-driver conflict: trying to drive (sig d) bit 0 from d.sync, but it is already driven from d.comb</span>
995995
</pre></div>
996996
</div>
997-
<div class="admonition note">
998-
<p class="admonition-title">Note</p>
999-
<p>Clearly, Amaranth code that drives a single bit of a signal from two different domains does not describe a meaningful circuit. However, driving two different bits of a signal from two different domains does not inherently cause such a conflict. Would Amaranth accept the following code?</p>
1000-
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">e</span> <span class="o">=</span> <span class="n">Signal</span><span class="p">(</span><span class="mi">2</span><span class="p">)</span>
1001-
<span class="n">m</span><span class="o">.</span><span class="n">d</span><span class="o">.</span><span class="n">comb</span> <span class="o">+=</span> <span class="n">e</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">eq</span><span class="p">(</span><span class="mi">0</span><span class="p">)</span>
1002-
<span class="n">m</span><span class="o">.</span><span class="n">d</span><span class="o">.</span><span class="n">sync</span> <span class="o">+=</span> <span class="n">e</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span><span class="o">.</span><span class="n">eq</span><span class="p">(</span><span class="mi">1</span><span class="p">)</span>
997+
<p>However, two different bits of a signal can be driven from two different domains without an issue:</p>
998+
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="n">e</span> <span class="o">=</span> <span class="n">Signal</span><span class="p">(</span><span class="mi">2</span><span class="p">)</span>
999+
<span class="n">m</span><span class="o">.</span><span class="n">d</span><span class="o">.</span><span class="n">comb</span> <span class="o">+=</span> <span class="n">e</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">eq</span><span class="p">(</span><span class="mi">1</span><span class="p">)</span>
1000+
<span class="n">m</span><span class="o">.</span><span class="n">d</span><span class="o">.</span><span class="n">sync</span> <span class="o">+=</span> <span class="n">e</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span><span class="o">.</span><span class="n">eq</span><span class="p">(</span><span class="mi">0</span><span class="p">)</span>
10031001
</pre></div>
10041002
</div>
1005-
<p>The answer is no. While this kind of code is occasionally useful, rejecting it greatly simplifies backends, simulators, and analyzers.</p>
1006-
</div>
10071003
<p>In addition to assignments, <a class="reference internal" href="#lang-assert"><span class="std std-ref">assertions</span></a> and <a class="reference internal" href="#lang-print"><span class="std std-ref">debug prints</span></a> can be added using the same syntax.</p>
10081004
</section>
10091005
<section id="assignment-order">

docs/amaranth/latest/guide.rst

+7-11
Original file line numberDiff line numberDiff line change
@@ -940,7 +940,7 @@ If the name of a domain is not known upfront, the ``m.d["<domain>"] += ...`` syn
940940

941941
.. _lang-signalgranularity:
942942

943-
Every signal included in the target of an assignment becomes a part of the domain, or equivalently, *driven* by that domain. A signal can be either undriven or driven by exactly one domain; it is an error to add two assignments to the same signal to two different domains:
943+
Every signal bit included in the target of an assignment becomes a part of the domain, or equivalently, *driven* by that domain. A signal bit can be either undriven or driven by exactly one domain; it is an error to add two assignments to the same signal bit to two different domains:
944944

945945
.. doctest::
946946

@@ -949,19 +949,15 @@ Every signal included in the target of an assignment becomes a part of the domai
949949
>>> m.d.sync += d.eq(0)
950950
Traceback (most recent call last):
951951
...
952-
amaranth.hdl.dsl.SyntaxError: Driver-driver conflict: trying to drive (sig d) from d.sync, but it is already driven from d.comb
952+
amaranth.hdl.dsl.SyntaxError: Driver-driver conflict: trying to drive (sig d) bit 0 from d.sync, but it is already driven from d.comb
953953

954-
.. note::
955-
956-
Clearly, Amaranth code that drives a single bit of a signal from two different domains does not describe a meaningful circuit. However, driving two different bits of a signal from two different domains does not inherently cause such a conflict. Would Amaranth accept the following code?
954+
However, two different bits of a signal can be driven from two different domains without an issue:
957955

958-
.. code-block::
959-
960-
e = Signal(2)
961-
m.d.comb += e[0].eq(0)
962-
m.d.sync += e[1].eq(1)
956+
.. testcode::
963957

964-
The answer is no. While this kind of code is occasionally useful, rejecting it greatly simplifies backends, simulators, and analyzers.
958+
e = Signal(2)
959+
m.d.comb += e[0].eq(1)
960+
m.d.sync += e[1].eq(0)
965961

966962
In addition to assignments, :ref:`assertions <lang-assert>` and :ref:`debug prints <lang-print>` can be added using the same syntax.
967963

docs/amaranth/latest/index.html

+5-4
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
<meta charset="utf-8" /><meta name="viewport" content="width=device-width, initial-scale=1" />
55

66
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
7-
<title>Language &amp; toolchain &mdash; Amaranth language &amp; toolchain 0.6.0.dev56 documentation</title>
7+
<title>Language &amp; toolchain &mdash; Amaranth language &amp; toolchain 0.6.0.dev57 documentation</title>
88
<link rel="stylesheet" type="text/css" href="_static/pygments.css?v=80d5e7a1" />
99
<link rel="stylesheet" type="text/css" href="_static/css/theme.css?v=19f00094" />
1010
<link rel="stylesheet" type="text/css" href="_static/platformpicker.css" />
@@ -17,7 +17,7 @@
1717

1818
<script src="_static/jquery.js?v=5d32c60e"></script>
1919
<script src="_static/_sphinx_javascript_frameworks_compat.js?v=2cd50e6c"></script>
20-
<script data-url_root="./" id="documentation_options" src="_static/documentation_options.js?v=6de5cc12"></script>
20+
<script data-url_root="./" id="documentation_options" src="_static/documentation_options.js?v=c99d480b"></script>
2121
<script src="_static/doctools.js?v=888ff710"></script>
2222
<script src="_static/sphinx_highlight.js?v=4825356b"></script>
2323
<script src="_static/platformpicker.js"></script>
@@ -41,7 +41,7 @@
4141
<img src="_static/logo.png" class="logo" alt="Logo"/>
4242
</a>
4343
<div class="version">
44-
0.6.0.dev56
44+
0.6.0.dev57
4545
</div>
4646
<div role="search">
4747
<form id="rtd-search-form" class="wy-form" action="search.html" method="get">
@@ -189,7 +189,8 @@ <h1>Language &amp; toolchain<a class="headerlink" href="#language-toolchain" tit
189189
<li class="toctree-l1"><a class="reference internal" href="changes.html">Changelog</a><ul>
190190
<li class="toctree-l2"><a class="reference internal" href="changes.html#documentation-for-past-releases">Documentation for past releases</a></li>
191191
<li class="toctree-l2"><a class="reference internal" href="changes.html#version-0-6-0-unreleased">Version 0.6.0 (unreleased)</a></li>
192-
<li class="toctree-l2"><a class="reference internal" href="changes.html#version-0-5-2-unreleased">Version 0.5.2 (unreleased)</a></li>
192+
<li class="toctree-l2"><a class="reference internal" href="changes.html#version-0-5-3-unreleased">Version 0.5.3 (unreleased)</a></li>
193+
<li class="toctree-l2"><a class="reference internal" href="changes.html#version-0-5-2">Version 0.5.2</a></li>
193194
<li class="toctree-l2"><a class="reference internal" href="changes.html#version-0-5-1">Version 0.5.1</a></li>
194195
<li class="toctree-l2"><a class="reference internal" href="changes.html#version-0-5-0">Version 0.5.0</a></li>
195196
<li class="toctree-l2"><a class="reference internal" href="changes.html#version-0-4-0">Version 0.4.0</a></li>

0 commit comments

Comments
 (0)