summaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2016-06-03Merge branch 'master' into front_end_dependencyJim Lawson
2016-06-01Fix a fairly serious bug whereby Vec's could incorrectly compare as equal (#204)Wesley W. Terpstra
* chiselTests: include an example of two empty Vectors killing FIRRTL * Aggregate: fix a bug whereby Vec[T] was using equals/hashCode of Seq In Chisel, two vectors are NOT equal just if their contents are equal. For example, two empty vectors should not be considered equal. This patch makes Vec use the HasId._id for equality like other Chisel types. Without this fix, Bundle.namedElts.seen: HashSet[Data]() will eliminate one of the named vectors and emit bad IR.
2016-05-31Remove unsafe implicit conversions from BitPatducky
2016-05-31Move BitPat out of core/frontend, add implicit conversionDucky
2016-05-26Fix type constraint on PriorityMuxAndrew Waterman
2016-05-20Merge pull request #186 from ucb-bar/sloc_implRichard Lin
Source locators
2016-05-20Implementation of source locatorsducky
2016-05-20Update BackendCompilationUtilities.verilogToCpp to specify top-modulejackkoenig
This prevents Verilator from erroring when it cannot determine the top-module. It also changes the PRINTF_COND guard to correctly use the top-level reset instead of just the top of the Chisel-generated code.
2016-05-19Update to current sbt resolver idiom.Jim Lawson
2016-05-18Add a hack to build.sbt to allow local publishingchick
2016-05-13Merge pull request #191 from ucb-bar/classic_tester_prep_alt2Jim Lawson
remove Tester.scala
2016-05-12remove Tester.scala because chiselMain is now implemented in the ↵Danny
chisel-testers repo
2016-05-11Merge pull request #184 from ucb-bar/fix-regnextColin Schmidt
RegNext and RegInit should match Reg(next=) and Reg(init=)
2016-05-11RegNext and RegInit should match Reg(next=) and Reg(init=)Andrew Waterman
2016-05-10Some -> OptionDonggyu Kim
Option(null) returns None, but Some(null) returns Some(null)
2016-05-10Merge pull request #181 from ucb-bar/emitRefactorJim Lawson
Move emit out of IR
2016-05-10Move emit out of IRducky
2016-05-10Have Bits.toBools return Seq, not VecAndrew Waterman
The return value of Bits.toBools doesn't need to be dynamically indexed (as you could have just dynamically indexed the Bits itself), so returning a Seq instead of a Vec is mroe appropriate. This breaks a circular dependence between Bits and Vec, which helps with macros/frontend refactoring.
2016-05-10Relax Mem write-masks to Seq, rather than VecAndrew Waterman
2016-05-10Merge pull request #178 from ucb-bar/cfr_fixJim Lawson
Include Chisel Frontend in JAR
2016-05-09Include Chisel Frontend in JARducky
2016-05-09remove vpi source filesDonggyu Kim
2016-05-09fix width inference in enumDonggyu Kim
2016-05-09get -> getOrElseDonggyu Kim
2016-05-08Fixed sbt error where the typechecker was complaining. Just converted the ↵azidar
Seq to variatic argument list
2016-05-05Move Chisel API into separate chiselFrontend compilation unit in preparation ↵ducky
for source locator macros
2016-05-04Multiple assign testerducky
Closes #90
2016-05-04Remove dependences from Chisel core on Chisel utilsAndrew Waterman
Partially resolves #164
2016-05-04Support writing literals like 1.U or -1.SAndrew Waterman
2016-05-04clock|reset to _clock|_reset, added explanatory commentStephen Twigg
@aswaterman closes #156
2016-05-04Change BlackBox.io.setRef into commentStephen Twigg
Setting the io ref there wasn't doing anything meaningful
2016-05-04Rewrite BlackBox IO contract, replace _clock|_resetStephen Twigg
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.
2016-05-04Add HasId=Module|Data.suggestName, TransitName utilStephen Twigg
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.
2016-05-02Merge pull request #163 from ucb-bar/chiselMain_assertPalmer Dabbelt
more kind assert on chiselMain
2016-05-02more kind assert on chiselMainDonggyu Kim
2016-04-26Replace deprecated usage in tests. Issue #149Jim Lawson
2016-04-26Scalastyle fixes and "ignores". - No functional changes.Jim Lawson
2016-04-18Add whenever method to TblSpec forall to weed out invalid test values.Jim Lawson
2016-04-18Only elaborate once in chiselMain.run()Palmer Dabbelt
I had a def instead of a val.
2016-04-15Test FIRRTL string literals more aggressivelyAndrew Waterman
2016-04-14Disallow Counters with negative nAndrew Waterman
One could make an argument for disallowing n=0, too, but HW generators will benefit from our leniency. Closes #107. Thanks @jackkoenig
2016-04-14Use mkString to clarify and speed up DefPrim emissionAndrew Waterman
2016-04-14Don't eagerly evaluate assertion failure stringsAndrew Waterman
Users should assume it's OK to make them expensive to evaluate.
2016-04-14Improve performance of hashing HasId (e.g. Data)Andrew Waterman
2016-04-14Eliminate RefMapAndrew Waterman
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.
2016-04-14Reject log2Up on negative inputsAndrew Waterman
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.
2016-04-13Remove underscores from constant creationColin Schmidt
This makes chisel2's behaviour and makes it easier to read large constants.
2016-04-06Update README with Martin's suggestions from #103.Jim Lawson
2016-04-05Make Wire(init = x) behave the same as Wire(t = x) := xAndrew Waterman
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.
2016-04-05Merge pull request #129 from ucb-bar/bumppluginsRichard Lin
Bump plugin versions.