* adding scalaFix to the projecting, using two make targets, `scala-lint` and `scala-lint-check`
* adding documentation
Co-authored-by: David Biancolin <david.biancolin@sifive.com>
The STEP and DONE fields of the simulation master were fully determined by the behaviour of the peek poke bridge.
Since that stepping logic is closely tied to peek-poke logic, this PR moves it into that bridge.
Temporarily, the `firesim_top` harness now uses PeekPoke to drive the simulation. This will be removed in a future PR.
This PR adds a new make target, `clang-tidy` to run clang-tidy on all C++ sources.
Only a dummy check is enabled, as this patch applies the minimal number of fixes
to compile headers and sources with clang without the header. In a subsequent PR,
more checks will be enabled and the files will be formatted.
`clang-tidy` can be executed using `make -C sim clang-tidy`. It will automatically
apply fixes to known issues.
The widget/bridge hierarchy is now rooted at widgets.
In order to dynamically distinguish classes, an RTTI mechanism was added, along with
`widget_cast` and `widget_isa` methods.
The build system includes 3 targets caching the classpath containing compiled jars to be used by subsequent java invocations, fully bypassing the slow sbt setup on repeated invocations to SBT.
Modified the following commit from Author: Chick Markley (#1388)
Fixes needed to support Scala 2.13
Mostly need .toSeq on mutable Seqs
A few import resolution, was pickup wrong Utils.
Fixed Seq problem returned in tuple
The Dromajo bit suffers from a fair bit of bit rot. This patch fixes breakages from stream engines and MMIO port rewrites.
The Dromajo bridge is now compiled as part of the support library, ensuring at least the C++ side is kept updated.
Due to its use of an additional header, it is an interesting bridge to keep maintaining.
The bridge is not tested as the Scala counterpart does not compile with Chipyard at the moment.
Fix these Scala warnings, authored by John Ingalls:
* use SeededRandom.lfsr instead of helper LFSR64
* supply empty argument list '()' explicitly to invoke method
* empty parameter list overrides method without any
* method without a parameter list overrides a method with a single empty one
* call method 'fire' without parentheses
* add ': Unit =' explicit return type
* firesim infrasetup now puts the contents into a tarball before deploy
* the supported formats are .tar .tar.gz and the other formats that GNU tar can autodetect
* updated documentation
* `driver_tar` key added to `config_hwdb.yaml` which allows the tarball to be built elsewhere but still deployed in the same manner