1. Dec 04, 2022
    • Jack Koenig's avatar
    • Jack Koenig's avatar
      Optimize _ids (#2866) · f88dc626
      Jack Koenig authored
      * Don't copy _ids to a Seq just to Iterate on them
      
      Saves a copy of a large data structure.
      
      * Only add Data to _ids when the binding is constrained
      
      ConstrainedBinding means that the bound Data is scoped to a module.
      Since _ids are used for naming of signals within a module, there is no
      reason to add Unconstrained Data to the _ids of the Module they were
      constructed during. Unconstrained Data include things like literals and
      children of Aggregates (which sort of are constrained to a Module but
      only via their parent, they are not directly named by the module).
      f88dc626
  2. Dec 02, 2022
  3. Dec 01, 2022
  4. Nov 30, 2022
  5. Nov 29, 2022
    • Jack Koenig's avatar
      Implement compressed Namespace (#2856) · 1654d87a
      Jack Koenig authored
      The namespace disambiguates requests for the same name with _<idx>.
      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 "_<idx>".
      
      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.
      1654d87a
  6. Nov 19, 2022
    • Jack Koenig's avatar
      Make PriorityMux stack safe (#2854) · 269ce472
      Jack Koenig authored
      It used to be implemented with recursion, now it's implemented with a
      stack safe reverse and foldLeft.
      
      Also there were no tests for PriorityMux so I added one which helps
      prove the change is functionally correct.
      269ce472
  7. Nov 17, 2022
  8. Nov 15, 2022
  9. Nov 11, 2022
  10. Nov 09, 2022
  11. Nov 08, 2022
  12. Nov 06, 2022
  13. Nov 05, 2022
    • Jack Koenig's avatar
      Add PartialDataView.supertype (#2826) · 251d454a
      Jack Koenig authored
      This factory method makes it easy to create PartialDataViews from a
      Bundle type to its supertype. Because of the typing relationship, there
      is no need to provide a mapping between fields. The only thing necessary
      is to provide a function for constructing an instance of the supertype
      from an instance of the subtype.
      251d454a
  14. Nov 02, 2022
  15. Oct 25, 2022
  16. Oct 24, 2022
  17. Oct 22, 2022
  18. Oct 20, 2022
  19. Oct 19, 2022
  20. Oct 18, 2022
    • Schuyler Eldridge's avatar
      Add traceNameV2 for backwards compat. of traceName (#2784) · 47b7227e
      Schuyler Eldridge authored
      
      
      Add utilities to enable backwards compatibility of the Trace.traceName
      API to Chisel 3.5.x.  This adds a Trace.traceNameV2 utility which
      aliases to Trace.traceName.  This also removes the TraceNameAnnotation
      and renames it TraceAnnotation.  In 3.5.x, traceName will point at
      TraceNameAnnotation (which has don't touch behavior) and will be
      deprecated telling people to use traceNameV2 which will point at
      TraceAnnotation (which does not have don't touch behavior).  This will
      require fixups to the backport associated with this PR.
      
      Signed-off-by: default avatarSchuyler Eldridge <schuyler.eldridge@sifive.com>
      47b7227e
    • Jack Koenig's avatar
      Add opt-in AutoCloneType for Records (#2781) · a234fd48
      Jack Koenig authored
      There is a new trait, chisel3.experimental.AutoCloneType that is mixed
      in to Bundle and can optionally be mixed in to user-defined Records. The
      compiler plugin prints a deprecation warning on any user-defined
      implementation of cloneType, telling the user to mix in AutoCloneType
      before upgrading to 3.6.
      a234fd48
  21. Oct 14, 2022