1. Oct 30, 2018
  2. Oct 28, 2018
  3. Oct 26, 2018
  4. Oct 13, 2018
    • Hasan Genc's avatar
      Strong enums (#892) · 60040525
      Hasan Genc authored
      * Added new strongly-typed enum construct called "StrongEnum". "StrongEnum" will automatically generate annotations that HDL backends can use to mark components as enums
      
      Removed "override val width" constructor parameter from "Element" so that classes with variable widths, like the new strong enums, can inherit from it
      
      Changed the parameter types of certain functions, such as "switch", "is", and "LitArg.bindLitArg" from "Bits" to "Element", so that they can take the new strong enums as arguments
      
      * Added tests for the new strong enums
      
      * Changed StrongEnum exception names and made sure in StrongEnum tests that the correct types of exceptions are thrown
      
      * Fixed bug where an enum's global annotation would not be set if it was used in multiple circuits
      
      Made styling changes to StrongEnum.scala
      
      * Reverted accidental changes to the AnnotatingDiamond test
      
      * Changed the API for casting non-literal UInts to enums
      
      Added an isValid function that checks whether or not enums have valid values
      
      Calling getWidth on an enum's companion object now returns a BigInt instead of an Int
      
      * Casting a literal to an enum using the StrongEnum.castFromNonLit(n) function is now simply a wrapper for StrongEnum.apply(n)
      
      * Fixed compilation bug
      
      * * Added "next" method to EnumType
      * Renamed "castFromNonLit" to "fromBits"
      
      * The FSM example in the test/scala/cookbook now uses StrongEnums
      
      * * Changed strong enum API, so that users no longer have to declare both a class and a companion object for each strong enum
      
      * Strong enums do not have to be static any longer
      
      * * Added scope protections to ChiselEnum.Value so that users cannot call it
      outside of a ChiselEnum definition
      
      * Renamed ChiselEnum.Value type to ChiselEnum.Type so that we can give
      it a companion object just like UInt and Bool do
      
      * * Moved strong enums into experimental package
      * Non-literal UInts can now be cast to enums with apply() rather than
      fromBits()
      * Reduced code-duplication by moving some functions from EnumType and
      Bits to Element
      60040525
  5. Oct 12, 2018
  6. Oct 05, 2018
  7. Oct 04, 2018
  8. Sep 29, 2018
  9. Sep 28, 2018
  10. Sep 22, 2018
  11. Sep 21, 2018
  12. Sep 15, 2018
    • grebe's avatar
      Give type annotation to litOption. (#887) · 00ce759f
      grebe authored
      The litOption field currently has no type that can be inferred. Some
      subtypes override it and give it a type, but the original declaration
      should have a type so things like bundles can override it.
      00ce759f
  13. Sep 14, 2018
  14. Sep 08, 2018
  15. Sep 01, 2018
    • Chick Markley's avatar
      Support for verilog memory loading. (#840) · a5185d2c
      Chick Markley authored
      * Ability to load memories at simulation startup
      * first pass
      * create annotation
      * create skeleton Transform
      
      * Work in progress
      Building out transform and pass now
      
      * Support for LoadMemory annotation
      * Creates chisel and firrtl LoadMemory annotations
      * LoadMemoryTransform converts annotation into BlackBox InLine
      * Simple test that verilog bound modules get created.
      
      * Support for LoadMemory annotation
      * Supports Bundled/multi-field memories
      * more tests
      * support for `$readmemh` and `$readmemb`
      * warns if suffix used in file specification.
      
      * Support for LoadMemory annotation
      * Use standard chisel annotation idiom
      
      * Support for LoadMemory annotation
      * Fixes for @seldridge nits and super-nits
      
      * Support for LoadMemory annotation
      - transform now only runs if emitter is an instance of VerilogEmitter
      - suffixes on memory text files are now respected
        - if suffix exists and memory is aggregate, aggregate sub-fields will now be inserted before suffix
      - every bind module created gets a unique number
        - this is required when multiple loaded memories appear in a module
        - this should be generalized for other uses of binding modules
      
      * Support for LoadMemory annotation
      - remove un-needed suffix test
      
      * Support for LoadMemory annotation
      - remove instance walk, now just processes each module
      
      * Support for LoadMemory annotation
      - Move LoadMemoryTransformation into Firrtl for treadle to access it.
      
      * Support for LoadMemory annotation
      - One more bug in suffix handling has been eliminated
      
      * Support for LoadMemory annotation
      - remove unused findModule per jackkoenig
      - fixed complex test, bad filename edge case
      
      * Support for LoadMemory annotation
      - changed to not use intellij style column alignment for : declarations
      
      * Load memory from file
      Fixes based on @jkoenig review
      - remove unused BindPrefixFactory
      - Moved code from CreateBindableMemoryLoaders into to LoadMemoryTransfrom
      - Made map to find relevant memory annotations faster
      - Made map to find modules referenced by annotations faster
      - Made things private that should be private
      - DefAnnotatedMemorys are no longer referenced, shouldn't be found here.
      - println of error changed to failed
      
      * Loading memories from files
      - Many changes based on review
      - move stuff into experimental
      - clean up annotation manipulation
      - manage tests better
      - use more standard practices for transform
      
      * Loading memories from files
      - More review changes
      - Move doc from annotation to the object apply method that generates the annotation
      - Make scalastyle directives more specific
      - Use more efficient collect to generate name to module map
      - Made lines obey style length limit
      - a couple of cleanups of imports in tests
      - removed some commented out code
      - optimized checking for lines using .exists
      - use _ for unused variable in match
      a5185d2c
  16. Aug 30, 2018
  17. Aug 24, 2018