- May 06, 2016
-
-
ducky authored
Move Chisel API into separate chiselFrontend compilation unit in preparation for source locator macros
-
- May 04, 2016
-
-
ducky authored
Closes #90
-
Andrew Waterman authored
Partially resolves #164
-
Andrew Waterman authored
-
Stephen Twigg authored
@aswaterman closes #156
-
Stephen Twigg authored
Setting the io ref there wasn't doing anything meaningful
-
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.
-
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.
-
- May 03, 2016
-
-
Palmer Dabbelt authored
more kind assert on chiselMain
-
Donggyu Kim authored
-
- Apr 27, 2016
-
-
Jim Lawson authored
-
Jim Lawson authored
-
- Apr 19, 2016
-
-
Jim Lawson authored
-
Palmer Dabbelt authored
I had a def instead of a val.
-
- Apr 15, 2016
-
-
Andrew Waterman authored
-
Andrew Waterman authored
One could make an argument for disallowing n=0, too, but HW generators will benefit from our leniency. Closes #107. Thanks @jackkoenig
-
Andrew Waterman authored
-
Andrew Waterman authored
Users should assume it's OK to make them expensive to evaluate.
-
Andrew Waterman authored
-
Andrew Waterman authored
It's an unconvincing means to pretend there isn't mutable state when there really is. It's more confusing and less performant than just calling a spade a spade.
-
Andrew Waterman authored
Mathematically, we should also reject 0, like log2Ceil does. But accepting 0 and returning 1 is more in the spirit of the special case for widths.
-
- Apr 14, 2016
-
-
Colin Schmidt authored
This makes chisel2's behaviour and makes it easier to read large constants.
-
- Apr 07, 2016
-
-
Jim Lawson authored
-
- Apr 06, 2016
-
-
Andrew Waterman authored
There's a separate debate to be had about whether we want to default-initialize Wires to invalid. This patch just fixes the implementation of the previous, unsafe approach, which was usually, but not always, defaulting to invalid.
-
Richard Lin authored
Bump plugin versions.
-
- Apr 02, 2016
-
-
Sebastian Bøe authored
-
Andrew Waterman authored
-
Andrew Waterman authored
This would ultimately get DCE'd, but it's easy enough to not generate the dead code in the first place.
-
Andrew Waterman authored
- Remove power-of-2 restriction on count - Avoid redundancy between lockIdx and chosen signals, reducing area - Infer locked from lockCount, rather than maintaining separate state - Reduce FIRRTL node count in several places - Special-case simple Arbiter, which avoids serializing the computation of io.chosen with io.out.valid/bits. This lops off a few FO4 delays at no area cost, and actually reduces area if io.chosen isn't used.
-
Andrew Waterman authored
It was never meant to be a public API, and the implementation left something to be desired.
-
Andrew Waterman authored
It doesn't really make sense to create a one-hot result then follow it with a decoder. It's more performant to use a PriorityEncoder followed by a comparator. Discourage the former by returning Seq, not Vec. In Chisel2, it seems the return type was originally Seq, but was at some point inadvertently changed to Vec.
-
Jim Lawson authored
Scalastyle "scalastyle-sbt-plugin" % "0.7.0) dies with: [error] .../chisel3/src/main/scala/Chisel/Data.scala: Expected token RBRACKET but got Token(XML_START_OPEN,<,4360,<) [error] .../chisel3/src/main/scala/Chisel/Driver.scala: Expected token RBRACKET but got Token(XML_START_OPEN,<,3418,<) ... Upgrade to "scalastyle-sbt-plugin" % "0.8.0" (and bump the the others to "current" versions while we're here.) -
Andrew Waterman authored
-
- Mar 31, 2016
-
-
Andrew Waterman authored
Sign- or zero-extend the argument to match.
-
- Mar 29, 2016
-
-
Andrew Waterman authored
For internal purposes only. Avoids redundant code emission for assertions.
-
Andrew Waterman authored
-
- Mar 21, 2016
-
-
Jack Koenig authored
Fix assert
-
- Mar 19, 2016
-
-
Richard Lin authored
Add =/= to the ignoreRegex for MethodNamesChecker.
-
- Mar 18, 2016
-
-
jackkoenig authored
-
jackkoenig authored
-