summaryrefslogtreecommitdiff
path: root/src/main/scala/Chisel/util
AgeCommit message (Collapse)Author
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-04-26Scalastyle fixes and "ignores". - No functional changes.Jim Lawson
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-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-01Clearly delineate pipe/flow behavior in QueueAndrew Waterman
2016-04-01Reduce FIRRTL node count for CounterAndrew Waterman
This would ultimately get DCE'd, but it's easy enough to not generate the dead code in the first place.
2016-04-01Improve Arbiter implementation and QoRAndrew Waterman
- 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.
2016-04-01Make ArbiterCtrl private; make O(n), not O(n^2)Andrew Waterman
It was never meant to be a public API, and the implementation left something to be desired.
2016-04-01Return Seq, not Vec, from PriorityEncoderOHAndrew Waterman
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.
2016-02-25Fixed comment punctuation and made it clearer that using an init() method ↵chick
for DeqIO and EnqIO initialization is likely to change.
2016-02-24Remove the assignment statements in EnqIO and DeqIO Bundle constructors.chick
Make the corresponding test run faster by giving it a Counter.
2016-02-08Use Flipped trait to implement DeqIOAndrew Waterman
2016-01-23Don't use deprecated constructsAndrew Waterman
2015-12-11Fix Counter docducky
2015-12-11Refactor tests to use stop() and assert() instead of io.error/io.doneducky
Gate assert, printf, stop by reset Fix testbenches that never worked Change simulation prints to display cycle at which test was signaled to end, not when simulator stops Better documentation for Counter
2015-12-06Split internal and FIRRTL packagesducky
2015-11-02Add Scalastyle rule to check lines ending with a ;, fix some instancesducky
2015-11-02Break out Utils.scala into smaller portionsducky
2015-10-30Move Cat into utilsducky