| Age | Commit message (Collapse) | Author |
|
|
|
* Correctly handle dots in loaded memory paths
* Added test for loadmem filename
|
|
UniquifySpec.quicklyrenamedeepbundles (#1000)
* Attempt to deal with timing vagaries in UniquifySpec.quicklyrenamedeepbundles
Switching to Scala 2.12.8 cause this test to start failing on OSX. Try earlier scheme to compare shallow vs deep to reduce brittleness.
* Address review concerns; update comment.
|
|
Fixes #219
* Adds AsyncResetType (similar to ClockType)
* Registers with reset signal of type AsyncResetType are async reset
registers
* Registers with async reset can only be reset to literal values
* Add initialization logic for async reset registers
|
|
|
|
Add "mverilog" Compiler Option, MinimumVerilogEmitter
|
|
This uses the foldShiftRight method of the ConstantPropagation
Transform when legalizing Shr PrimOps. This has the effect of removing
literals with bit extracts from the MinimumVerilogCompiler.
This makes the formerly private foldShiftRight method of a public
method of the ConstantPropagation companion object.
Tests in the MimimumVerilogCompilerSpec are updated to check that Shr
is handled as intended.
Signed-off-by: Schuyler Eldridge <schuyler.eldridge@ibm.com>
|
|
This adds the RemoveValidIf Pass to the MinimumLowFirrtlOptimization
Transform. A test case is included to verify that `is invalid` is
properly converted to a connection to zero.
Signed-off-by: Schuyler Eldridge <schuyler.eldridge@ibm.com>
|
|
This adds runs of the minimum Verilog compiler and SystemVerilog
compiler in DriverSpec.
Signed-off-by: Schuyler Eldridge <schuyler.eldridge@ibm.com>
|
|
This adds "mverilog" to the "--compiler" command line option. This
will run the MinimumVerilogCompiler.
This additionally fixes the MinimumVerilogCompiler such that
DeadCodeElimination will not be run (it's not supposed to be). This is
done by adding a MinimumVerilogEmitter, subclassing VerilogVerilog,
that strips the DeadCodeElimination step from its parent.
Additionally, BlackBoxSourceHelper is removed from the
MinimumVerilogCompiler since this will be run by the VerilogEmitter
already.
Signed-off-by: Schuyler Eldridge <schuyler.eldridge@ibm.com>
|
|
* Enhance constant propagation across registers
* Add more elaborate test case for register const prop
|
|
|
|
This avoids an apparent problem somewhere in sbt and/or scalatest
where the JVM runs out of metaspace if you repeatedly run tasks. This
is an annoyance for FIRRTL developers or users that keep an sbt
session open. This kludges around that by forking all tasks into a
separate JVM.
Signed-off-by: Schuyler Eldridge <schuyler.eldridge@ibm.com>
|
|
* Add memory WRef factory for completeness
* Refactor DefAnnotatedMemory construction for clarity
|
|
|
|
|
|
make more clear for ExecutionOptionsManager log level settings.
|
|
|
|
* Improve Shl codegen; eliminate Shlw WIR node
If we emit shl(x, k) as {x, k'h0} instead of (x << k), then there's
no need for Verilog-specific padding in the PadWidths pass. Avoiding
the redundant padding improves compiler/simulator performance and
renders Shlw unnecessary.
* [skip formal checks] Add test
|
|
[Top Wiring] Expand top wiring to work on aggregates
|
|
|
|
|
|
* Remove GhpagesPlugin. (#979)
* Restore old SCM reference (after removing ghpages)
* Remove reference to sbt-ghpages plugin.
|
|
|
|
|
|
Constant Propagate dshl and dshr with constant amounts
|
|
|
|
Fixes #990
h/t @pentin-as and @abejgonzalez
|
|
|
|
This fixes issue #988
I tried one alternative to this fix: record the time to do a *no rename* run (`depth = 0`) and check that the time to do the *deep rename* (`depth = 500`) was a reasonable multiple of the *no rename* test. Unfortunately, the discrepancies were all over the map, sometime as much three orders of magnitude difference.
I decided the current fix was the simplest - don't enforce timing checks if we're doing coverage testing, although determining the latter is brittle.
|
|
|
|
Previously, components that did not affect the output would cause
exceptions because they were missing from the label2group Map. This
commit treats them as "reachable" by the ports so they are included in
the default "ungrouped" group.
|
|
This fixes an issue where expressions created by GroupComponents would
be improperly lowered because they were not marked as references to
instance ports.
|
|
|
|
|
|
* Seal Direction trait
* Add WRef factories for ports and instances
|
|
|
|
Fix NoneCompiler outputForm
|
|
This adds a requirement that all Compilers must have at least one
Transform. Without this, there is no way to determine the inputForm or
outputForm of a given compiler as these are (rightly) defined in terms of
the head/last transform.
Signed-off-by: Schuyler Eldridge <schuyler.eldridge@ibm.com>
|
|
This changes the NoneCompiler to be a unary sequence consisting of an
IdentityTransform. This fixes the inputForm and outputForm inherited
methods that implicitly mandate a non-empty transform sequence.
Signed-off-by: Schuyler Eldridge <schuyler.eldridge@ibm.com>
|
|
This adds an identity transform that applies an identity function to some
CircuitState, i.e., it just returns the original CircuitState. This is
useful for transform generators that may, for edge cases, generate an
empty transform sequence. Other classes (e.g., Compiler) have explicit or
implicit requirements that a transform sequence is non-empty.
Signed-off-by: Schuyler Eldridge <schuyler.eldridge@ibm.com>
|
|
* Give better error when mport references non-existent memory
* Closes #796
|
|
|
|
|
|
Remove side effect from DiGraph sum
|
|
This fixes a bug where DiGraph summation (using the `+` operator) would
mutate the DiGraph. This occurred because the underlying edges set was not
being cloned. This is fixed to explicitly clone the underlying edges set.
Signed-off-by: Schuyler Eldridge <schuyler.eldridge@ibm.com>
|
|
Iterating on a HashSet could cause identical modules (including
annotations) to not dedup
|
|
|
|
|
|
* Added Foreachers
* Changed CheckTypes to use foreach
* Check widths now uses foreach
* Finished merge, added foreachers to added stmts
* Address reviewer feedback
|