BOOM Bump w. Fromajo (#523)
* [uart] add uart adapter | add uart + adapter to all configs * [uart] change pty define name | add uart to all configs that need it * [uart] default to 115200 baudrate * [dromajo] first working commit * [dromajo] bump boom for commit-width > 1 fix * [dromajo] adjust dromajo commits * [dromajo] bump boom * commit dromajo changes * extra * [dromajo] add block device to configs * rebump older modules * bump firesim * [chipyard] enable dromajo in midas level simulation * [testchipip] forgot to bump * get rid of breaking things * bump firesim * bump boom * Bump BOOM to ifu3 WIP * bump firesim * fix how memory is passed to dromajo * bump boom and firesim * fix merge issues * add dromajo cosim bridge in chipyard * move traceio back into testchipip (#488) * refer to testchipip traceio in firechip (#490) * Move TraceIO fragment to chipyard (#492) * fix chipyard dromajo bridge (#493) * Sboom dromajo bump (#501) * [FireChip] Use clock in BridgeBinders * [firesim] Update TraceGen BridgeBinder * [Firechip] Add support for Tile <-> Uncore rational division * [firesim] Update the multiclock test * [firechip] Commit some Eagle X-related mock configs * [firechip] Instantiate multiple TracerV bridges * [Firechip] Include reset in tracerv tokens * [TracerV] Drop the first token in comparison tests * [Firechip] Make reverse instruction order in trace printf * WARNING: Point at a fork of boom @ davidbiancolin * [firesim] Update ClockBridge API * Add Gemmini to README [ci skip] (#487) * [firechip] Isolate all firesim-multiclock stuff in a single file * add documentation on ring network and system bus * Bump firesim for CI * Bump FireSim * Bump testchipip to dev [ci skip] * Bump FireSim * [make] split up specific make vars/targets into frags (#499) * [make] split up specific make vars/targets into frags * [make] move dramsim and max-cycles into SIM_FLAGS * [misc] move ariane configs to configs/ folder * [dromajo] add dromajo * [dromajo] bump for new traceio changes * bump firesim * bump firesim * point to chipyard traceio * bump boom Co-authored-by: David Biancolin <david.biancolin@gmail.com> Co-authored-by: Howard Mao <zhehao.mao@gmail.com> * Support Dromajo + TracerV configurations * [docs] add documentation for Dromajo in FireSim + Chipyard * add a bit more docs * [docs] bump docs * [firesim] dump artefacts in firesim * [firesim] update firesim * [testchipip] remove extraneous items in testchipip * [dromajo] prevent dromajo from breaking when params unset * update firesim, dromajo, and testchipip * [firesim] bump firesim * [firesim] bump firesim * [misc] bump firesim and testchipip for reviewer comments * remove WithNoGPIO fragment * bump firesim * bump dromajo boom config * bump firesim * generate artefacts in firesim testsuite Co-authored-by: abejgonzalez <abe.j.gonza@gmail.com> Co-authored-by: Abraham Gonzalez <abe.gonzalez@berkeley.edu> Co-authored-by: David Biancolin <david.biancolin@gmail.com> Co-authored-by: Howard Mao <zhehao.mao@gmail.com>
This commit is contained in:
@@ -86,9 +86,32 @@ identical program behavior. The torture utility can also be configured to run
|
||||
continuously for stress-testing. The torture utility exists within the ``utilities``
|
||||
directory.
|
||||
|
||||
Dromajo Co-simulation for BOOM designs
|
||||
--------------------------------------
|
||||
Dromajo co-simulation is setup to work when two config. fragments are added to a BOOM config.
|
||||
First, a ``chipyard.config.WithTraceIO`` config. fragment must be added so that BOOM's traceport is enabled.
|
||||
Second, a ``chipyard.iobinders.WithSimDromajoBridge`` config. fragment must be added to
|
||||
connect the Dromajo co-simulator to the traceport.
|
||||
Once both config. fragments are added Dromajo should be enabled.
|
||||
|
||||
To build/run Dromajo with a BOOM design, run your configuration the following make commands:
|
||||
|
||||
.. code-block:: shell
|
||||
|
||||
# build the default Dromajo BOOM config. without waveform dumps
|
||||
# replace "DromajoBoomConfig" with your particular config
|
||||
make CONFIG=DromajoBoomConfig ENABLE_DROMAJO=1
|
||||
|
||||
# run a simulation with Dromajo
|
||||
make CONFIG=DromajoBoomConfig ENABLE_DROMAJO=1 BINARY=<YOUR-BIN> run-binary
|
||||
|
||||
.. warning:: Dromajo currently only works in single-core BOOM systems without accelerators.
|
||||
|
||||
.. warning:: Dromajo currently only works in VCS simulation and FireSim.
|
||||
|
||||
Firesim Debugging
|
||||
---------------------------
|
||||
Chisel printfs, asserts, and waveform generation are also available in FireSim
|
||||
Chisel printfs, asserts, Dromajo co-simulation, and waveform generation are also available in FireSim
|
||||
FPGA-accelerated simulation. See the FireSim
|
||||
`documentation <https://docs.fires.im/en/latest/>`__ for more detail.
|
||||
|
||||
|
||||
@@ -79,6 +79,10 @@ Tools
|
||||
**Dsptools**
|
||||
A Chisel library for writing custom signal processing hardware, as well as integrating custom signal processing hardware into an SoC (especially a Rocket-based SoC).
|
||||
|
||||
**Dromajo**
|
||||
A RV64GC emulator primarily used for co-simulation and was originally developed by Esperanto Technology.
|
||||
See :ref:`Dromajo` for more information.
|
||||
|
||||
Toolchains
|
||||
-------------------------------------------
|
||||
|
||||
|
||||
22
docs/Tools/Dromajo.rst
Normal file
22
docs/Tools/Dromajo.rst
Normal file
@@ -0,0 +1,22 @@
|
||||
Dromajo
|
||||
===============================
|
||||
|
||||
`Dromajo <https://github.com/chipsalliance/dromajo/>`__ is a RV64GC functional simulator designed for co-simulation.
|
||||
To use it as a co-simulator, it requires you to pass the committed trace of instructions coming from the core into the tool.
|
||||
Within Chipyard, this is done by connecting to the `TracePort`` signals that are piped to the top level of the DUT.
|
||||
While the Rocket core does have a `TracePort`, it does not provide the committed write data that Dromajo requires.
|
||||
Thus, Dromajo uses the `ExtendedTracePort` only probided by BOOM (BOOM is the only core that supports Dromajo co-simulation).
|
||||
An example of a divergence and Dromajo's printout is shown below.
|
||||
|
||||
.. code-block:: shell
|
||||
|
||||
[error] EMU PC ffffffe001055d84, DUT PC ffffffe001055d84
|
||||
[error] EMU INSN 14102973, DUT INSN 14102973
|
||||
[error] EMU WDATA 00000000000220d6, DUT WDATA 00000000000220d4
|
||||
[error] EMU MSTATUS a000000a0, DUT MSTATUS 00000000
|
||||
[error] DUT pending exception -1 pending interrupt -1
|
||||
|
||||
Dromajo shows the divergence compared to simulation (PC, inst, inst-bits, write data, etc) and also provides the register state on failure.
|
||||
It is useful to catch bugs that affect architectural state before a simulation hangs or crashes.
|
||||
|
||||
To use Dromajo with BOOM, refer to :ref:`Debugging RTL` section on Dromajo.
|
||||
@@ -14,4 +14,4 @@ The following pages will introduce them, and how we can use them in order to gen
|
||||
Chisel-Testers
|
||||
Dsptools
|
||||
Barstools
|
||||
|
||||
Dromajo
|
||||
|
||||
Reference in New Issue
Block a user