<feed xmlns='http://www.w3.org/2005/Atom'>
<title>chiselX/core/src/main/scala/chisel3/internal, branch master</title>
<subtitle>Chisel with SFC compatibility</subtitle>
<link rel='alternate' type='text/html' href='https://git.0x7felf.com/chiselX/'/>
<entry>
<title>Promote ChiselEnum user APIs from experimental (backport #2929) (#2931)</title>
<updated>2023-01-11T22:40:32+00:00</updated>
<author>
<name>mergify[bot]</name>
</author>
<published>2023-01-11T22:40:32+00:00</published>
<link rel='alternate' type='text/html' href='https://git.0x7felf.com/chiselX/commit/?id=d4570fb9d29371c35641ba79b76662f99677f192'/>
<id>d4570fb9d29371c35641ba79b76662f99677f192</id>
<content type='text'>
* Promote ChiselEnum user APIs from experimental (#2929)

They are commonly used and if we were ever to change them, we will need
to go through a deprecation process anyway.

Note that the EnumAnnotations remain in chisel3.experimental because,
like all Chisel annotation support, they are slated to be deprecated and
removed.

(cherry picked from commit 424e9446f1675fe0168e22bdfbbe85db997376e6)

# Conflicts:
#	docs/src/cookbooks/verilog-vs-chisel.md
#	docs/src/explanations/chisel-enum.md

* Maintain binary compatbility, use aliases in chisel3 package

* Deprecate the actual classes in chisel3.experimental
* Also fix backport conflicts

Co-authored-by: Jack Koenig &lt;koenig@sifive.com&gt;</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
* Promote ChiselEnum user APIs from experimental (#2929)

They are commonly used and if we were ever to change them, we will need
to go through a deprecation process anyway.

Note that the EnumAnnotations remain in chisel3.experimental because,
like all Chisel annotation support, they are slated to be deprecated and
removed.

(cherry picked from commit 424e9446f1675fe0168e22bdfbbe85db997376e6)

# Conflicts:
#	docs/src/cookbooks/verilog-vs-chisel.md
#	docs/src/explanations/chisel-enum.md

* Maintain binary compatbility, use aliases in chisel3 package

* Deprecate the actual classes in chisel3.experimental
* Also fix backport conflicts

Co-authored-by: Jack Koenig &lt;koenig@sifive.com&gt;</pre>
</div>
</content>
</entry>
<entry>
<title>Check for Vec subaccess in NamedComponent and throw a nicer error. (backport #2907) (#2928)</title>
<updated>2023-01-10T07:19:45+00:00</updated>
<author>
<name>mergify[bot]</name>
</author>
<published>2023-01-10T07:19:45+00:00</published>
<link rel='alternate' type='text/html' href='https://git.0x7felf.com/chiselX/commit/?id=9a7945fd86fcad02da0556d8f4a30daa4b005f9d'/>
<id>9a7945fd86fcad02da0556d8f4a30daa4b005f9d</id>
<content type='text'>
* Check for Vec subaccess in NamedComponent and throw a nicer error. (#2907)

This would previously end up throwing an exception later, when trying
to create a component name and realizing that it was invalid. Instead,
this detects Vec subaccesses early, and gives a more precise error and
suggestion.

(cherry picked from commit d8c30961c7b293ee19024a487698630367ee71c6)

# Conflicts:
#	core/src/main/scala/chisel3/internal/Builder.scala

* Resolve backport conflicts

Co-authored-by: Mike Urbach &lt;mikeurbach@gmail.com&gt;</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
* Check for Vec subaccess in NamedComponent and throw a nicer error. (#2907)

This would previously end up throwing an exception later, when trying
to create a component name and realizing that it was invalid. Instead,
this detects Vec subaccesses early, and gives a more precise error and
suggestion.

(cherry picked from commit d8c30961c7b293ee19024a487698630367ee71c6)

# Conflicts:
#	core/src/main/scala/chisel3/internal/Builder.scala

* Resolve backport conflicts

Co-authored-by: Mike Urbach &lt;mikeurbach@gmail.com&gt;</pre>
</div>
</content>
</entry>
<entry>
<title>Improve performance of ChiselEnum annotations (#2923) (#2927)</title>
<updated>2023-01-09T22:57:22+00:00</updated>
<author>
<name>mergify[bot]</name>
</author>
<published>2023-01-09T22:57:22+00:00</published>
<link rel='alternate' type='text/html' href='https://git.0x7felf.com/chiselX/commit/?id=12785c6b2b8e378a5aa9db1833df7486d8f2a486'/>
<id>12785c6b2b8e378a5aa9db1833df7486d8f2a486</id>
<content type='text'>
ChiselEnums check if they should create annotations every time an
instance of them is bound. Because so many annotations would be created,
they check to see if an equivalent annotation has already been added to
the annotations. Previously, this used a linear search of the
annotations, now it uses a HashSet.

(cherry picked from commit 96bde092e449281dc70ebdb05f21695468c3e5fa)

Co-authored-by: Jack Koenig &lt;koenig@sifive.com&gt;</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
ChiselEnums check if they should create annotations every time an
instance of them is bound. Because so many annotations would be created,
they check to see if an equivalent annotation has already been added to
the annotations. Previously, this used a linear search of the
annotations, now it uses a HashSet.

(cherry picked from commit 96bde092e449281dc70ebdb05f21695468c3e5fa)

Co-authored-by: Jack Koenig &lt;koenig@sifive.com&gt;</pre>
</div>
</content>
</entry>
<entry>
<title>Implement compressed Namespace (backport #2856) (#2860)</title>
<updated>2022-11-29T17:24:38+00:00</updated>
<author>
<name>mergify[bot]</name>
</author>
<published>2022-11-29T17:24:38+00:00</published>
<link rel='alternate' type='text/html' href='https://git.0x7felf.com/chiselX/commit/?id=c21f31d09f2511497cea5cb03bd6ddba440c55fe'/>
<id>c21f31d09f2511497cea5cb03bd6ddba440c55fe</id>
<content type='text'>
* Implement compressed Namespace (#2856)

The namespace disambiguates requests for the same name with _&lt;idx&gt;.
Rather than storing every disambiguated name in the underlying HashMap,
it now only stores the base along with the "next available" index. This
makes the logic for checking if a name is already contained in the
namespace slightly more sophisticated because users can name things in a
way that will collide with disambiguated names from a common substring.

For example, in naming the sequence "foo", "foo", "foo_1", the 2nd "foo"
takes the name "foo_1" so the following "foo_1" gets disambiguated to
"foo_1_1". But since we compressed that original "foo_1" into the same
HashMap entry as just "foo", we have to do a form of "prefix checking"
whenever naming something that ends in "_&lt;idx&gt;".

In practice, the saved memory allocations more than make up for the more
complicated logic to disambiguate names because the common case is still
fast.

(cherry picked from commit 1654d87a02ca799bf12805a611a91e7524d49843)

# Conflicts:
#	core/src/main/scala/chisel3/internal/Builder.scala

* Resolve backport conflicts

Co-authored-by: Jack Koenig &lt;koenig@sifive.com&gt;</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
* Implement compressed Namespace (#2856)

The namespace disambiguates requests for the same name with _&lt;idx&gt;.
Rather than storing every disambiguated name in the underlying HashMap,
it now only stores the base along with the "next available" index. This
makes the logic for checking if a name is already contained in the
namespace slightly more sophisticated because users can name things in a
way that will collide with disambiguated names from a common substring.

For example, in naming the sequence "foo", "foo", "foo_1", the 2nd "foo"
takes the name "foo_1" so the following "foo_1" gets disambiguated to
"foo_1_1". But since we compressed that original "foo_1" into the same
HashMap entry as just "foo", we have to do a form of "prefix checking"
whenever naming something that ends in "_&lt;idx&gt;".

In practice, the saved memory allocations more than make up for the more
complicated logic to disambiguate names because the common case is still
fast.

(cherry picked from commit 1654d87a02ca799bf12805a611a91e7524d49843)

# Conflicts:
#	core/src/main/scala/chisel3/internal/Builder.scala

* Resolve backport conflicts

Co-authored-by: Jack Koenig &lt;koenig@sifive.com&gt;</pre>
</div>
</content>
</entry>
<entry>
<title>Change RawModule._commands to a VectorBuilder (backport #2839) (#2841)</title>
<updated>2022-11-11T01:40:53+00:00</updated>
<author>
<name>mergify[bot]</name>
</author>
<published>2022-11-11T01:40:53+00:00</published>
<link rel='alternate' type='text/html' href='https://git.0x7felf.com/chiselX/commit/?id=c8046636a25474be4c547c6fe9c6d742ea7b1d13'/>
<id>c8046636a25474be4c547c6fe9c6d742ea7b1d13</id>
<content type='text'>
* Change RawModule._commands to a VectorBuilder (#2839)

* Change RawModule._commands to a VectorBuilder

Use the resulting Vector to build the underlying Component's commands
and then use those instead of copying the original ArrayBuffer when
iterating on commands. Previously, the Component was using a List to
hold the commands which is particularly memory inefficient, especially
for large modules.

* Optimize Converter's handling of Seq[Command]

It previously converted the Commands to a List (which, while not
captured in the type system, they were already a List) and then used
head and tail iteration. This is less efficient with the new underlying
Vector implementation.

(cherry picked from commit 48a1ef0a3872c6b68d46145764d977926923a270)

* Waive false binary compatibility failures

Co-authored-by: Jack Koenig &lt;koenig@sifive.com&gt;
Co-authored-by: mergify[bot] &lt;37929162+mergify[bot]@users.noreply.github.com&gt;</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
* Change RawModule._commands to a VectorBuilder (#2839)

* Change RawModule._commands to a VectorBuilder

Use the resulting Vector to build the underlying Component's commands
and then use those instead of copying the original ArrayBuffer when
iterating on commands. Previously, the Component was using a List to
hold the commands which is particularly memory inefficient, especially
for large modules.

* Optimize Converter's handling of Seq[Command]

It previously converted the Commands to a List (which, while not
captured in the type system, they were already a List) and then used
head and tail iteration. This is less efficient with the new underlying
Vector implementation.

(cherry picked from commit 48a1ef0a3872c6b68d46145764d977926923a270)

* Waive false binary compatibility failures

Co-authored-by: Jack Koenig &lt;koenig@sifive.com&gt;
Co-authored-by: mergify[bot] &lt;37929162+mergify[bot]@users.noreply.github.com&gt;</pre>
</div>
</content>
</entry>
<entry>
<title>Switch to using experimental trait for OpaqueTypes (backport #2783) (#2836)</title>
<updated>2022-11-08T17:27:07+00:00</updated>
<author>
<name>mergify[bot]</name>
</author>
<published>2022-11-08T17:27:07+00:00</published>
<link rel='alternate' type='text/html' href='https://git.0x7felf.com/chiselX/commit/?id=bfa9f7465e6069b1e624126f9e14245b69e7c0a9'/>
<id>bfa9f7465e6069b1e624126f9e14245b69e7c0a9</id>
<content type='text'>
* Switch to using experimental trait for OpaqueTypes (#2783)

This makes it more clear that the feature is experimental. Users may
still override the opaqueType method for more dynamic control over when
instances of a given Record are OpaqueTypes or not, but they are
discouraged from doing so.

(cherry picked from commit 7525dc71ccc2050d8e4a68b38f3b76920ba693fc)

* Fix cloneType in RecordSpec

Co-authored-by: Jack Koenig &lt;koenig@sifive.com&gt;</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
* Switch to using experimental trait for OpaqueTypes (#2783)

This makes it more clear that the feature is experimental. Users may
still override the opaqueType method for more dynamic control over when
instances of a given Record are OpaqueTypes or not, but they are
discouraged from doing so.

(cherry picked from commit 7525dc71ccc2050d8e4a68b38f3b76920ba693fc)

* Fix cloneType in RecordSpec

Co-authored-by: Jack Koenig &lt;koenig@sifive.com&gt;</pre>
</div>
</content>
</entry>
<entry>
<title>Bugfix converter clearing flips (backport #2788) (#2832)</title>
<updated>2022-11-07T19:13:49+00:00</updated>
<author>
<name>mergify[bot]</name>
</author>
<published>2022-11-07T19:13:49+00:00</published>
<link rel='alternate' type='text/html' href='https://git.0x7felf.com/chiselX/commit/?id=76ada881d077118384907f498576b3b338291ff6'/>
<id>76ada881d077118384907f498576b3b338291ff6</id>
<content type='text'>
* Bugfix converter clearing flips (#2788)

* Bugfix: Output on Vec of bundle with mixed field orientations
* Bugfix OpaqueTypes clearing flips

(cherry picked from commit f05bff1a337589bafebd08783bb0f6a72092a95a)

# Conflicts:
#	src/test/scala/chiselTests/Direction.scala

* Resolve backport conflicts

Co-authored-by: Adam Izraelevitz &lt;adam.izraelevitz@sifive.com&gt;
Co-authored-by: Jack Koenig &lt;koenig@sifive.com&gt;
Co-authored-by: mergify[bot] &lt;37929162+mergify[bot]@users.noreply.github.com&gt;</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
* Bugfix converter clearing flips (#2788)

* Bugfix: Output on Vec of bundle with mixed field orientations
* Bugfix OpaqueTypes clearing flips

(cherry picked from commit f05bff1a337589bafebd08783bb0f6a72092a95a)

# Conflicts:
#	src/test/scala/chiselTests/Direction.scala

* Resolve backport conflicts

Co-authored-by: Adam Izraelevitz &lt;adam.izraelevitz@sifive.com&gt;
Co-authored-by: Jack Koenig &lt;koenig@sifive.com&gt;
Co-authored-by: mergify[bot] &lt;37929162+mergify[bot]@users.noreply.github.com&gt;</pre>
</div>
</content>
</entry>
<entry>
<title>Fix for &lt;&gt; to BlackBox.IO with Compatibility Bundles (#2801) (#2803)</title>
<updated>2022-10-23T22:27:06+00:00</updated>
<author>
<name>mergify[bot]</name>
</author>
<published>2022-10-23T22:27:06+00:00</published>
<link rel='alternate' type='text/html' href='https://git.0x7felf.com/chiselX/commit/?id=f86c1ff7b39146f23cd1959bcc63dcb3b0b27125'/>
<id>f86c1ff7b39146f23cd1959bcc63dcb3b0b27125</id>
<content type='text'>
MonoConnect.traceFlow now properly handles coerced directions.
Also minor improvement to getClassName especially useful in test case printf debugging.

(cherry picked from commit 3aba755bdcf996c0fbd846d13268fd6641b29e96)

Co-authored-by: Megan Wachs &lt;megan@sifive.com&gt;</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
MonoConnect.traceFlow now properly handles coerced directions.
Also minor improvement to getClassName especially useful in test case printf debugging.

(cherry picked from commit 3aba755bdcf996c0fbd846d13268fd6641b29e96)

Co-authored-by: Megan Wachs &lt;megan@sifive.com&gt;</pre>
</div>
</content>
</entry>
<entry>
<title>Don't modify the Builder prefix if reinvoking suggestName on a Data (backport #2789) (#2790)</title>
<updated>2022-10-19T21:28:34+00:00</updated>
<author>
<name>mergify[bot]</name>
</author>
<published>2022-10-19T21:28:34+00:00</published>
<link rel='alternate' type='text/html' href='https://git.0x7felf.com/chiselX/commit/?id=80b3b28f451efa85be50994f732599f043f83d86'/>
<id>80b3b28f451efa85be50994f732599f043f83d86</id>
<content type='text'>
* Only set the chisel3 Builder prefix during the first invocation of suggestName

(cherry picked from commit b684506abab2f7b99d56181d548cb8119d317323)

# Conflicts:
#	core/src/main/scala/chisel3/internal/Builder.scala

* Add simple test to show bug fix

(cherry picked from commit 255068b105de77a045a0016e3a157b52a81c86d6)

* Fix merge conflict

* Fix test to not use Hardware inside a bundle for prefixing

Co-authored-by: Jared Barocsi &lt;jared.barocsi@sifive.com&gt;</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
* Only set the chisel3 Builder prefix during the first invocation of suggestName

(cherry picked from commit b684506abab2f7b99d56181d548cb8119d317323)

# Conflicts:
#	core/src/main/scala/chisel3/internal/Builder.scala

* Add simple test to show bug fix

(cherry picked from commit 255068b105de77a045a0016e3a157b52a81c86d6)

* Fix merge conflict

* Fix test to not use Hardware inside a bundle for prefixing

Co-authored-by: Jared Barocsi &lt;jared.barocsi@sifive.com&gt;</pre>
</div>
</content>
</entry>
<entry>
<title>Fix OpaqueSlot handling of contextual names (#2708) (#2712)</title>
<updated>2022-08-29T21:05:56+00:00</updated>
<author>
<name>mergify[bot]</name>
</author>
<published>2022-08-29T21:05:56+00:00</published>
<link rel='alternate' type='text/html' href='https://git.0x7felf.com/chiselX/commit/?id=9f1484572e2e4185e87a9cfb03b253870636c12c'/>
<id>9f1484572e2e4185e87a9cfb03b253870636c12c</id>
<content type='text'>
We need to ensure that contextual names stay contextual (ie. sensitive
to the module context which is important for naming ports).

(cherry picked from commit cee255216c4a1bb658a2d8ddc03d966ce7ffb877)

Co-authored-by: Jack Koenig &lt;koenig@sifive.com&gt;</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
We need to ensure that contextual names stay contextual (ie. sensitive
to the module context which is important for naming ports).

(cherry picked from commit cee255216c4a1bb658a2d8ddc03d966ce7ffb877)

Co-authored-by: Jack Koenig &lt;koenig@sifive.com&gt;</pre>
</div>
</content>
</entry>
</feed>
