1. May 24, 2019
    • Jim Lawson's avatar
      Respond to comments: · bbadbc3a
      Jim Lawson authored
      Rename `TagRequiresBackend` to `TagRequiresSimulator`.
      Eliminate Java `RequiresBackend` annotation - the ScalaTest `TagRequiresSimulator` tag may be used with either specification checks (via the `taggedAs (TagRequiresSimulator)`, or property checks (by passing it as an additional argument to the property). Examples of both are included in tests.
      Update all tests requiring a simulator with the `TagRequiresSimulator` tag.
      bbadbc3a
  2. May 23, 2019
    • Jim Lawson's avatar
      Merge branch 'master' into tagbackendtests · 67038b02
      Jim Lawson authored
      # Conflicts:
      #	src/test/scala/chiselTests/AsTypeOfTester.scala
      #	src/test/scala/chiselTests/Assert.scala
      #	src/test/scala/chiselTests/BlackBox.scala
      #	src/test/scala/chiselTests/Clock.scala
      #	src/test/scala/chiselTests/CompatibilityInteroperabilitySpec.scala
      #	src/test/scala/chiselTests/ComplexAssign.scala
      #	src/test/scala/chiselTests/Counter.scala
      #	src/test/scala/chiselTests/Decoder.scala
      #	src/test/scala/chiselTests/ExtModule.scala
      #	src/test/scala/chiselTests/Harness.scala
      #	src/test/scala/chiselTests/MultiAssign.scala
      #	src/test/scala/chiselTests/MultiClockSpec.scala
      #	src/test/scala/chiselTests/OneHotMuxSpec.scala
      #	src/test/scala/chiselTests/OptionBundle.scala
      #	src/test/scala/chiselTests/ParameterizedModule.scala
      #	src/test/scala/chiselTests/Printf.scala
      #	src/test/scala/chiselTests/Reg.scala
      #	src/test/scala/chiselTests/ReinterpretCast.scala
      #	src/test/scala/chiselTests/Stop.scala
      #	src/test/scala/chiselTests/Tbl.scala
      #	src/test/scala/chiselTests/Vec.scala
      #	src/test/scala/chiselTests/When.scala
      67038b02
  3. May 22, 2019
  4. May 21, 2019
    • Jim Lawson's avatar
      Repackagecore rebase (#1078) · 38727478
      Jim Lawson authored
      * Move Bits, Data, and BitPat to chiselFrontend/src/main/scala/chisel3
       and deal with the subsequent fallout.
      
      * Move Aggregate, Clock, Mem, Printf, Reg
      
      * Move almost all chisel3.core definitions to chisel3 or chisel3.experimental
      
      * Revive core package object to provide aliases for moved definitions.
      
      * Cleanup package definitions; eliminate ambiguous implicits
      
      * Move more definitions to experimental.
      Extract BaseModule, DataMirror, ExtModule, IO into their own files.
      
      * Put BitPat back in chisel3.util
      
      * More experimental motion - avoid multiple import definitions.
      
      * Add experimental.FixedPoint alias
      
      * Add EnumType definition to core package.
      Update deprecated messages to refer to correct object
      
      * Move FixedPoint into the experimental package (but keep it in Bits.scala).
      
      * Add missing implicits to core/package - compatibility
      
      * Cleanup: update ScalaDoc references; remove unused imports
      
      * Add Reset alias to core/package
      
      * Use common 3.2 version in deprecation warning
      
      * Move Binding from core to internal.
      
      * Optimize imports.
      
      * Repair IntelliJ's overly cleanliness.
      
      * Move Bits, Data, and BitPat to chiselFrontend/src/main/scala/chisel3
       and deal with the subsequent fallout.
      
      Move Aggregate, Clock, Mem, Printf, Reg
      
      Move almost all chisel3.core definitions to chisel3 or chisel3.experimental
      
      Revive core package object to provide aliases for moved definitions.
      
      Cleanup package definitions; eliminate ambiguous implicits
      
      Move more definitions to experimental.
      Extract BaseModule, DataMirror, ExtModule, IO into their own files.
      
      Add EnumType definition to core package.
      Update deprecated messages to refer to correct object
      
      Move FixedPoint into the experimental package (but keep it in Bits.scala).
      
      Add missing implicits to core/package - compatibility
      
      Cleanup: update ScalaDoc references; remove unused imports
      
      Use common 3.2 version in deprecation warning
      
      Move Binding from core to internal.
      
      * Change == to reference equality (eq) in Data print (#1044)
      
      * Remove @chiselName from MixedVec (#1045)
      
      * Fix enum annotations (#936)
      
      * Turned off strong enum annotations because they weren't working with Vec
      indexes
      * Add new EnumVecAnnotation for vecs of enums and vecs of bundles with
      enum fields
      * Changed Clock's width parameter back to a fixed constant value of 1
      * Fixed enum annotations for Vecs of Bundles which contain enum elements
      * Fixed usage of "when/otherwise" to use consistent style
      
      * Add Record to type hierarchy documentation
      
      * Undeprecate isLit (#1048)
      
      * move doNotDedup to experimental (#1008)
      
      * Aggregate coverage - aggregate tests but not publishing (#1040)
      
      Discover a working combination of aggregate usage to enable coverage of subproject testing but publish a single Jar.
      Use "scalastyle-test-config.xml" for scalastyle config in tests.
      Enable "_" in method names and accept method names ending in "_=".
      Re-sync scalastyle-test-config.xml with scalastyle-config.xml
      This should finally fix #772.
      
      * Check field referential equality in autoclonetype (#1047)
      
      * Allow naming annotation to work outside builder context (#1051)
      
      * Try to eliminate JVM hang due to static initialization deadlock (#1053)
      
      * Make core.DontCare private to chisel3 (#1054)
      
      Force clients to access 'DontCare' through the chisel3 package to ensure it's created as a chisel3 object and not a client object.
      
      * Ignore empty aggregates elements when binding aggregate direction (#946)
      
      Previously, including an empty aggregate in a Bundle would cause
      a MixedDirectionAggregateException because it has no elements and thus
      doesn't have a direction
      
      * Add SampleElementBinding for Vec sample elements
      * Add ActualDirection.Empty for bound empty aggregates
      
      * Detect bundle aliasing (#1050)
      
      * Implement connectFromBits in ChiselEnum (#1052)
      
      This is necessary to use ChiselEnum in aggregates where things are
      casted using .asTypeOf
      
      * Optimize imports.
      
      * Move Analog to experimental.
      
      * More repackage cleanup - reduce differences with master.
      
      * Cleanup chisel3 references.
      
      * More chisel3 reference cleanup.
      
      * Merge cleanup.
      
      * Remove unused import
      
      * Bump core deprecation to 3.3
      
      * Move DontCare back into Data.scala inside package internal
      
      * Re-indent experimental/internal package code
      
      * Move code back to original files - facilitate comparison with other branches
      
      * Some code motion, update imports, minimize master differences
      Move exceptions up to chisel3 package object - they're part of the interface.
      
      * More master diff minimization.
      
      * Try to eliminate JVM hang due to static initialization deadlock (#1053)
      
      * Ignore empty aggregates elements when binding aggregate direction (#946)
      
      Previously, including an empty aggregate in a Bundle would cause
      a MixedDirectionAggregateException because it has no elements and thus
      doesn't have a direction
      
      * Add SampleElementBinding for Vec sample elements
      * Add ActualDirection.Empty for bound empty aggregates
      
      * Implement connectFromBits in ChiselEnum (#1052)
      
      This is necessary to use ChiselEnum in aggregates where things are
      casted using .asTypeOf
      
      * Move Analog to experimental.
      
      More repackage cleanup - reduce differences with master.
      
      Cleanup chisel3 references.
      
      More chisel3 reference cleanup.
      
      * Fix wrong directionality for Vec(Flipped())
      
      Create Chisel IR Port() in a way that Converter is happy with.
      Also add more extensive test suite for future-proofing.
      
      Close #1063
      
      * Move Bits, Data, and BitPat to chiselFrontend/src/main/scala/chisel3
       and deal with the subsequent fallout.
      
      Move Aggregate, Clock, Mem, Printf, Reg
      
      Move almost all chisel3.core definitions to chisel3 or chisel3.experimental
      
      Revive core package object to provide aliases for moved definitions.
      
      Cleanup package definitions; eliminate ambiguous implicits
      
      Move more definitions to experimental.
      Extract BaseModule, DataMirror, ExtModule, IO into their own files.
      
      Put BitPat back in chisel3.util
      
      More experimental motion - avoid multiple import definitions.
      
      Add experimental.FixedPoint alias
      
      Add EnumType definition to core package.
      Update deprecated messages to refer to correct object
      
      Move FixedPoint into the experimental package (but keep it in Bits.scala).
      
      Add missing implicits to core/package - compatibility
      
      Cleanup: update ScalaDoc references; remove unused imports
      
      Add Reset alias to core/package
      
      Use common 3.2 version in deprecation warning
      
      Move Binding from core to internal.
      
      Optimize imports.
      
      Repair IntelliJ's overly cleanliness.
      
      Move Bits, Data, and BitPat to chiselFrontend/src/main/scala/chisel3
       and deal with the subsequent fallout.
      
      Move Aggregate, Clock, Mem, Printf, Reg
      
      Move almost all chisel3.core definitions to chisel3 or chisel3.experimental
      
      Revive core package object to provide aliases for moved definitions.
      
      Cleanup package definitions; eliminate ambiguous implicits
      
      Move more definitions to experimental.
      Extract BaseModule, DataMirror, ExtModule, IO into their own files.
      
      Add EnumType definition to core package.
      Update deprecated messages to refer to correct object
      
      Move FixedPoint into the experimental package (but keep it in Bits.scala).
      
      Add missing implicits to core/package - compatibility
      
      Cleanup: update ScalaDoc references; remove unused imports
      
      Use common 3.2 version in deprecation warning
      
      Move Binding from core to internal.
      
      Optimize imports.
      
      Merge cleanup.
      
      Remove unused import
      
      Bump core deprecation to 3.3
      
      Move DontCare back into Data.scala inside package internal
      
      Re-indent experimental/internal package code
      
      Move code back to original files - facilitate comparison with other branches
      
      Some code motion, update imports, minimize master differences
      Move exceptions up to chisel3 package object - they're part of the interface.
      
      More master diff minimization.
      
      Fix minor discrepancies with repackagecore-testbed
      
      * Remove redundant imports
      As part of its import updating process, IntelliJ converted some import statements to `import package.{object, _}`. Is this intended to show an explicit dependency on `package.object` and a further dependency on `package` implicits? Unsure. Replace these with `import package._`
      
      * Move the BaseModule object into the internal package.
      38727478
  5. May 14, 2019
    • Chick Markley's avatar
      RawModule with no reset should be able to use withClock method. (#1065) · 89ef4d78
      Chick Markley authored
      * RawModule with no reset should be able to use withClock method.
      - refactor ClockAndReset
        - now has `clockOpt: Option[Clock]` and `resetOpt: Option[Reset]` constructor params
        - convenience methods clock and reset tries to deref the option
        - ClockAndReset.empty is factory method for (None, None)
      - In Builder
        - forcedClock does not check resetOpt now
        - forcedReset does not check clockOpt now
      - withClock no longer looks at resetOpt
      - withReset no longer looks at clockOpt
      - Module starts with empty ClockAndReset
      
      * RawModule with no reset should be able to use withClock method.
      Refactor again based on @ducky64 comments
      - refactor away ClockAndReset, now builder just has a
        - currentClock
        - currentReset
      - withClock, withRest, withClockAndReset just use these fields directly
      
      * RawModule with no reset should be able to use withClock method.
      - Fixed typo in withReset handler, now picks up new reset
      89ef4d78
    • Schuyler Eldridge's avatar
      Merge pull request #1022 from freechipsproject/cleanup-scaladoc · df0e0b1c
      Schuyler Eldridge authored
      Miscellaneous Scaladoc Cleanup
      df0e0b1c
    • Schuyler Eldridge's avatar
      86530051
  6. May 13, 2019
  7. May 11, 2019
  8. May 10, 2019
    • Andrew Waterman's avatar
      9af531c3
    • Andrew Waterman's avatar
      Fix LFSR regression · af90047d
      Andrew Waterman authored
      af90047d
    • Schuyler Eldridge's avatar
      Merge pull request #1092 from freechipsproject/lfsr-async-reset · e02d25c2
      Schuyler Eldridge authored
      LFSR/PRNG Asynchronous Safety, Use Vec[Bool] to store internal state
      e02d25c2
    • Schuyler Eldridge's avatar
      PRNG state UInt->Vec[Bool], make async reset safe · 356d5c99
      Schuyler Eldridge authored
      
      
      Changes the internal state of PRNG to use Vec[Bool] instead of UInt.
      This fixes an @aswaterman identified future problem with asynchronous
      reset.
      
      A register with an asynchronous reset can only be reset to a literal.
      Previously, an LFSR would store state as a UInt. If it was not
      parameterized with a seed it should have its least significant bit
      reset to something to avoid locking up. It's ideal to not reset the
      full UInt (better test coverage, decreased reset fanout). However,
      it's difficult to only reset one bit of a UInt. Conversely, it's
      trivial to reset one bit of a Vec[Bool]. This also moves PRNG/LFSR
      closer to a canonical representation of their internal state, i.e.,
      it's natural to think of generalizing Vec[Bool] to arbitrary finite
      fields (Vec[A <: Field]) whereas UInt is tightly coupled to GF2.
      
      Minor updates:
      
      - Updates/fixes to some scaladoc
      - Add assertion to period test to make sure LFSR is changing
      
      Signed-off-by: default avatarSchuyler Eldridge <schuyler.eldridge@ibm.com>
      356d5c99
    • Jack Koenig's avatar
      Fix treatment of Vec of Analog and Vec of Bundle of Analog (#1091) · 6be76f79
      Jack Koenig authored
      * IO(Analog) fixed for RawModule
      
      * Add a Analog Port for RawModule test & spec
      
      * Fixes around Module instantiation and ports in AnalogPortRawModuleTest
      
      * Shorten Comment
      
      * Add Data.isSynthesizable to distinguish SampleElementBinding
      
      This helps clarify the notion of being bound but not hardware.
      Data.topBindingOpt is now used to get the *actual* top binding,
      including across SampleElements (eg. in Analog checking that the top is
      bound to a Port or a Wire)
      
      * Fix pretty printing for Vec
      
      * Refactor tests for Vec of Analog, add test for Vec of Bundle of Analog
      6be76f79
    • Schuyler Eldridge's avatar
      Merge pull request #1088 from freechipsproject/lfsr · a9bf10cc
      Schuyler Eldridge authored
      - Add chisel3.util.random package with Galois and Fibonacci LFSRs
      - Add maximal period LFSR generation and maximal period taps
      - Deprecate chisel3.util.LFSR16 in favor of chisel3.util.random.LFSR(16)
      a9bf10cc
    • Schuyler Eldridge's avatar
    • Schuyler Eldridge's avatar
      Add Lfsr tests · f35f2a27
      Schuyler Eldridge authored
      
      
      Add LFSR tests using LFSR16 testing infrastructure. This also adds
      tests that are the same as the examples shown for LFSR scaladoc.
      
      Signed-off-by: default avatarSchuyler Eldridge <schuyler.eldridge@ibm.com>
      f35f2a27
    • Schuyler Eldridge's avatar
      Add chisel3.util.random lib w/ LFSR generator · 7ce0f10f
      Schuyler Eldridge authored
      Builds out PRNG and LFSR type hierarchy. PRNG is the base class of
      LFSR of which Galois and Fibonacci are concrete implementations.
      
      PRNGs contain state (a UInt) and an update (delta) function. They have
      a compile-time optional seed to set the PRNG state. The seed/state can
      also be set at run-time. PRNGs can be run-time parameterized based on
      how many updates they should do per cycle and whether or not to send
      the seed through step-count state updates before loading it. (h/t
      @jwright6323)
      
      LFSRs are parameterized in a reduction operation (XOR or XNOR). An
      LFSR that does NOT have a seed will be automatically initialized to a
      minimally safe state (set/reset one bit) based on their reduction
      operation. (h/t @aswaterman)
      
      Adds Galois and Fibonacci LFSRs that define appropriate update
      functions. Companion objects provide helpers to automatically generate
      maximal period variants. Taps are provide for a very large set of
      widths. The LFSR companion object provides an apply method to generate
      a Fibonacci LFSR random variable (like the old LFSR16).
      7ce0f10f
  9. May 09, 2019
  10. May 05, 2019
  11. May 02, 2019
  12. Apr 27, 2019
  13. Apr 25, 2019
  14. Apr 24, 2019
  15. Apr 20, 2019
  16. Apr 17, 2019
  17. Apr 16, 2019
  18. Apr 13, 2019
  19. Apr 02, 2019
  20. Mar 30, 2019
  21. Mar 29, 2019
  22. Mar 27, 2019
  23. Mar 26, 2019
  24. Mar 24, 2019
    • Jim Lawson's avatar
      Aggregate coverage - aggregate tests but not publishing (#1040) · 9cc5a7d5
      Jim Lawson authored
      Discover a working combination of aggregate usage to enable coverage of subproject testing but publish a single Jar.
      Use "scalastyle-test-config.xml" for scalastyle config in tests.
      Enable "_" in method names and accept method names ending in "_=".
      Re-sync scalastyle-test-config.xml with scalastyle-config.xml
      This should finally fix #772.
      9cc5a7d5