Spike Co-simulation with BOOM designs
Instead of using TracerV to provide a cycle-by-cycle trace of a target CPU’s architectural state, you can use the Spike co-simulator to verify the functionality of a BOOM design.
Note
This work currently only works for single core BOOM designs.
Note
Cospike only supports non block-device simulations at this time.
Building a Design with Cospike
In all FireChip designs, TracerV is included by default.
To enable Cospike, you just need to add the Cospike bridge (WithCospikeBridge
) to your BOOM target design config (default configs. located in $CHIPYARD/generators/firechip/src/main/scala/TargetConfigs.scala
).
An example configuration with Cospike is shown below:
class FireSimLargeBoomConfig extends Config(
new WithCospikeBridge ++ // add Cospike bridge to simulation
new WithDefaultFireSimBridges ++
new WithDefaultMemModel ++
new WithFireSimConfigTweaks ++
new chipyard.LargeBoomConfig)
At this point, you should run the firesim buildbitstream
command for the BOOM config wanted.
At this point you are ready to run the simulation with Cospike by default enabled.
Troubleshooting Cospike Simulations with Meta-Simulations
If FPGA simulation fails with Cospike, you can use metasimulation to determine if your Cospike setup is correct. First refer to Debugging & Testing with Metasimulation for more information on metasimulation.
Note
Sometimes simulations in VCS will diverge unless a +define+RANDOM=0
is added to the VCS flags in sim/midas/src/main/cc/rtlsim/Makefrag-vcs
.