diff --git a/docs/Simulation/Software-RTL-Simulation.rst b/docs/Simulation/Software-RTL-Simulation.rst index 8c87cc80..c84673b9 100644 --- a/docs/Simulation/Software-RTL-Simulation.rst +++ b/docs/Simulation/Software-RTL-Simulation.rst @@ -223,3 +223,29 @@ The ``VERILATOR_THREADS=`` option enables the compiled Verilator simulator On a multi-socket machine, you will want to make sure all threads are on the same socket by using ``NUMACTL=1`` to enable ``numactl``. By enabling this, you will use Chipyard's ``numa_prefix`` wrapper, which is a simple wrapper around ``numactl`` that runs your verilated simulator like this: ``$(numa_prefix) ./simulator- ``. Note that both these flags are mutually exclusive, you can use either independently (though it makes sense to use ``NUMACTL`` just with ``VERILATOR_THREADS=8`` during a Verilator simulation). + + +Speeding up your RTL Simulation by 2x! +----------------------------------------------- + +There are many cases when your custom module interfaces with Tilelink (e.g., when you write a custom accelerator). +Wrong interfaces with Tilelink can cause the SoC to hang and can be tricky to debug. +To help deal with these situations, you can add hardware modules called Tilelink monitors into +your SoC that will fire assertions when wrong Tilelink messages are sent. +However, these modules can significantly slow down the speed of your RTL simulation. + +These modules are added to the SoC as a default and users have to manually +remove these modules by adding the below line into your config. + +.. code-block:: scala + + new freechips.rocketchip.subsystem.WithoutTLMonitors ++ + + +For instance: + +.. code-block:: scala + + class FastRTLSimRocketConfig extends Config( + new freechips.rocketchip.subsystem.WithoutTLMonitors ++ + new chipyard.RocketConfig) diff --git a/generators/chipyard/src/main/scala/config/RocketConfigs.scala b/generators/chipyard/src/main/scala/config/RocketConfigs.scala index 0ddb3737..d3f21584 100644 --- a/generators/chipyard/src/main/scala/config/RocketConfigs.scala +++ b/generators/chipyard/src/main/scala/config/RocketConfigs.scala @@ -96,3 +96,7 @@ class ClusteredRocketConfig extends Config( new freechips.rocketchip.subsystem.WithCluster(1) ++ new freechips.rocketchip.subsystem.WithCluster(0) ++ new chipyard.config.AbstractConfig) + +class FastRTLSimRocketConfig extends Config( + new freechips.rocketchip.subsystem.WithoutTLMonitors ++ + new chipyard.RocketConfig)