| Age | Commit message (Collapse) | Author |
|
Fix "fix" for negative literals > 32 bits
|
|
Overflow of 32-bit Int would cause any negative literal value equal to
-(2^(width % 32 - 1)) where width >= 32 to be incorrectly inverted
|
|
VerilogMemDelays: fix lowering of direct mem-to-mem connections
|
|
* Also clean up VerilogMemDelaySpec structure
|
|
|
|
Also speed up common case of Array[Byte]
|
|
now points to apache 2.0
|
|
|
|
|
|
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>
|
|
Specify appropriate Chisel and Treadle branches for CI tests
|
|
|
|
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
|
|
|
|
|
|
Legalize mem port clocks to avoid Verilator-unfriendly sensitivity lists
|
|
|
|
|
|
* InlineBooleanExpressions: test DontTouch
* run scalafmt
|
|
Make mill compatiable to 2.13.
|
|
|
|
|
|
Restrict boolean inlining to avoid context-sensitive width bugs
|
|
|
|
* Restore depth-agnostic inlining for simple 'lhs = ref' bool assignments
* Address review comments
* Run scalafmt
|
|
Add custom transforms 'upstream' of emitter annotation in equiv tests
|
|
|
|
* 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>
|
|
Co-authored-by: mergify[bot] <37929162+mergify[bot]@users.noreply.github.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>
|
|
If there is more than one clock, this will be detected and
the user will be promted to run the StutteringClock transform.
|
|
* run scalafmtAll
* ci: scalafmtCheckAll to check all code instead of just the main sources
|
|
|
|
The following conditions must be satisfied to inline:
1. has type Utils.BoolType
2. is bound to a DefNode with name starting with '_'
3. is bound to a DefNode with a source locator that
points at the same file and line number. If it is a MultiInfo source
locator, the set of file and line number pairs must be the same. Source
locators may point to different column numbers.
4. InlineBooleanExpressionsMax has not been exceeded
5. is not a Mux
Also updates the Verilog emitter to break up lines greater than 120 characters
|
|
Co-authored-by: mergify[bot] <37929162+mergify[bot]@users.noreply.github.com>
|
|
* Elide emission of literals for async reset in sensitivity lists
* Deprecate LegalizeClocksTransform
Co-authored-by: mergify[bot] <37929162+mergify[bot]@users.noreply.github.com>
|
|
|
|
* Fix bug in Uniquify clobbering DefInstance types
* Change ReplaceMemTransform to not run Uniquify nor fixups
Use invalidation as mechanism for rerunning resolution passes
|
|
Apply Scalafmt Rewriting
|
|
|
|
|
|
|
|
- .scalafmt.conf formatting rules
- .travs.yml adds test that files are formatted to pass CI
- .plugins.sbt add plugin for scalafmt
|
|
This adds an experimental new SMTLib and Btor2 emitter
that converts a firrtl module into a format
suitable for open source model checkers.
The format generally follows the behavior of yosys'
write_smt2 and write_btor commands.
To generate btor2 for the module in m.fir run
> ./utils/bin/firrtl -i m.fir -E experimental-btor2
for SMT:
> ./utils/bin/firrtl -i m.fir -E experimental-smt2
If you have a design with multiple clocks
or an asynchronous reset, try out the new StutteringClockTransform.
You can designate any input of type Clock to be your
global simulation clock using the new GlobalClockAnnotation.
If your toplevel module instantiates submodules,
you need to inline them if you want the submodule
logic to be included in the formal model.
|
|
* test: add LeanTransformSpec to replace the old SimpleTransformSpec
SimpleTransformSpec isn't simple anymore!
* AnnotationTests: remove deprecated Compiler code
* LeanTransformSpec: implicitly add right EmitCircuitAnnotation
* AsyncResetSpec: move to new lean spec
* CheckCombLoopsSpec: remove deprecated Compiler code
* ChirrtlMemSpec: remove deprecated compiler code
* CompilerTest: remove use of deprecated Compiler API
|
|
Also fix mill build to include new BuildInfo
Leave Scala 2.13.2 alone, there are problems when bumping
|
|
* Deprecate support for Scala 2.11
Printed as warning in transform, can be suppressed via CLI
* Place version deprecation message in object
Refactor CheckScalaVersion to place the deprecation message inside the
companion object. This lets the object be reused in other places, like
in tests.
Signed-off-by: Schuyler Eldridge <schuyler.eldridge@ibm.com>
* Check Scala 2.11 deprecation messages in tests
Fix FirrtlMainSpec to check that the Scala 2.11 deprecation message
added by the CheckScalaVersion transform shows up on stdout, but only
if tests are running under 2.11.
Signed-off-by: Schuyler Eldridge <schuyler.eldridge@ibm.com>
Co-authored-by: Schuyler Eldridge <schuyler.eldridge@ibm.com>
Co-authored-by: mergify[bot] <37929162+mergify[bot]@users.noreply.github.com>
|