1. May 25, 2016
    • Andrew Waterman's avatar
      Don't use strict connect for := · cc77898e
      Andrew Waterman authored
      FIRRTL wasn't enforcing widths on strict connects, which was fine for
      Chisel but incorrect for FIRRTL.  To maintain Chisel semantics, use
      partial connect everywhere.
      cc77898e
  2. May 21, 2016
  3. May 14, 2016
  4. May 13, 2016
  5. May 12, 2016
  6. May 11, 2016
  7. May 10, 2016
  8. May 09, 2016
  9. May 06, 2016
  10. May 04, 2016
    • ducky's avatar
      Multiple assign tester · 623a301d
      ducky authored
      Closes #90
      623a301d
    • Andrew Waterman's avatar
      Remove dependences from Chisel core on Chisel utils · cd951e19
      Andrew Waterman authored
      Partially resolves #164
      cd951e19
    • Andrew Waterman's avatar
      bb912f52
    • Stephen Twigg's avatar
      clock|reset to _clock|_reset, added explanatory comment · f3ea8f1f
      Stephen Twigg authored
      @aswaterman closes #156
      f3ea8f1f
    • Stephen Twigg's avatar
      Change BlackBox.io.setRef into comment · 2b5045b3
      Stephen Twigg authored
      Setting the io ref there wasn't doing anything meaningful
      2b5045b3
    • Stephen Twigg's avatar
      Rewrite BlackBox IO contract, replace _clock|_reset · 24492361
      Stephen Twigg authored
      The old blackbox behavior still emitted extmodules that have a
      clk, reset pin and prepended all io's with io_ (ultimately). Most
      verilog modules do not follow this distinction (or use a slightly
      different name for clock and so on).
      
      Thus, instead BlackBox has been rewritten to not assume a clk or
      reset pin. Instead, the io Bundle specified is flattened directly
      into the Module.ports declaration. The tests have been rewritten
      to compensate for this. Also, added a test that uses the clock pin.
      
      As a secondary change, the _clock and _reset module parameters were
      bad for two reasons. One, they used null as a default, which is a
      scala best practices violation. Two, they were just not good names.
      
      Instead the primary constructor has been rewritten to take an
      Option[Clock] called override_clock and an Option[Bool] called
      override_reset, which default to None. (Note how the getOrElse call
      down below is much more natural now.)
      
      However, users may not want to specify the Some(their_clock) so I
      also added secondary constructors that take parameters named clock
      and reset and wrap them into Some calls into the primary constructor.
      This is a better UX because now you can just stipulate clock=blah in
      instantiation of that module in symmetry with using the clock in the
      definition of the module by invoking clock.
      
      PS: We could also back out of allowing any overrides via the Module
      constructor and just require the instantiating Module to do
      submodule.clock := newclock, etc.
      24492361
    • Stephen Twigg's avatar
      Add HasId=Module|Data.suggestName, TransitName util · 73e35c55
      Stephen Twigg authored
      Often times the scala runtime reflection fails to find an appropriate
      name for a given net. This commit tries to partially ameliorate the
      issue by exposing a suggestName function onto HasId (i.e. Module, Data)
      that the user can call to 'suggest' a name.
      
      Only the first suggestion is taken so repeated calls to suggestName will
      not change the name for that node. This type of name exposure is
      slightly risky as there is a chance the same name is suggested in the
      same namespace. Thus, naming within a Module occurs in two passes:
      
      The suggestion phase is when the user calls suggestName, etc. Near the
      'end,' the Module uses runtime reflection to suggest names as well.
      The forcing phase is when all the nodes are run through and a name is
      'forced' onto them, using the namespace to suggest alternatives if the
      desired one is taken. If no suggestion is present, the default name is
      T, as before.
      
      Second, there is an issue that commonly comes up when a component
      library creates intermediate logic and then only returns a piece, or
      even a piece of a piece (like part of a module IO). Any names suggested
      by the Module by reflection onto that return value are either lost or
      not fully applied. This issue is resolved by TransitName. TransitName
      attaches a hook to the suggestName function of a HasId. With that hook,
      any time suggestName is called on the hooked ID, that name suggestion is
      also applied to other nodes.
      
      For example, if Queue(in) is called, then any attempts to name the
      returned output DecoupledIO will actually translate to naming attempts
      on the backing Queue.
      73e35c55
  11. May 03, 2016
  12. Apr 27, 2016
  13. Apr 19, 2016
  14. Apr 15, 2016