| Age | Commit message (Collapse) | Author |
|
* Removed unused imports in src/test/
* Update ScalaTest deprecations.
* Update scalatest from 3.0.8 to 3.1.0; apply auto fix for deprecations
Co-authored-by: Jack Koenig <koenig@sifive.com>
|
|
* Pull out common test utilities into a separate package
* Project a fat jar for test utilities
Co-authored-by: Albert Magyar <albert.magyar@gmail.com>
|
|
* Fixes #1096
|
|
* Fixes #1436
|
|
Fixes #1453
|
|
Introduce Preset Register Specialized Emission
- Introduce EmissionOption trait
- Introduce PresetAnnotation & PresetRegAnnotation
- Enable the collection of Annotations in the Emitter
- Introduce collection mechanism for EmissionOptions in the Emitter
- Add PropagatePresetAnnotation transform to annotate register for emission and clean-up the useless reset tree (no DCE involved)
- Add corresponding tests spec and tester
Co-authored-by: Jack Koenig <koenig@sifive.com>
|
|
|
|
* Fixes #1214
Co-authored-by: Jack Koenig <koenig@sifive.com>
|
|
Co-authored-by: Schuyler Eldridge <schuyler.eldridge@ibm.com>
Co-authored-by: Albert Magyar <albert.magyar@gmail.com>
Signed-off-by: Schuyler Eldridge <schuyler.eldridge@ibm.com>
|
|
* Provide an annotation mix-in that marks RTs as dontTouch
* Update src/main/scala/firrtl/transforms/OptimizationAnnotations.scala
Co-Authored-By: Albert Magyar <albert.magyar@gmail.com>
* Update src/test/scala/firrtlTests/DCETests.scala
Co-Authored-By: Albert Magyar <albert.magyar@gmail.com>
* Update src/main/scala/firrtl/transforms/OptimizationAnnotations.scala
* Update OptimizationAnnotations.scala
Co-authored-by: Albert Magyar <albert.magyar@gmail.com>
|
|
* Add firrtl-json serializers
* Added support for ports, info. Added docs and tests
|
|
* Avoid IndexOutOfBoundsException when Bits has too few consts
* Check for negative consts in all relevant primops
* Use BigInt for all checks on primop constants
|
|
This reverts commit f77487d37bd7c61be231a8000a3197d37cf55499.
|
|
Signed-off-by: Schuyler Eldridge <schuyler.eldridge@ibm.com>
|
|
Signed-off-by: Schuyler Eldridge <schuyler.eldridge@ibm.com>
|
|
This adds a prettyPrint method to the DependencyManager to enable
textual visualization of the TransformLikes that a DependencyManager
determines need to be run.
This also cleans up the GraphViz visualization with better edge
coloring and now uses the `name` method when labeling graphviz nodes.
Signed-off-by: Schuyler Eldridge <schuyler.eldridge@ibm.com>
|
|
Signed-off-by: Schuyler Eldridge <schuyler.eldridge@ibm.com>
|
|
This makes a change to the Dependency API that breaks chisel3. This
needs to [skip chisel tests], but is fixed with
https://github.com/freechipsproject/chisel3/pull/1270.
Signed-off-by: Schuyler Eldridge <schuyler.eldridge@ibm.com>
|
|
|
|
This reverts commit eabc38559b7634ff7147aa0ab3d71e78558d5162.
|
|
* Revert "Infer resets last connect semantics (#1291)"
* Fix handling of invalidated and undriven components of type Reset
* Run CheckTypes after InferResets
* Make reset inference bidirectional on connect
* Support AsyncResetType in RemoveValidIf
* Fix InferResets for parent constraints on child ports
* Apply suggestions from code review
* Add ScalaDoc to InferResets
Co-authored-by: Albert Magyar <albert.magyar@gmail.com>
Co-authored-by: Schuyler Eldridge <schuyler.eldridge@gmail.com>
|
|
Co-authored-by: mergify[bot] <37929162+mergify[bot]@users.noreply.github.com>
|
|
* Add SimplifyBinaryOp trait
* Add extra functionality to comparison folding
* Add tests
* Fix comments from review
|
|
Signed-off-by: Schuyler Eldridge <schuyler.eldridge@ibm.com>
|
|
Signed-off-by: Schuyler Eldridge <schuyler.eldridge@ibm.com>
|
|
Signed-off-by: Schuyler Eldridge <schuyler.eldridge@ibm.com>
|
|
* Consume NoDedupMemAnnotations in ResolveMemoryReference
The ComponentName being pointed to by the annotation no longer exists
after ReplaceSeqMems so we should consume the annotations
* Support renaming in ReplaceMemMacros
Co-authored-by: mergify[bot] <37929162+mergify[bot]@users.noreply.github.com>
|
|
Signed-off-by: Schuyler Eldridge <schuyler.eldridge@ibm.com>
|
|
Co-authored-by: mergify[bot] <37929162+mergify[bot]@users.noreply.github.com>
|
|
* Generates lint-clean Verilog for the case: x + -1
...where x is anything and 1 is any literal.
Master behavior:
input x : SInt<8>
output z : SInt<9>
z <= add(x, SInt(-2))
generates
assign z = $signed(x) + -8'sh2;
After this PR:
assign z = $signed(x) - 8'sh2;
If the literal is the maximum possible literal, a special case is triggered to properly trim the resulting subtraction.
Input:
input x : SInt<2>
output z : SInt<3>
z <= add(x, SInt(-2))
now generates (after this PR)
assign z = $signed(x) - 3'sh2;
* Updated documentation
* Change ArrayBuffer to ListBuffer
* Change name to minNegValue
* Remove mutable public interfaces
Co-authored-by: Albert Magyar <albert.magyar@gmail.com>
Co-authored-by: mergify[bot] <37929162+mergify[bot]@users.noreply.github.com>
|
|
Add a test that EliminateTargetPaths properly duplicates an annotation
pointing at a ModuleTarget.
Signed-off-by: Schuyler Eldridge <schuyler.eldridge@ibm.com>
|
|
|
|
* Fixes #1240
* Add failing reg const prop test case from #1240
|
|
* Add constant prop to async regs
* Added another test of no reset value but constant assignment
* Clarify name of updateNodeMap
* Update constant assignment of async reset to not be inferred as a latch, works with donttouch
* Revert "Update constant assignment of async reset to not be inferred as a latch, works with donttouch"
This reverts commit 952bf38127cb32f814496a2b4b3bfb173d532728.
|
|
* Fixes #1344
|
|
|
|
* transform InlineBitExtractions
* InlineNotsTransform, InlineBitExtractionsTransform: inputForm/outputForm = UnknownForm
* clean up some minor redundancies from Adam review
* clarifications from Seldrige review
|
|
Co-authored-by: Jim Lawson <ucbjrl@berkeley.edu>
Co-authored-by: mergify[bot] <37929162+mergify[bot]@users.noreply.github.com>
|
|
Change EliminateTargetPaths to remove ResolvePaths annotations in the
output AnnotationSeq. This prevents a bug whereby the upstream
ResolvePaths annotations from previous runs of EliminateTargetPaths
can result in unexpected duplication.
Adds a test that checks that ResolvePaths annotations are actually
removed.
Signed-off-by: Schuyler Eldridge <schuyler.eldridge@ibm.com>
Co-authored-by: mergify[bot] <37929162+mergify[bot]@users.noreply.github.com>
|
|
Change PassTests to include Dedup when running transforms. This makes
PassTests behave more like an actual compiler.
Fixes bugs in Inline, Flatten, and Grouping tests where the tests
would only work without deduplication. This adds
NoCircuiDedupAnnotations to prevent deduplication for the offending
tests.
Signed-off-by: Schuyler Eldridge <schuyler.eldridge@ibm.com>
|
|
|
|
|
|
This includes the built-in functions in BackendCompilationUtilities
which are a public API
|
|
Many tools don't except 'always @(posedge 1'h0)' so we assign the
literal to a wire and use that as the posedge target.
|
|
[skip formal checks]
Adds new InlineCastsTransform to the VerilogEmitter which removes
Statements that do nothing but cast by inlining the cast Expression
|
|
|
|
[skip formal checks]
* ConstProp FoldEqual/FoldNotEqual propagate boolean (non-)equality with true/false
* transform InlineNots
* transform back-to-back Nots into straight rename
* swap mux with inverted select
Co-authored-by: Jack Koenig <jack.koenig3@gmail.com>
|
|
InferResets will now support last connect semantics (within the same
scope) when determining the concrete reset type for components of type
Reset. This only includes *unconditional* last connects; it remains
illegal to drive a component of type Reset with different concrete types
under differing when conditions.
For example, the following is now legal:
input a : UInt<1>
input b : AsyncReset
output z : Reset
z <= a
z <= b
The second connect will when and z will be of type AsyncReset.
The following remains illegal:
input a : UInt<1>
input b : AsyncReset
input c : UInt<1>
output z : Reset
z <= a
when c :
z <= b
This commit also ensures that components of type Reset with no drivers
(or only invalidation) default to type UInt<1>. This fixes a bug where
the transform would crash with such input.
|
|
There was some vestigial logging that conflicts with the homebrewed
logger used by most of the codebase
|
|
* Types containing bundles can't generally be converted to a single mask granularity
* Update ReplSeqMemTests to check for illegal masks
|