Update docs on bringup sims
This commit is contained in:
@@ -183,28 +183,21 @@ This new setup (shown below) is a typical Chipyard test chip setup:
|
|||||||
Simulation Setup of the Example Test Chip
|
Simulation Setup of the Example Test Chip
|
||||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
To test this type of configuration (TSI/memory transactions over the serial-link), most of the same TSI collateral
|
The standard test-chip bringup procedure tethers the chip to a FPGA config with serialized tilelink.
|
||||||
would be used.
|
|
||||||
The main difference is that the TileLink-to-AXI converters and simulated AXI memory resides on the other side of the
|
|
||||||
serial-link.
|
|
||||||
|
|
||||||
.. image:: ../_static/images/chip-bringup-simulation.png
|
.. image:: ../_static/images/chip-bringup-simulation.png
|
||||||
|
|
||||||
.. note::
|
The entire bringup procedure can be simulated using the Multi-ChipTop simulation feature, where
|
||||||
Here the simulated AXI memory and the converters can be in a different clock domain in the test harness
|
one ``ChipTop`` is the design-to-be-taped-out, while the other is the FPGA bringup design.
|
||||||
than the reference clock of the DUT.
|
|
||||||
For example, the DUT can be clocked at 3.2GHz while the simulated AXI memory can be clocked at 1GHz.
|
|
||||||
This functionality is done in the harness binder that instantiates the TSI collateral, TL-to-AXI converters,
|
|
||||||
and simulated AXI memory.
|
|
||||||
See :ref:`Advanced-Concepts/Harness-Clocks:Creating Clocks in the Test Harness` on how to generate a clock
|
|
||||||
in a harness binder.
|
|
||||||
|
|
||||||
This type of simulation setup is done in the following multi-clock configuration:
|
This system can be generated and simulated with the following example configuration, which marries
|
||||||
|
a ``ChipLikeRocketConfig`` (the design to be taped-out) with the ``ChipBringupHostConfig`` (the FPGA
|
||||||
|
bringup design).
|
||||||
|
|
||||||
.. literalinclude:: ../../generators/chipyard/src/main/scala/config/RocketConfigs.scala
|
.. literalinclude:: ../../generators/chipyard/src/main/scala/config/ChipConfigs.scala
|
||||||
:language: scala
|
:language: scala
|
||||||
:start-after: DOC include start: MulticlockAXIOverSerialConfig
|
:start-after: DOC include start: TetheredChipLikeRocketConfig
|
||||||
:end-before: DOC include end: MulticlockAXIOverSerialConfig
|
:end-before: DOC include end: TetheredChipLikeRocketConfig
|
||||||
|
|
||||||
Softcore-driven Bringup Setup of the Example Test Chip after Tapeout
|
Softcore-driven Bringup Setup of the Example Test Chip after Tapeout
|
||||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
|||||||
@@ -89,12 +89,13 @@ class ChipBringupHostConfig extends Config(
|
|||||||
// Base is the no-cores config
|
// Base is the no-cores config
|
||||||
new chipyard.NoCoresConfig)
|
new chipyard.NoCoresConfig)
|
||||||
|
|
||||||
|
// DOC include start: TetheredChipLikeRocketConfig
|
||||||
class TetheredChipLikeRocketConfig extends Config(
|
class TetheredChipLikeRocketConfig extends Config(
|
||||||
new chipyard.harness.WithAbsoluteFreqHarnessClockInstantiator ++ // use absolute freqs for sims in the harness
|
new chipyard.harness.WithAbsoluteFreqHarnessClockInstantiator ++ // use absolute freqs for sims in the harness
|
||||||
new chipyard.harness.WithMultiChipSerialTL(0, 1) ++ // connect the serial-tl ports of the chips together
|
new chipyard.harness.WithMultiChipSerialTL(0, 1) ++ // connect the serial-tl ports of the chips together
|
||||||
new chipyard.harness.WithMultiChip(0, new ChipLikeRocketConfig) ++
|
new chipyard.harness.WithMultiChip(0, new ChipLikeRocketConfig) ++ // ChipTop0 is the design-to-be-taped-out
|
||||||
new chipyard.harness.WithMultiChip(1, new ChipBringupHostConfig))
|
new chipyard.harness.WithMultiChip(1, new ChipBringupHostConfig)) // ChipTop1 is the bringup design
|
||||||
|
// DOC include end: TetheredChipLikeRocketConfig
|
||||||
|
|
||||||
// Verilator does not initialize some of the async-reset reset-synchronizer
|
// Verilator does not initialize some of the async-reset reset-synchronizer
|
||||||
// flops properly, so this config disables them.
|
// flops properly, so this config disables them.
|
||||||
|
|||||||
Reference in New Issue
Block a user