| Age | Commit message (Collapse) | Author |
|
* Add SubAccess case to Utils.splitRef
Signed-off-by: Schuyler Eldridge <schuyler.eldridge@sifive.com>
* Update Utils.splitRef to use IR types
Change Utils.splitRef to use the actual IR types instead of their
WIR aliases. Update the Scaladoc note to reflect this.
Signed-off-by: Schuyler Eldridge <schuyler.eldridge@sifive.com>
Co-authored-by: Jack Koenig <koenig@sifive.com>
|
|
* Deprecate firrtl.passes.ToWorkingIR
Deprecate ToWorkingIR as it is now an identity transform.
Signed-off-by: Schuyler Eldridge <schuyler.eldridge@sifive.com>
* Deprecate firrtl.stage.Forms.WorkingIR
Signed-off-by: Schuyler Eldridge <schuyler.eldridge@sifive.com>
* Switch from Forms.WorkingIR to Forms.MinimalHighForm
Signed-off-by: Schuyler Eldridge <schuyler.eldridge@sifive.com>
Co-authored-by: Jack Koenig <koenig@sifive.com>
Co-authored-by: mergify[bot] <37929162+mergify[bot]@users.noreply.github.com>
|
|
This allows ConstantPropagation to be used in cases where
ValidIfs need to be maintained, e.g., in the formal backend.
Co-authored-by: Adam Izraelevitz <adam.izraelevitz@sifive.com>
Co-authored-by: mergify[bot] <37929162+mergify[bot]@users.noreply.github.com>
|
|
Fixes bug with mul or div followed by cat.
Also fixes some Verilog lint issues.
|
|
* Check Unidoc on all versions of Scala
It is required for publishing and we publish every version
* Fix conflicting cross-version suffixes issue
When running `sbt ++2.13.4 unidoc`, SBT would set the Scala version
for the fuzzer and benchmark projects even though they aren't really
relevant to the command. This may be a misconfiguration or a bug in
the unidoc plugin. Whatever the case, simply making it possible for
them to use the same version of Scala as the firrtl project (on which
they depend) fixes the issue.
* Match versions of Scala in build.sbt and CI
* Fix unidoc issues in 2.13.4
There is some bug in ScalaDoc not finding some links in firrtl.options
so those links were made absolute as a workaround.
|
|
Co-authored-by: mergify[bot] <37929162+mergify[bot]@users.noreply.github.com>
|
|
This adds a --dont-fold options (backed by a DisableFold annotation)
that lets a user specify primitive operations which should never be
folded. This feature lets a user disable certain folds which may be
allowable in FIRRTL (or by any sane synthesis tool), but due to inane
Verilog language design causes formal equivalence tools to fail due to
the fold.
Add a test that a user can disable `a / a -> 1` with a
DisableFold(PrimOps.Div) annotation.
Signed-off-by: Schuyler Eldridge <schuyler.eldridge@sifive.com>
|
|
Fix scalafmtCheckAll failures that snuck through
|
|
|
|
This is done by having LowerTypes uses two RenameMaps instead of one for
each module. There is one for renaming instance paths, and one for
renaming everything within modules.
Also add some utilities:
* TargetUtils for dealing with InstanceTargets
* RenameMap.fromInstanceRenames
|
|
|
|
|
|
Co-authored-by: mergify[bot] <37929162+mergify[bot]@users.noreply.github.com>
|
|
* add test for RemoveAccessesSpec.
* fix nested SubAccess bug.
Co-authored-by: mergify[bot] <37929162+mergify[bot]@users.noreply.github.com>
|
|
* Add SortModules to transform to def-before-use
Adds a new transform, SortModules, that transforms a FIRRTL circuit
to enforce an invariant of modules and external modules being defined
before use. This transform is left as optional in the event that a
user may wish to have a quick way of getting the circuit to respect
this property as may be expected of some other tool, e.g., MLIR.
Signed-off-by: Schuyler Eldridge <schuyler.eldridge@sifive.com>
* Add test of SortModules transform
Signed-off-by: Schuyler Eldridge <schuyler.eldridge@sifive.com>
Co-authored-by: mergify[bot] <37929162+mergify[bot]@users.noreply.github.com>
|
|
Verilator 4.034 was complaining about wires being named weak and strong
because those are SV 2009 keywords. Added them to the Utils.v_keywords list
|
|
* Make MultiTargetAnnotation.targets a def
This enables the annotation writer to choose their own underlying data structure
* Update MultiTargetAnnotation ScalaDoc
Co-authored-by: mergify[bot] <37929162+mergify[bot]@users.noreply.github.com>
|
|
Co-authored-by: mergify[bot] <37929162+mergify[bot]@users.noreply.github.com>
|
|
It would replace them with a validif node with a UIntLiteral which can
lead to type errors.
|
|
|
|
* smt: add test for write port collision
* smt: add missing call to insertDummyAssignsForMemoryOutputs
* smt: fix typo in write port code
Co-authored-by: mergify[bot] <37929162+mergify[bot]@users.noreply.github.com>
|
|
* split big Emitter to submodules.
* fix all deprecated warning.
Co-authored-by: mergify[bot] <37929162+mergify[bot]@users.noreply.github.com>
|
|
* smt: add tests for assert name clashes
* smt: ensure unique signal names with a namespace
this fixes issues #1934
|
|
|
|
|
|
|
|
|
|
|
|
* Make Stage.run protected
Change the access modifier of Stage.run from no modifier to protected.
This method is really an internal API that the user implements with
the main entry point for a Stage being "execute" or "transform". By
allowing users to access "run" they can bypass checks, mandatory file
reads/writes, and wrappers.
Signed-off-by: Schuyler Eldridge <schuyler.eldridge@sifive.com>
* Make FirrtlStage.run protected
Signed-off-by: Schuyler Eldridge <schuyler.eldridge@sifive.com>
|
|
Overflow of 32-bit Int would cause any negative literal value equal to
-(2^(width % 32 - 1)) where width >= 32 to be incorrectly inverted
|
|
* Also clean up VerilogMemDelaySpec structure
|
|
|
|
Also speed up common case of Array[Byte]
|
|
|
|
Both use EliminateTargetPaths to duplicate modules based on annotations.
Currently, EliminateTargetPaths API is a little too limited so it
duplicates more than it should which effectively breaks Dedup whenever
DontTouchAnnotations are present.
Also, make ConstProp and DCE treat all HasDontTouches as local
annotations even if they are instance annotations. This is more
conservative but it is generally better to preserve deduplication than
to maximally optimize every instance.
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>
|
|
These options are generally specific to a stage and thus should not be
propagating across serialization
|
|
* test multiinfo comparison and mux cond inlining
* loosen inlining conditions
* fix typo
* include dshlw
* fix test
|
|
Also rename --Wno-scala-version-warning to
--warn:no-scala-version-deprecation and adopt naming convention where
resulting annotation matches the CLI option
|
|
|
|
|
|
|
|
|
|
* InlineBooleanExpressions: test DontTouch
* run scalafmt
|
|
|
|
|
|
* Restore depth-agnostic inlining for simple 'lhs = ref' bool assignments
* Address review comments
* Run scalafmt
|
|
|
|
* FlattenSpec: flattening a module with no instaces should be a no-op
* Fix problem when flattening/inlining a lone module
Fix an edge case bug in InlineInstances where a circuit containing a
lone module is flattened/inlined. This now properly special cases the
situation of an empty indexMap which before had to be of length >= 1.
Signed-off-by: Schuyler Eldridge <schuyler.eldridge@ibm.com>
* Simplify rename logic in InlineInstances
Co-authored-by: Jack Koenig <koenig@sifive.com>
Co-authored-by: Albert Magyar <albert.magyar@gmail.com>
Signed-off-by: Schuyler Eldridge <schuyler.eldridge@ibm.com>
* Mea culpa
Signed-off-by: Schuyler Eldridge <schuyler.eldridge@ibm.com>
Co-authored-by: Schuyler Eldridge <schuyler.eldridge@ibm.com>
Co-authored-by: Jack Koenig <koenig@sifive.com>
Co-authored-by: Albert Magyar <albert.magyar@gmail.com>
|
|
* CompilerAnnotation$ emits RunFirrtlTransform
Change the CompilerAnnotation object to emit
RunFirrtlTransformAnnotations containing the associated emitter.
This requires a fix in the Driver compatibility layer to know how to
enable one-file-per module emission if either a CompilerAnnotation or
a RunFirrtlTransformAnnotation(_: Emitter) is present.
Signed-off-by: Schuyler Eldridge <schuyler.eldridge@ibm.com>
* Add ConvertCompilerAnnotation phase
Add a phase, ConvertCompilerAnnotation, that converts a
CompilerAnnotation to a RunFirrtlTransformAnnotation. This provides a
warning to the user if this path is taken.
Signed-off-by: Schuyler Eldridge <schuyler.eldridge@ibm.com>
* Add test of ConvertCompilerAnnotation
Signed-off-by: Schuyler Eldridge <schuyler.eldridge@ibm.com>
* Deprecate CompilerAnnotation$, move helper methods
Deprecate the CompilerAnnotation companion object and move it's
private utility inside the RunFirrtlTransformAnnotation companion
object.
Signed-off-by: Schuyler Eldridge <schuyler.eldridge@ibm.com>
* Make ConvertCompilerAnnotations private[firrtl]
Make this phase private to avoid adding a deprecation warning. Also,
remove an unused string value.
Signed-off-by: Schuyler Eldridge <schuyler.eldridge@ibm.com>
* Fix incorrect string in test
Signed-off-by: Schuyler Eldridge <schuyler.eldridge@ibm.com>
* Add test that '-X verilog', no emitter yields file
Signed-off-by: Schuyler Eldridge <schuyler.eldridge@ibm.com>
|