Merge pull request #1224 from ucb-bar/constellation-integrate
Add support for NoC based interconnect with Constellation
This commit is contained in:
5
.github/scripts/defaults.sh
vendored
5
.github/scripts/defaults.sh
vendored
@@ -28,8 +28,9 @@ declare -A grouping
|
||||
grouping["group-cores"]="chipyard-cva6 chipyard-ibex chipyard-rocket chipyard-hetero chipyard-boom chipyard-sodor chipyard-digitaltop chipyard-multiclock-rocket chipyard-nomem-scratchpad"
|
||||
grouping["group-peripherals"]="chipyard-dmirocket chipyard-blkdev chipyard-spiflashread chipyard-spiflashwrite chipyard-mmios chipyard-lbwif"
|
||||
grouping["group-accels"]="chipyard-fftgenerator chipyard-nvdla chipyard-sha3 chipyard-hwacha chipyard-gemmini chipyard-streaming-fir chipyard-streaming-passthrough"
|
||||
grouping["group-constellation"]="chipyard-constellation"
|
||||
grouping["group-tracegen"]="tracegen tracegen-boom"
|
||||
grouping["group-other"]="icenet testchipip"
|
||||
grouping["group-other"]="icenet testchipip constellation"
|
||||
grouping["group-fpga"]="arty vcu118"
|
||||
|
||||
# key value store to get the build strings
|
||||
@@ -58,7 +59,9 @@ mapping["chipyard-sodor"]=" CONFIG=Sodor5StageConfig"
|
||||
mapping["chipyard-multiclock-rocket"]=" CONFIG=MulticlockRocketConfig"
|
||||
mapping["chipyard-nomem-scratchpad"]=" CONFIG=MMIOScratchpadOnlyRocketConfig"
|
||||
mapping["chipyard-fftgenerator"]=" CONFIG=FFTRocketConfig"
|
||||
mapping["chipyard-constellation"]=" CONFIG=SharedNoCConfig"
|
||||
|
||||
mapping["constellation"]=" SUB_PROJECT=constellation"
|
||||
mapping["firesim"]="SCALA_TEST=firesim.firesim.RocketNICF1Tests"
|
||||
mapping["firesim-multiclock"]="SCALA_TEST=firesim.firesim.RocketMulticlockF1Tests"
|
||||
mapping["fireboom"]="SCALA_TEST=firesim.firesim.BoomF1Tests"
|
||||
|
||||
7
.github/scripts/remote-do-rtl-build.sh
vendored
7
.github/scripts/remote-do-rtl-build.sh
vendored
@@ -18,6 +18,13 @@ cd $REMOTE_CHIPYARD_DIR
|
||||
./scripts/init-submodules-no-riscv-tools.sh --force
|
||||
./scripts/init-fpga.sh
|
||||
|
||||
|
||||
# Constellation can run without espresso, but this improves
|
||||
# elaboration time drastically
|
||||
pushd $REMOTE_CHIPYARD_DIR/generators/constellation
|
||||
scripts/install-espresso.sh $RISCV
|
||||
popd
|
||||
|
||||
if [ $1 = "group-accels" ]; then
|
||||
pushd $REMOTE_CHIPYARD_DIR/generators/gemmini/software
|
||||
git submodule update --init --recursive gemmini-rocc-tests
|
||||
|
||||
6
.github/scripts/run-tests.sh
vendored
6
.github/scripts/run-tests.sh
vendored
@@ -102,12 +102,18 @@ case $1 in
|
||||
make -C $LOCAL_CHIPYARD_DIR/tests
|
||||
make -C $LOCAL_SIM_DIR $DISABLE_SIM_PREREQ ${mapping[$1]} BINARY=$LOCAL_CHIPYARD_DIR/tests/fft.riscv run-binary-fast
|
||||
;;
|
||||
chipyard-constellation)
|
||||
run_bmark ${mapping[$1]}
|
||||
;;
|
||||
icenet)
|
||||
make run-binary-fast BINARY=none -C $LOCAL_SIM_DIR $DISABLE_SIM_PREREQ ${mapping[$1]}
|
||||
;;
|
||||
testchipip)
|
||||
make run-binary-fast BINARY=none -C $LOCAL_SIM_DIR $DISABLE_SIM_PREREQ ${mapping[$1]}
|
||||
;;
|
||||
constellation)
|
||||
make run-binary-fast BINARY=none -C $LOCAL_SIM_DIR $DISABLE_SIM_PREREQ ${mapping[$1]}
|
||||
;;
|
||||
*)
|
||||
echo "No set of tests for $1. Did you spell it right?"
|
||||
exit 1
|
||||
|
||||
106
.github/workflows/chipyard-run-tests.yml
vendored
106
.github/workflows/chipyard-run-tests.yml
vendored
@@ -261,6 +261,28 @@ jobs:
|
||||
with:
|
||||
group-key: "group-cores"
|
||||
|
||||
prepare-chipyard-constellation:
|
||||
name: prepare-chipyard-constellation
|
||||
needs: setup-complete
|
||||
runs-on: self-hosted
|
||||
steps:
|
||||
- name: Delete old checkout
|
||||
run: |
|
||||
ls -alh .
|
||||
rm -rf ${{ github.workspace }}/* || true
|
||||
rm -rf ${{ github.workspace }}/.* || true
|
||||
ls -alh .
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v3
|
||||
- name: Git workaround
|
||||
uses: ./.github/actions/git-workaround
|
||||
- name: Create conda env
|
||||
uses: ./.github/actions/create-conda-env
|
||||
- name: Build RTL on self-hosted
|
||||
uses: ./.github/actions/prepare-rtl
|
||||
with:
|
||||
group-key: "group-constellation"
|
||||
|
||||
prepare-chipyard-peripherals:
|
||||
name: prepare-chipyard-peripherals
|
||||
needs: setup-complete
|
||||
@@ -861,6 +883,53 @@ jobs:
|
||||
group-key: "group-other"
|
||||
project-key: "testchipip"
|
||||
|
||||
constellation-run-tests:
|
||||
name: constellation-run-tests
|
||||
needs: prepare-chipyard-other
|
||||
runs-on: self-hosted
|
||||
steps:
|
||||
- name: Delete old checkout
|
||||
run: |
|
||||
ls -alh .
|
||||
rm -rf ${{ github.workspace }}/* || true
|
||||
rm -rf ${{ github.workspace }}/.* || true
|
||||
ls -alh .
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v3
|
||||
- name: Git workaround
|
||||
uses: ./.github/actions/git-workaround
|
||||
- name: Create conda env
|
||||
uses: ./.github/actions/create-conda-env
|
||||
- name: Run tests
|
||||
uses: ./.github/actions/run-tests
|
||||
with:
|
||||
group-key: "group-other"
|
||||
project-key: "constellation"
|
||||
|
||||
chipyard-constellation-run-tests:
|
||||
name: chipyard-constellation-run-tests
|
||||
needs: prepare-chipyard-constellation
|
||||
runs-on: self-hosted
|
||||
steps:
|
||||
- name: Delete old checkout
|
||||
run: |
|
||||
ls -alh .
|
||||
rm -rf ${{ github.workspace }}/* || true
|
||||
rm -rf ${{ github.workspace }}/.* || true
|
||||
ls -alh .
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v3
|
||||
- name: Git workaround
|
||||
uses: ./.github/actions/git-workaround
|
||||
- name: Create conda env
|
||||
uses: ./.github/actions/create-conda-env
|
||||
- name: Run tests
|
||||
uses: ./.github/actions/run-tests
|
||||
with:
|
||||
group-key: "group-constellation"
|
||||
project-key: "chipyard-constellation"
|
||||
|
||||
|
||||
firesim-run-tests:
|
||||
name: firesim-run-tests
|
||||
needs: setup-complete
|
||||
@@ -939,16 +1008,35 @@ jobs:
|
||||
# When adding new top level jobs, please add them to `needs` below
|
||||
all_tests_passed:
|
||||
name: "all tests passed"
|
||||
needs: [commit-on-master-check, tutorial-setup-check, documentation-check,
|
||||
chipyard-rocket-run-tests, chipyard-hetero-run-tests, chipyard-boom-run-tests, chipyard-cva6-run-tests, chipyard-ibex-run-tests,
|
||||
chipyard-sodor-run-tests, chipyard-dmirocket-run-tests, chipyard-spiflashwrite-run-tests, chipyard-fftgenerator-run-tests,
|
||||
chipyard-spiflashread-run-tests, chipyard-lbwif-run-tests, chipyard-sha3-run-tests,
|
||||
chipyard-streaming-fir-run-tests, chipyard-streaming-passthrough-run-tests, chipyard-hwacha-run-tests,
|
||||
chipyard-gemmini-run-tests, chipyard-nvdla-run-tests,
|
||||
tracegen-boom-run-tests, tracegen-run-tests,
|
||||
icenet-run-tests, testchipip-run-tests,
|
||||
needs: [commit-on-master-check,
|
||||
tutorial-setup-check,
|
||||
documentation-check,
|
||||
chipyard-rocket-run-tests,
|
||||
chipyard-hetero-run-tests,
|
||||
chipyard-boom-run-tests,
|
||||
chipyard-cva6-run-tests,
|
||||
chipyard-ibex-run-tests,
|
||||
chipyard-sodor-run-tests,
|
||||
chipyard-dmirocket-run-tests,
|
||||
chipyard-spiflashwrite-run-tests,
|
||||
chipyard-fftgenerator-run-tests,
|
||||
chipyard-spiflashread-run-tests,
|
||||
chipyard-lbwif-run-tests,
|
||||
chipyard-sha3-run-tests,
|
||||
chipyard-streaming-fir-run-tests,
|
||||
chipyard-streaming-passthrough-run-tests,
|
||||
chipyard-hwacha-run-tests,
|
||||
chipyard-gemmini-run-tests,
|
||||
chipyard-nvdla-run-tests,
|
||||
chipyard-constellation-run-tests,
|
||||
tracegen-boom-run-tests,
|
||||
tracegen-run-tests,
|
||||
icenet-run-tests,
|
||||
testchipip-run-tests,
|
||||
constellation-run-tests,
|
||||
prepare-chipyard-fpga, # firesim-run-tests,
|
||||
fireboom-run-tests, firesim-multiclock-run-tests]
|
||||
fireboom-run-tests,
|
||||
firesim-multiclock-run-tests]
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- run: echo Success!
|
||||
|
||||
1
.gitignore
vendored
1
.gitignore
vendored
@@ -21,3 +21,4 @@ env-riscv-tools.sh
|
||||
env-esp-tools.sh
|
||||
.bsp/
|
||||
.conda-env/
|
||||
.#*
|
||||
3
.gitmodules
vendored
3
.gitmodules
vendored
@@ -127,3 +127,6 @@
|
||||
[submodule "toolchains/libgloss"]
|
||||
path = toolchains/libgloss
|
||||
url = https://github.com/ucb-bar/libgloss-htif.git
|
||||
[submodule "generators/constellation"]
|
||||
path = generators/constellation
|
||||
url = https://github.com/ucb-bar/constellation.git
|
||||
|
||||
@@ -148,7 +148,13 @@ lazy val chipyard = (project in file("generators/chipyard"))
|
||||
.dependsOn(testchipip, rocketchip, boom, hwacha, sifive_blocks, sifive_cache, iocell,
|
||||
sha3, // On separate line to allow for cleaner tutorial-setup patches
|
||||
dsptools, `rocket-dsp-utils`,
|
||||
gemmini, icenet, tracegen, cva6, nvdla, sodor, ibex, fft_generator)
|
||||
gemmini, icenet, tracegen, cva6, nvdla, sodor, ibex, fft_generator,
|
||||
constellation)
|
||||
.settings(libraryDependencies ++= rocketLibDeps.value)
|
||||
.settings(commonSettings)
|
||||
|
||||
lazy val constellation = (project in file("generators/constellation"))
|
||||
.dependsOn(rocketchip)
|
||||
.settings(libraryDependencies ++= rocketLibDeps.value)
|
||||
.settings(commonSettings)
|
||||
|
||||
|
||||
@@ -38,7 +38,7 @@ We also see this class define several ``ElaborationArtefacts``, files emitted af
|
||||
Subsystem
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
Looking in `generators/chipyard/src/main/scala/Subsystem.scala <https://github.com/ucb-bar/chipyard/blob/master/generators/chipyard/src/main/scala/Subsystem.scala>`__, we can see how Chipyard's ``Subsystem``
|
||||
Looking in `generators/chipyard/src/main/scala/Subsystem.scala <https://github.com/ucb-bar/chipyard/blob/main/generators/chipyard/src/main/scala/Subsystem.scala>`__, we can see how Chipyard's ``Subsystem``
|
||||
extends the ``BaseSubsystem`` abstract class. ``Subsystem`` mixes in the ``HasBoomAndRocketTiles`` trait that
|
||||
defines and instantiates BOOM or Rocket tiles, depending on the parameters specified.
|
||||
We also connect some basic IOs for each tile here, specifically the hartids and the reset vector.
|
||||
|
||||
@@ -47,6 +47,9 @@ Accelerators
|
||||
System Components:
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
**constellation**
|
||||
A generator for network-on-chip (NoC) interconnects.
|
||||
|
||||
**icenet**
|
||||
A Network Interface Controller (NIC) designed to achieve up to 200 Gbps.
|
||||
|
||||
|
||||
34
docs/Customization/NoC-SoCs.rst
Normal file
34
docs/Customization/NoC-SoCs.rst
Normal file
@@ -0,0 +1,34 @@
|
||||
SoCs with NoC-based Interconnects
|
||||
==================================
|
||||
|
||||
The primary way to integrate a network-on-chip into a Chipyard SoC is to map one of the standard TileLink crossbar-based buses (System Bus, Memory Bus, Control Bus, etc.) to a Constellation-generated NoC.
|
||||
|
||||
The interconnect can be mapped as a "private" interconnect for the TileLink bus, in which case a dedicated interconnect to carry the bus traffic will be generated.
|
||||
Alternatively, the interconnect can be mapped to a shared global interconnect, in which case multiple TileLink buses can be transported over a single shared interconnect.
|
||||
|
||||
Private Interconnects
|
||||
---------------------
|
||||
An example of integrating dedicated private interconnects for the System Bus, Memory Bus, and Control Bus can be seen in the ``MultiNoCConfig`` of `generators/chipyard/src/main/scala/config/NoCConfigs.scala <https://github.com/ucb-bar/chipyard/blob/main/generators/chipyard/src/main/scala/config/NoCConfigs.scala>`__.
|
||||
|
||||
.. literalinclude:: ../../generators/chipyard/src/main/scala/config/NoCConfigs.scala
|
||||
:language: scala
|
||||
:start-after: DOC include start: MultiNoCConfig
|
||||
:end-before: DOC include end: MultiNoCConfig
|
||||
|
||||
Note that for each bus (``Sbus`` / ``Mbus`` / ``Cbus``), the configuration fragment provides both a parameterization of the private NoC, as well as a mapping between TileLink agents and physical NoC nodes.
|
||||
|
||||
For more information on how to construct the NoC parameters, see the `Constellation documentation <http://constellation.readthedocs.io>`__.
|
||||
|
||||
|
||||
Shared Global Interconnect
|
||||
---------------------------
|
||||
An example of integrating a single global interconnect that supports transporting multiple TileLink buses can be seen in the ``SharedNoCConfig`` of `generators/chipyard/src/main/scala/config/NoCConfigs.scala <https://github.com/ucb-bar/chipyard/blob/main/generators/chipyard/src/main/scala/config/NoCConfigs.scala>`__.
|
||||
|
||||
.. literalinclude:: ../../generators/chipyard/src/main/scala/config/NoCConfigs.scala
|
||||
:language: scala
|
||||
:start-after: DOC include start: SharedNoCConfig
|
||||
:end-before: DOC include end: SharedNoCConfig
|
||||
|
||||
Note that for each bus, the configuration fragment provides only the mapping between TileLink agents and physical NoC nodes, while a separate fragement provides the configuration for the global interconnect.
|
||||
|
||||
For more information on how to construct the NoC parameters, see the `Constellation documentation <http://constellation.readthedocs.io>`__.
|
||||
@@ -3,7 +3,9 @@ Customization
|
||||
|
||||
These guides will walk you through customization of your system-on-chip:
|
||||
|
||||
- Contructing heterogenous systems-on-chip using the existing Chipyard generators and configuration system.
|
||||
- Constructing heterogenous systems-on-chip using the existing Chipyard generators and configuration system.
|
||||
|
||||
- Constructing SoCs with a NoC (network-on-chip) based interconnect using Constellation
|
||||
|
||||
- How to include your custom Chisel sources in the Chipyard build system
|
||||
|
||||
@@ -36,6 +38,7 @@ We recommend reading all these pages in order. Hit next to get started!
|
||||
:caption: Customization:
|
||||
|
||||
Heterogeneous-SoCs
|
||||
NoC-SoCs
|
||||
Custom-Chisel
|
||||
Custom-Core
|
||||
RoCC-or-MMIO
|
||||
|
||||
17
docs/Generators/Constellation.rst
Normal file
17
docs/Generators/Constellation.rst
Normal file
@@ -0,0 +1,17 @@
|
||||
Constellation
|
||||
========================
|
||||
|
||||
.. image:: ../_static/images/bigsoc.svg
|
||||
|
||||
`Constellation <https://github.com/ucb-bar/constellation>`__ is a Chisel NoC RTL generator framework designed from the ground up to support integration in a heterogeneous SoC and evaluation of highly irregular NoC architectures.
|
||||
|
||||
- Constellation generates **packet-switched wormhole-routed networks with virtual networks and credit-based flow control**
|
||||
- Constellation supports **arbitrary directed graph network topologies**, including **irregular** and **hierarchical** network topologies
|
||||
- Constellation includes a **routing algorithm verifier and routing-table compiler**, which can verify and generate deadlock-free routing tables for arbitrary topologies
|
||||
- Constellation is a **protocol-independent transport layer**, yet is capable of compliant deadlock-free transport of protocols like **AXI-4** and **TileLink**
|
||||
- Constellation supports drop-in **integration in Chipyard/Rocketchip SoCs**
|
||||
- Constellation is **rigorously tested**, with almost 100 different tests across as many network configurations
|
||||
|
||||
Constellation is fully integrated into Chipyard, and can be used to generate almost any interconnect in a Chipyard/Rocketchip-based SoC.
|
||||
|
||||
For documentation on Constellation, see its `documentation pages <http://constellation.readthedocs.io>`__.
|
||||
@@ -21,6 +21,7 @@ so changes to the generators themselves will automatically be used when building
|
||||
Rocket-Chip
|
||||
Rocket
|
||||
BOOM
|
||||
Constellation
|
||||
Hwacha
|
||||
Gemmini
|
||||
IceNet
|
||||
|
||||
558
docs/_static/images/bigsoc.svg
vendored
Normal file
558
docs/_static/images/bigsoc.svg
vendored
Normal file
@@ -0,0 +1,558 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
|
||||
<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xl="http://www.w3.org/1999/xlink" xmlns:dc="http://purl.org/dc/elements/1.1/" viewBox="1126.5 1347.5 796.9655 697" width="796.9655" height="697">
|
||||
<defs>
|
||||
<marker orient="auto" overflow="visible" markerUnits="strokeWidth" id="FilledArrow_Marker" stroke-linejoin="miter" stroke-miterlimit="10" viewBox="-1 -4 10 8" markerWidth="10" markerHeight="8" color="black">
|
||||
<g>
|
||||
<path d="M 8 0 L 0 -3 L 0 3 Z" fill="currentColor" stroke="currentColor" stroke-width="1"/>
|
||||
</g>
|
||||
</marker>
|
||||
<marker orient="auto" overflow="visible" markerUnits="strokeWidth" id="FilledArrow_Marker_2" stroke-linejoin="miter" stroke-miterlimit="10" viewBox="-9 -4 10 8" markerWidth="10" markerHeight="8" color="black">
|
||||
<g>
|
||||
<path d="M -8 0 L 0 3 L 0 -3 Z" fill="currentColor" stroke="currentColor" stroke-width="1"/>
|
||||
</g>
|
||||
</marker>
|
||||
</defs>
|
||||
<g id="Canvas_18" stroke-opacity="1" fill="none" fill-opacity="1" stroke-dasharray="none" stroke="none">
|
||||
<title>Canvas 18</title>
|
||||
<g id="Canvas_18_Layer_2">
|
||||
<title>Layer 2</title>
|
||||
<g id="Graphic_65">
|
||||
<rect x="1177" y="1697.3794" width="139.86167" height="253.5375" fill="#ffc0c0"/>
|
||||
<rect x="1177" y="1697.3794" width="139.86167" height="253.5375" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
|
||||
<text transform="translate(1182 1814.9241)" fill="black">
|
||||
<tspan font-family="Helvetica Neue" font-size="16" fill="black" x="33.67483" y="15">Big Core</tspan>
|
||||
</text>
|
||||
</g>
|
||||
<g id="Graphic_64">
|
||||
<rect x="1316.8617" y="1604.4293" width="179.9309" height="92.95004" fill="#c0ffff"/>
|
||||
<rect x="1316.8617" y="1604.4293" width="179.9309" height="92.95004" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
|
||||
<text transform="translate(1321.8617 1641.6804)" fill="black">
|
||||
<tspan font-family="Helvetica Neue" font-size="16" fill="black" x="55.469454" y="15">L2 Bank</tspan>
|
||||
</text>
|
||||
</g>
|
||||
<g id="Graphic_63">
|
||||
<rect x="1316.8617" y="1697.3794" width="179.9309" height="92.95004" fill="#c0ffff"/>
|
||||
<rect x="1316.8617" y="1697.3794" width="179.9309" height="92.95004" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
|
||||
<text transform="translate(1321.8617 1734.6304)" fill="black">
|
||||
<tspan font-family="Helvetica Neue" font-size="16" fill="black" x="55.469454" y="15">L2 Bank</tspan>
|
||||
</text>
|
||||
</g>
|
||||
<g id="Graphic_60">
|
||||
<rect x="1316.8617" y="1441.0831" width="134.68975" height="163.2131" fill="#c0ffc0"/>
|
||||
<rect x="1316.8617" y="1441.0831" width="134.68975" height="163.2131" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
|
||||
<text transform="translate(1321.8617 1513.4657)" fill="black">
|
||||
<tspan font-family="Helvetica Neue" font-size="16" fill="black" x="13.880872" y="15">Medium Core</tspan>
|
||||
</text>
|
||||
</g>
|
||||
<g id="Graphic_55">
|
||||
<rect x="1541" y="1790.3294" width="89.96545" height="80.29373" fill="#c0ffc0"/>
|
||||
<rect x="1541" y="1790.3294" width="89.96545" height="80.29373" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
|
||||
<text transform="translate(1546 1821.2523)" fill="black">
|
||||
<tspan font-family="Helvetica Neue" font-size="16" fill="black" x=".71872705" y="15">Small Core</tspan>
|
||||
</text>
|
||||
</g>
|
||||
<g id="Graphic_54">
|
||||
<rect x="1541" y="1870.6231" width="89.96545" height="80.29373" fill="#c0ffc0"/>
|
||||
<rect x="1541" y="1870.6231" width="89.96545" height="80.29373" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
|
||||
<text transform="translate(1546 1901.546)" fill="black">
|
||||
<tspan font-family="Helvetica Neue" font-size="16" fill="black" x=".71872705" y="15">Small Core</tspan>
|
||||
</text>
|
||||
</g>
|
||||
<g id="Graphic_53">
|
||||
<rect x="1630.9655" y="1790.3294" width="89.96545" height="80.29373" fill="#c0ffc0"/>
|
||||
<rect x="1630.9655" y="1790.3294" width="89.96545" height="80.29373" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
|
||||
<text transform="translate(1635.9655 1821.2523)" fill="black">
|
||||
<tspan font-family="Helvetica Neue" font-size="16" fill="black" x=".71872705" y="15">Small Core</tspan>
|
||||
</text>
|
||||
</g>
|
||||
<g id="Graphic_52">
|
||||
<rect x="1630.9655" y="1870.6231" width="89.96545" height="80.29373" fill="#c0ffc0"/>
|
||||
<rect x="1630.9655" y="1870.6231" width="89.96545" height="80.29373" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
|
||||
<text transform="translate(1635.9655 1901.546)" fill="black">
|
||||
<tspan font-family="Helvetica Neue" font-size="16" fill="black" x=".71872705" y="15">Small Core</tspan>
|
||||
</text>
|
||||
</g>
|
||||
<g id="Graphic_51">
|
||||
<rect x="1720.931" y="1428.2272" width="202.03462" height="231.86092" fill="#ffffc0"/>
|
||||
<rect x="1720.931" y="1428.2272" width="202.03462" height="231.86092" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
|
||||
<text transform="translate(1725.931 1534.9336)" fill="black">
|
||||
<tspan font-family="Helvetica Neue" font-size="16" fill="black" x="41.49731" y="15">ML Accelerator</tspan>
|
||||
</text>
|
||||
</g>
|
||||
<g id="Graphic_50">
|
||||
<rect x="1451.5514" y="1441.0831" width="134.68975" height="163.2131" fill="#c0ffc0"/>
|
||||
<rect x="1451.5514" y="1441.0831" width="134.68975" height="163.2131" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
|
||||
<text transform="translate(1456.5514 1513.4657)" fill="black">
|
||||
<tspan font-family="Helvetica Neue" font-size="16" fill="black" x="13.880872" y="15">Medium Core</tspan>
|
||||
</text>
|
||||
</g>
|
||||
<g id="Graphic_49">
|
||||
<rect x="1586.2412" y="1441.0831" width="134.68975" height="163.2131" fill="#c0ffc0"/>
|
||||
<rect x="1586.2412" y="1441.0831" width="134.68975" height="163.2131" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
|
||||
<text transform="translate(1591.2412 1513.4657)" fill="black">
|
||||
<tspan font-family="Helvetica Neue" font-size="16" fill="black" x="13.880872" y="15">Medium Core</tspan>
|
||||
</text>
|
||||
</g>
|
||||
<g id="Graphic_48">
|
||||
<rect x="1524.9828" y="1348.1331" width="397.98276" height="92.95004" fill="#c0c0ff"/>
|
||||
<rect x="1524.9828" y="1348.1331" width="397.98276" height="92.95004" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
|
||||
<text transform="translate(1529.9828 1385.3841)" fill="black">
|
||||
<tspan font-family="Helvetica Neue" font-size="16" fill="black" x="139.01538" y="15">DRAM Channel</tspan>
|
||||
</text>
|
||||
</g>
|
||||
<g id="Graphic_47">
|
||||
<rect x="1127" y="1348" width="397.98276" height="92.95004" fill="#c0c0ff"/>
|
||||
<rect x="1127" y="1348" width="397.98276" height="92.95004" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
|
||||
<text transform="translate(1132 1385.251)" fill="black">
|
||||
<tspan font-family="Helvetica Neue" font-size="16" fill="black" x="139.01538" y="15">DRAM Channel</tspan>
|
||||
</text>
|
||||
</g>
|
||||
<g id="Graphic_46">
|
||||
<rect x="1524.9828" y="1951.05" width="397.98276" height="92.95004" fill="#c0c0ff"/>
|
||||
<rect x="1524.9828" y="1951.05" width="397.98276" height="92.95004" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
|
||||
<text transform="translate(1529.9828 1988.301)" fill="black">
|
||||
<tspan font-family="Helvetica Neue" font-size="16" fill="black" x="139.01538" y="15">DRAM Channel</tspan>
|
||||
</text>
|
||||
</g>
|
||||
<g id="Graphic_45">
|
||||
<rect x="1127" y="1950.9169" width="397.98276" height="92.95004" fill="#c0c0ff"/>
|
||||
<rect x="1127" y="1950.9169" width="397.98276" height="92.95004" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
|
||||
<text transform="translate(1132 1988.168)" fill="black">
|
||||
<tspan font-family="Helvetica Neue" font-size="16" fill="black" x="139.01538" y="15">DRAM Channel</tspan>
|
||||
</text>
|
||||
</g>
|
||||
<g id="Graphic_44">
|
||||
<rect x="1720.931" y="1878.1258" width="134.68975" height="72.79103" fill="#ffffc0"/>
|
||||
<rect x="1720.931" y="1878.1258" width="134.68975" height="72.79103" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
|
||||
<text transform="translate(1725.931 1905.2974)" fill="black">
|
||||
<tspan font-family="Helvetica Neue" font-size="16" fill="black" x="49.90487" y="15">ISP</tspan>
|
||||
</text>
|
||||
</g>
|
||||
<g id="Graphic_43">
|
||||
<rect x="1127" y="1697.3794" width="53" height="253.5375" fill="#ccc"/>
|
||||
<rect x="1127" y="1697.3794" width="53" height="253.5375" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
|
||||
<text transform="translate(1132 1814.9241)" fill="black">
|
||||
<tspan font-family="Helvetica Neue" font-size="16" fill="black" x="10.684" y="15">I/O</tspan>
|
||||
</text>
|
||||
</g>
|
||||
<g id="Graphic_42">
|
||||
<rect x="1720.931" y="1660.3905" width="101.01731" height="149.99112" fill="#ffc0c0"/>
|
||||
<rect x="1720.931" y="1660.3905" width="101.01731" height="149.99112" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
|
||||
<text transform="translate(1725.931 1726.162)" fill="black">
|
||||
<tspan font-family="Helvetica Neue" font-size="16" fill="black" x="27.876656" y="15">RAM</tspan>
|
||||
</text>
|
||||
</g>
|
||||
<g id="Graphic_41">
|
||||
<rect x="1720.931" y="1810.427" width="134.68975" height="72.05663" fill="#ffffc0"/>
|
||||
<rect x="1720.931" y="1810.427" width="134.68975" height="72.05663" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
|
||||
<text transform="translate(1725.931 1837.2314)" fill="black">
|
||||
<tspan font-family="Helvetica Neue" font-size="16" fill="black" x="46.34487" y="15">DSP</tspan>
|
||||
</text>
|
||||
</g>
|
||||
<g id="Graphic_40">
|
||||
<rect x="1821.9482" y="1660.3905" width="101.01731" height="92.00786" fill="#ffc0c0"/>
|
||||
<rect x="1821.9482" y="1660.3905" width="101.01731" height="92.00786" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
|
||||
<text transform="translate(1826.9482 1697.1705)" fill="black">
|
||||
<tspan font-family="Helvetica Neue" font-size="16" fill="black" x="21.796656" y="15">Debug</tspan>
|
||||
</text>
|
||||
</g>
|
||||
<g id="Graphic_39">
|
||||
<rect x="1821.9482" y="1752.3984" width="101.01731" height="57.98326" fill="#ffc0c0"/>
|
||||
<rect x="1821.9482" y="1752.3984" width="101.01731" height="57.98326" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
|
||||
<text transform="translate(1826.9482 1772.166)" fill="black">
|
||||
<tspan font-family="Helvetica Neue" font-size="16" fill="black" x="26.244656" y="15">JTAG</tspan>
|
||||
</text>
|
||||
</g>
|
||||
<g id="Graphic_38">
|
||||
<rect x="1855.6207" y="1810.427" width="67.34487" height="140.48976" fill="#ccc"/>
|
||||
<rect x="1855.6207" y="1810.427" width="67.34487" height="140.48976" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
|
||||
<text transform="translate(1860.6207 1871.448)" fill="black">
|
||||
<tspan font-family="Helvetica Neue" font-size="16" fill="black" x="15.048436" y="15">NIC</tspan>
|
||||
</text>
|
||||
</g>
|
||||
<g id="Graphic_89">
|
||||
<rect x="1316.8617" y="1790.3294" width="89.96545" height="80.29373" fill="#c0ffc0"/>
|
||||
<rect x="1316.8617" y="1790.3294" width="89.96545" height="80.29373" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
|
||||
<text transform="translate(1321.8617 1821.2523)" fill="black">
|
||||
<tspan font-family="Helvetica Neue" font-size="16" fill="black" x=".71872705" y="15">Small Core</tspan>
|
||||
</text>
|
||||
</g>
|
||||
<g id="Graphic_88">
|
||||
<rect x="1316.8617" y="1870.6231" width="89.96545" height="80.29373" fill="#c0ffc0"/>
|
||||
<rect x="1316.8617" y="1870.6231" width="89.96545" height="80.29373" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
|
||||
<text transform="translate(1321.8617 1901.546)" fill="black">
|
||||
<tspan font-family="Helvetica Neue" font-size="16" fill="black" x=".71872705" y="15">Small Core</tspan>
|
||||
</text>
|
||||
</g>
|
||||
<g id="Graphic_87">
|
||||
<rect x="1406.8271" y="1790.3294" width="89.96545" height="80.29373" fill="#c0ffc0"/>
|
||||
<rect x="1406.8271" y="1790.3294" width="89.96545" height="80.29373" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
|
||||
<text transform="translate(1411.8271 1821.2523)" fill="black">
|
||||
<tspan font-family="Helvetica Neue" font-size="16" fill="black" x=".71872705" y="15">Small Core</tspan>
|
||||
</text>
|
||||
</g>
|
||||
<g id="Graphic_86">
|
||||
<rect x="1406.8271" y="1870.6231" width="89.96545" height="80.29373" fill="#c0ffc0"/>
|
||||
<rect x="1406.8271" y="1870.6231" width="89.96545" height="80.29373" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
|
||||
<text transform="translate(1411.8271 1901.546)" fill="black">
|
||||
<tspan font-family="Helvetica Neue" font-size="16" fill="black" x=".71872705" y="15">Small Core</tspan>
|
||||
</text>
|
||||
</g>
|
||||
<g id="Graphic_91">
|
||||
<rect x="1541" y="1604.4293" width="179.9309" height="92.95004" fill="#c0ffff"/>
|
||||
<rect x="1541" y="1604.4293" width="179.9309" height="92.95004" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
|
||||
<text transform="translate(1546 1641.6804)" fill="black">
|
||||
<tspan font-family="Helvetica Neue" font-size="16" fill="black" x="55.469454" y="15">L2 Bank</tspan>
|
||||
</text>
|
||||
</g>
|
||||
<g id="Graphic_90">
|
||||
<rect x="1541" y="1697.3794" width="179.9309" height="92.95004" fill="#c0ffff"/>
|
||||
<rect x="1541" y="1697.3794" width="179.9309" height="92.95004" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
|
||||
<text transform="translate(1546 1734.6304)" fill="black">
|
||||
<tspan font-family="Helvetica Neue" font-size="16" fill="black" x="55.469454" y="15">L2 Bank</tspan>
|
||||
</text>
|
||||
</g>
|
||||
<g id="Graphic_92">
|
||||
<rect x="1497.3963" y="1790.3294" width="43.60371" height="160.72055" fill="#ccc"/>
|
||||
<rect x="1497.3963" y="1790.3294" width="43.60371" height="160.72055" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
|
||||
</g>
|
||||
<g id="Graphic_93">
|
||||
<rect x="1497.3963" y="1604.4293" width="43.20742" height="185.90008" fill="#ffffc0"/>
|
||||
<rect x="1497.3963" y="1604.4293" width="43.20742" height="185.90008" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
|
||||
</g>
|
||||
<g id="Graphic_117">
|
||||
<rect x="1177" y="1441.0831" width="139.86167" height="256.29624" fill="#ffc0c0"/>
|
||||
<rect x="1177" y="1441.0831" width="139.86167" height="256.29624" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
|
||||
<text transform="translate(1182 1560.0073)" fill="black">
|
||||
<tspan font-family="Helvetica Neue" font-size="16" fill="black" x="33.67483" y="15">Big Core</tspan>
|
||||
</text>
|
||||
</g>
|
||||
<g id="Graphic_116">
|
||||
<rect x="1127" y="1441.0831" width="53" height="256.29624" fill="#ccc"/>
|
||||
<rect x="1127" y="1441.0831" width="53" height="256.29624" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
|
||||
<text transform="translate(1132 1560.0073)" fill="black">
|
||||
<tspan font-family="Helvetica Neue" font-size="16" fill="black" x="10.684" y="15">I/O</tspan>
|
||||
</text>
|
||||
</g>
|
||||
</g>
|
||||
<g id="Canvas_18_Layer_3">
|
||||
<title>Layer 3</title>
|
||||
<g id="Graphic_35">
|
||||
<circle cx="1348" cy="1803.5" r="6.50001038636234" fill="lime"/>
|
||||
<circle cx="1348" cy="1803.5" r="6.50001038636234" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
|
||||
</g>
|
||||
<g id="Graphic_34">
|
||||
<circle cx="1438" cy="1803.5" r="6.50001038636225" fill="lime"/>
|
||||
<circle cx="1438" cy="1803.5" r="6.50001038636225" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
|
||||
</g>
|
||||
<g id="Graphic_33">
|
||||
<circle cx="1519" cy="1803.5" r="6.50001038636237" fill="white"/>
|
||||
<circle cx="1519" cy="1803.5" r="6.50001038636237" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
|
||||
</g>
|
||||
<g id="Graphic_32">
|
||||
<circle cx="1600" cy="1803.5" r="6.5000103863624" fill="lime"/>
|
||||
<circle cx="1600" cy="1803.5" r="6.5000103863624" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
|
||||
</g>
|
||||
<g id="Graphic_31">
|
||||
<circle cx="1690" cy="1803.5" r="6.5000103863624" fill="lime"/>
|
||||
<circle cx="1690" cy="1803.5" r="6.5000103863624" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
|
||||
</g>
|
||||
<g id="Graphic_30">
|
||||
<circle cx="1348" cy="1884.5" r="6.50001038636237" fill="lime"/>
|
||||
<circle cx="1348" cy="1884.5" r="6.50001038636237" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
|
||||
</g>
|
||||
<g id="Graphic_29">
|
||||
<circle cx="1438" cy="1884.5" r="6.50001038636228" fill="lime"/>
|
||||
<circle cx="1438" cy="1884.5" r="6.50001038636228" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
|
||||
</g>
|
||||
<g id="Graphic_28">
|
||||
<circle cx="1519" cy="1884.5" r="6.5000103863624" fill="white"/>
|
||||
<circle cx="1519" cy="1884.5" r="6.5000103863624" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
|
||||
</g>
|
||||
<g id="Graphic_27">
|
||||
<circle cx="1600" cy="1884.5" r="6.50001038636243" fill="lime"/>
|
||||
<circle cx="1600" cy="1884.5" r="6.50001038636243" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
|
||||
</g>
|
||||
<g id="Graphic_26">
|
||||
<circle cx="1690" cy="1884.5" r="6.50001038636243" fill="lime"/>
|
||||
<circle cx="1690" cy="1884.5" r="6.50001038636243" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
|
||||
</g>
|
||||
<g id="Line_25">
|
||||
<line x1="1364.4" y1="1803.5" x2="1421.6" y2="1803.5" marker-end="url(#FilledArrow_Marker)" marker-start="url(#FilledArrow_Marker_2)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
|
||||
</g>
|
||||
<g id="Line_24">
|
||||
<line x1="1454.4" y1="1803.5" x2="1502.6" y2="1803.5" marker-end="url(#FilledArrow_Marker)" marker-start="url(#FilledArrow_Marker_2)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
|
||||
</g>
|
||||
<g id="Line_23">
|
||||
<line x1="1535.4" y1="1803.5" x2="1583.6" y2="1803.5" marker-end="url(#FilledArrow_Marker)" marker-start="url(#FilledArrow_Marker_2)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
|
||||
</g>
|
||||
<g id="Line_22">
|
||||
<line x1="1616.4" y1="1803.5" x2="1673.6" y2="1803.5" marker-end="url(#FilledArrow_Marker)" marker-start="url(#FilledArrow_Marker_2)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
|
||||
</g>
|
||||
<g id="Line_21">
|
||||
<line x1="1348" y1="1819.9" x2="1348" y2="1868.1" marker-end="url(#FilledArrow_Marker)" marker-start="url(#FilledArrow_Marker_2)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
|
||||
</g>
|
||||
<g id="Line_20">
|
||||
<line x1="1364.4" y1="1884.5" x2="1421.6" y2="1884.5" marker-end="url(#FilledArrow_Marker)" marker-start="url(#FilledArrow_Marker_2)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
|
||||
</g>
|
||||
<g id="Line_19">
|
||||
<line x1="1454.4" y1="1884.5" x2="1502.6" y2="1884.5" marker-end="url(#FilledArrow_Marker)" marker-start="url(#FilledArrow_Marker_2)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
|
||||
</g>
|
||||
<g id="Line_18">
|
||||
<line x1="1535.4" y1="1884.5" x2="1583.6" y2="1884.5" marker-end="url(#FilledArrow_Marker)" marker-start="url(#FilledArrow_Marker_2)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
|
||||
</g>
|
||||
<g id="Line_17">
|
||||
<line x1="1616.4" y1="1884.5" x2="1673.6" y2="1884.5" marker-end="url(#FilledArrow_Marker)" marker-start="url(#FilledArrow_Marker_2)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
|
||||
</g>
|
||||
<g id="Line_16">
|
||||
<line x1="1690" y1="1868.1" x2="1690" y2="1819.9" marker-end="url(#FilledArrow_Marker)" marker-start="url(#FilledArrow_Marker_2)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
|
||||
</g>
|
||||
<g id="Line_15">
|
||||
<line x1="1438" y1="1819.9" x2="1438" y2="1868.1" marker-end="url(#FilledArrow_Marker)" marker-start="url(#FilledArrow_Marker_2)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
|
||||
</g>
|
||||
<g id="Line_14">
|
||||
<line x1="1519" y1="1819.9" x2="1519" y2="1868.1" marker-end="url(#FilledArrow_Marker)" marker-start="url(#FilledArrow_Marker_2)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
|
||||
</g>
|
||||
<g id="Line_13">
|
||||
<line x1="1600" y1="1819.9" x2="1600" y2="1868.1" marker-end="url(#FilledArrow_Marker)" marker-start="url(#FilledArrow_Marker_2)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
|
||||
</g>
|
||||
<g id="Graphic_12">
|
||||
<circle cx="1519" cy="1760" r="6.50001038636234" fill="white"/>
|
||||
<circle cx="1519" cy="1760" r="6.50001038636234" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
|
||||
</g>
|
||||
<g id="Graphic_11">
|
||||
<circle cx="1357" cy="1760" r="6.50001038636234" fill="aqua"/>
|
||||
<circle cx="1357" cy="1760" r="6.50001038636234" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
|
||||
</g>
|
||||
<g id="Graphic_10">
|
||||
<circle cx="1675" cy="1760" r="6.50001038636225" fill="aqua"/>
|
||||
<circle cx="1675" cy="1760" r="6.50001038636225" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
|
||||
</g>
|
||||
<g id="Graphic_9">
|
||||
<circle cx="1519" cy="1627" r="6.5000103863624" fill="white"/>
|
||||
<circle cx="1519" cy="1627" r="6.5000103863624" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
|
||||
</g>
|
||||
<g id="Graphic_8">
|
||||
<circle cx="1357" cy="1627" r="6.5000103863624" fill="aqua"/>
|
||||
<circle cx="1357" cy="1627" r="6.5000103863624" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
|
||||
</g>
|
||||
<g id="Graphic_7">
|
||||
<circle cx="1675" cy="1627" r="6.50001038636231" fill="aqua"/>
|
||||
<circle cx="1675" cy="1627" r="6.50001038636231" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
|
||||
</g>
|
||||
<g id="Line_6">
|
||||
<line x1="1373.4" y1="1627" x2="1502.6" y2="1627" marker-end="url(#FilledArrow_Marker)" marker-start="url(#FilledArrow_Marker_2)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
|
||||
</g>
|
||||
<g id="Line_5">
|
||||
<line x1="1535.4" y1="1627" x2="1658.6" y2="1627" marker-end="url(#FilledArrow_Marker)" marker-start="url(#FilledArrow_Marker_2)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
|
||||
</g>
|
||||
<g id="Line_4">
|
||||
<line x1="1357" y1="1643.4" x2="1357" y2="1743.6" marker-end="url(#FilledArrow_Marker)" marker-start="url(#FilledArrow_Marker_2)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
|
||||
</g>
|
||||
<g id="Line_3">
|
||||
<line x1="1373.4" y1="1760" x2="1502.6" y2="1760" marker-end="url(#FilledArrow_Marker)" marker-start="url(#FilledArrow_Marker_2)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
|
||||
</g>
|
||||
<g id="Line_2">
|
||||
<line x1="1535.4" y1="1760" x2="1658.6" y2="1760" marker-end="url(#FilledArrow_Marker)" marker-start="url(#FilledArrow_Marker_2)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
|
||||
</g>
|
||||
<g id="Graphic_68">
|
||||
<circle cx="1519" cy="1582.5" r="6.5000103863624" fill="lime"/>
|
||||
<circle cx="1519" cy="1582.5" r="6.5000103863624" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
|
||||
</g>
|
||||
<g id="Graphic_69">
|
||||
<circle cx="1415.5" cy="1582.5" r="6.50001038636234" fill="lime"/>
|
||||
<circle cx="1415.5" cy="1582.5" r="6.50001038636234" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
|
||||
</g>
|
||||
<g id="Graphic_70">
|
||||
<circle cx="1628.5" cy="1582.5" r="6.50001038636243" fill="lime"/>
|
||||
<circle cx="1628.5" cy="1582.5" r="6.50001038636243" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
|
||||
</g>
|
||||
<g id="Line_71">
|
||||
<line x1="1431.9" y1="1582.5" x2="1502.6" y2="1582.5" marker-end="url(#FilledArrow_Marker)" marker-start="url(#FilledArrow_Marker_2)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
|
||||
</g>
|
||||
<g id="Line_72">
|
||||
<line x1="1535.4" y1="1582.5" x2="1612.1" y2="1582.5" marker-end="url(#FilledArrow_Marker)" marker-start="url(#FilledArrow_Marker_2)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
|
||||
</g>
|
||||
<g id="Line_73">
|
||||
<line x1="1519" y1="1598.9" x2="1519" y2="1610.6" marker-end="url(#FilledArrow_Marker)" marker-start="url(#FilledArrow_Marker_2)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
|
||||
</g>
|
||||
<g id="Graphic_82">
|
||||
<circle cx="1280.5" cy="1760" r="6.50001038636228" fill="red"/>
|
||||
<circle cx="1280.5" cy="1760" r="6.50001038636228" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
|
||||
</g>
|
||||
<g id="Graphic_81">
|
||||
<circle cx="1280.5" cy="1627" r="6.50001038636234" fill="red"/>
|
||||
<circle cx="1280.5" cy="1627" r="6.50001038636234" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
|
||||
</g>
|
||||
<g id="Line_84">
|
||||
<line x1="1296.9" y1="1627" x2="1340.6" y2="1627" marker-end="url(#FilledArrow_Marker)" marker-start="url(#FilledArrow_Marker_2)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
|
||||
</g>
|
||||
<g id="Line_85">
|
||||
<line x1="1296.9" y1="1760" x2="1340.6" y2="1760" marker-end="url(#FilledArrow_Marker)" marker-start="url(#FilledArrow_Marker_2)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
|
||||
</g>
|
||||
<g id="Line_95">
|
||||
<line x1="1675" y1="1643.4" x2="1675" y2="1743.6" marker-end="url(#FilledArrow_Marker)" marker-start="url(#FilledArrow_Marker_2)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
|
||||
</g>
|
||||
<g id="Graphic_97">
|
||||
<circle cx="1519" cy="1723.1706" r="6.50001038636231" fill="white"/>
|
||||
<circle cx="1519" cy="1723.1706" r="6.50001038636231" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
|
||||
</g>
|
||||
<g id="Graphic_98">
|
||||
<circle cx="1406.8271" cy="1723.1706" r="6.50001038636237" fill="aqua"/>
|
||||
<circle cx="1406.8271" cy="1723.1706" r="6.50001038636237" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
|
||||
</g>
|
||||
<g id="Graphic_101">
|
||||
<circle cx="1519" cy="1671.25" r="6.5000103863624" fill="white"/>
|
||||
<circle cx="1519" cy="1671.25" r="6.5000103863624" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
|
||||
</g>
|
||||
<g id="Graphic_100">
|
||||
<circle cx="1406.8271" cy="1671.25" r="6.5000103863624" fill="aqua"/>
|
||||
<circle cx="1406.8271" cy="1671.25" r="6.5000103863624" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
|
||||
</g>
|
||||
<g id="Graphic_103">
|
||||
<circle cx="1630.7673" cy="1723.3397" r="6.50001038636234" fill="aqua"/>
|
||||
<circle cx="1630.7673" cy="1723.3397" r="6.50001038636234" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
|
||||
</g>
|
||||
<g id="Graphic_102">
|
||||
<circle cx="1630.7673" cy="1671.419" r="6.50001038636237" fill="aqua"/>
|
||||
<circle cx="1630.7673" cy="1671.419" r="6.50001038636237" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
|
||||
</g>
|
||||
<g id="Line_104">
|
||||
<line x1="1519" y1="1643.4" x2="1519" y2="1654.85" marker-end="url(#FilledArrow_Marker)" marker-start="url(#FilledArrow_Marker_2)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
|
||||
</g>
|
||||
<g id="Line_106">
|
||||
<line x1="1519" y1="1787.1" x2="1519" y2="1776.4" marker-end="url(#FilledArrow_Marker)" marker-start="url(#FilledArrow_Marker_2)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
|
||||
</g>
|
||||
<g id="Line_107">
|
||||
<line x1="1502.6" y1="1671.25" x2="1423.2271" y2="1671.25" marker-end="url(#FilledArrow_Marker)" marker-start="url(#FilledArrow_Marker_2)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
|
||||
</g>
|
||||
<g id="Line_109">
|
||||
<line x1="1423.2271" y1="1723.1706" x2="1502.6" y2="1723.1706" marker-end="url(#FilledArrow_Marker)" marker-start="url(#FilledArrow_Marker_2)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
|
||||
</g>
|
||||
<g id="Line_110">
|
||||
<line x1="1535.4" y1="1723.1954" x2="1614.3673" y2="1723.3149" marker-end="url(#FilledArrow_Marker)" marker-start="url(#FilledArrow_Marker_2)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
|
||||
</g>
|
||||
<g id="Line_111">
|
||||
<line x1="1535.4" y1="1671.2748" x2="1614.3673" y2="1671.3943" marker-end="url(#FilledArrow_Marker)" marker-start="url(#FilledArrow_Marker_2)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
|
||||
</g>
|
||||
<g id="Line_113">
|
||||
<line x1="1630.7673" y1="1687.819" x2="1630.7673" y2="1706.9397" marker-end="url(#FilledArrow_Marker)" marker-start="url(#FilledArrow_Marker_2)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
|
||||
</g>
|
||||
<g id="Graphic_119">
|
||||
<circle cx="1166.5" cy="1723.4206" r="6.50001038636231" fill="#666"/>
|
||||
<circle cx="1166.5" cy="1723.4206" r="6.50001038636231" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
|
||||
</g>
|
||||
<g id="Graphic_118">
|
||||
<circle cx="1166.5" cy="1671.5" r="6.50001038636234" fill="#666"/>
|
||||
<circle cx="1166.5" cy="1671.5" r="6.50001038636234" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
|
||||
</g>
|
||||
<g id="Line_120">
|
||||
<path d="M 1390.4271 1671.267 L 1362.5 1671.2961 L 1356.9943 1665.8018 L 1351.5 1671.3076 L 1182.9 1671.483" marker-end="url(#FilledArrow_Marker)" marker-start="url(#FilledArrow_Marker_2)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
|
||||
</g>
|
||||
<g id="Line_121">
|
||||
<path d="M 1390.4271 1723.1877 L 1362.5 1723.2167 L 1356.9943 1717.7224 L 1351.5 1723.2281 L 1182.9 1723.4035" marker-end="url(#FilledArrow_Marker)" marker-start="url(#FilledArrow_Marker_2)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
|
||||
</g>
|
||||
<g id="Graphic_122">
|
||||
<circle cx="1166.5" cy="1415.0419" r="6.50001038636237" fill="blue"/>
|
||||
<circle cx="1166.5" cy="1415.0419" r="6.50001038636237" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
|
||||
</g>
|
||||
<g id="Graphic_123">
|
||||
<circle cx="1749.5" cy="1415.0419" r="6.5000103863624" fill="blue"/>
|
||||
<circle cx="1749.5" cy="1415.0419" r="6.5000103863624" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
|
||||
</g>
|
||||
<g id="Graphic_128">
|
||||
<circle cx="1166.5" cy="1976.7962" r="6.50001038636237" fill="blue"/>
|
||||
<circle cx="1166.5" cy="1976.7962" r="6.50001038636237" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
|
||||
</g>
|
||||
<g id="Graphic_127">
|
||||
<circle cx="1749.5" cy="1976.7962" r="6.5000103863624" fill="blue"/>
|
||||
<circle cx="1749.5" cy="1976.7962" r="6.5000103863624" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
|
||||
</g>
|
||||
<g id="Line_129">
|
||||
<line x1="1166.5" y1="1665" x2="1166.5" y2="1431.442" marker-end="url(#FilledArrow_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
|
||||
</g>
|
||||
<g id="Line_130">
|
||||
<line x1="1173" y1="1415.0419" x2="1733.1" y2="1415.0419" marker-end="url(#FilledArrow_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
|
||||
</g>
|
||||
<g id="Line_131">
|
||||
<line x1="1743" y1="1976.7962" x2="1182.9" y2="1976.7962" marker-end="url(#FilledArrow_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
|
||||
</g>
|
||||
<g id="Line_132">
|
||||
<line x1="1166.5" y1="1970.2962" x2="1166.5" y2="1739.8206" marker-end="url(#FilledArrow_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
|
||||
</g>
|
||||
<g id="Line_133">
|
||||
<line x1="1166.5" y1="1716.9206" x2="1166.5" y2="1687.9" marker-end="url(#FilledArrow_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
|
||||
</g>
|
||||
<g id="Graphic_134">
|
||||
<circle cx="1749.5" cy="1559.5" r="6.50001038636234" fill="yellow"/>
|
||||
<circle cx="1749.5" cy="1559.5" r="6.50001038636234" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
|
||||
</g>
|
||||
<g id="Graphic_135">
|
||||
<circle cx="1749.5" cy="1703.8794" r="6.50001038636243" fill="red"/>
|
||||
<circle cx="1749.5" cy="1703.8794" r="6.50001038636243" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
|
||||
</g>
|
||||
<g id="Graphic_136">
|
||||
<circle cx="1832.8964" cy="1824.1481" r="6.50001038636231" fill="yellow"/>
|
||||
<circle cx="1832.8964" cy="1824.1481" r="6.50001038636231" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
|
||||
</g>
|
||||
<g id="Graphic_137">
|
||||
<circle cx="1832.8964" cy="1914.5214" r="6.50001038636237" fill="yellow"/>
|
||||
<circle cx="1832.8964" cy="1914.5214" r="6.50001038636237" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
|
||||
</g>
|
||||
<g id="Graphic_138">
|
||||
<circle cx="1749.5" cy="1864.1231" r="6.50001038636234" fill="white"/>
|
||||
<circle cx="1749.5" cy="1864.1231" r="6.50001038636234" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
|
||||
</g>
|
||||
<g id="Line_140">
|
||||
<line x1="1749.5" y1="1421.542" x2="1749.5" y2="1543.1" marker-end="url(#FilledArrow_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
|
||||
</g>
|
||||
<g id="Line_141">
|
||||
<line x1="1749.5" y1="1566" x2="1749.5" y2="1687.4794" marker-end="url(#FilledArrow_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
|
||||
</g>
|
||||
<g id="Line_142">
|
||||
<line x1="1749.5" y1="1710.3794" x2="1749.5" y2="1847.7231" marker-end="url(#FilledArrow_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
|
||||
</g>
|
||||
<g id="Line_143">
|
||||
<line x1="1749.5" y1="1870.6231" x2="1749.5" y2="1960.3962" marker-end="url(#FilledArrow_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
|
||||
</g>
|
||||
<g id="Graphic_145">
|
||||
<circle cx="1832.8964" cy="1864.1231" r="6.50001038636228" fill="white"/>
|
||||
<circle cx="1832.8964" cy="1864.1231" r="6.50001038636228" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
|
||||
</g>
|
||||
<g id="Graphic_146">
|
||||
<circle cx="1886.5516" cy="1864.1231" r="6.5000103863624" fill="#666"/>
|
||||
<circle cx="1886.5516" cy="1864.1231" r="6.5000103863624" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
|
||||
</g>
|
||||
<g id="Line_147">
|
||||
<line x1="1832.8964" y1="1840.5481" x2="1832.8964" y2="1847.7231" marker-end="url(#FilledArrow_Marker)" marker-start="url(#FilledArrow_Marker_2)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
|
||||
</g>
|
||||
<g id="Line_148">
|
||||
<line x1="1870.1516" y1="1864.1231" x2="1849.2964" y2="1864.1231" marker-end="url(#FilledArrow_Marker)" marker-start="url(#FilledArrow_Marker_2)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
|
||||
</g>
|
||||
<g id="Line_149">
|
||||
<line x1="1832.8964" y1="1898.1213" x2="1832.8964" y2="1880.5231" marker-end="url(#FilledArrow_Marker)" marker-start="url(#FilledArrow_Marker_2)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
|
||||
</g>
|
||||
<g id="Line_150">
|
||||
<line x1="1816.4964" y1="1864.1231" x2="1765.9" y2="1864.1231" marker-end="url(#FilledArrow_Marker)" marker-start="url(#FilledArrow_Marker_2)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
|
||||
</g>
|
||||
<g id="Graphic_151">
|
||||
<circle cx="1836.5" cy="1703.8794" r="6.50001038636246" fill="red"/>
|
||||
<circle cx="1836.5" cy="1703.8794" r="6.50001038636246" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
|
||||
</g>
|
||||
<g id="Graphic_152">
|
||||
<circle cx="1836.5" cy="1781.39" r="6.5000103863624" fill="red"/>
|
||||
<circle cx="1836.5" cy="1781.39" r="6.5000103863624" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
|
||||
</g>
|
||||
<g id="Line_153">
|
||||
<line x1="1836.5" y1="1764.99" x2="1836.5" y2="1720.2794" marker-end="url(#FilledArrow_Marker)" marker-start="url(#FilledArrow_Marker_2)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
|
||||
</g>
|
||||
<g id="Line_154">
|
||||
<line x1="1820.1" y1="1703.8794" x2="1765.9" y2="1703.8794" marker-end="url(#FilledArrow_Marker)" marker-start="url(#FilledArrow_Marker_2)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
|
||||
</g>
|
||||
<g id="Line_172">
|
||||
<line x1="1519" y1="1739.5706" x2="1519" y2="1743.6" marker-end="url(#FilledArrow_Marker)" marker-start="url(#FilledArrow_Marker_2)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 39 KiB |
@@ -33,6 +33,7 @@ class DigitalTop(implicit p: Parameters) extends ChipyardSystem
|
||||
with nvidia.blocks.dla.CanHavePeripheryNVDLA // Enables optionally having an NVDLA
|
||||
with chipyard.clocking.HasChipyardPRCI // Use Chipyard reset/clock distribution
|
||||
with fftgenerator.CanHavePeripheryFFT // Enables optionally having an MMIO-based FFT block
|
||||
with constellation.soc.CanHaveGlobalNoC // Support instantiating a global NoC interconnect
|
||||
{
|
||||
override lazy val module = new DigitalTopModule(this)
|
||||
}
|
||||
|
||||
188
generators/chipyard/src/main/scala/config/NoCConfigs.scala
Normal file
188
generators/chipyard/src/main/scala/config/NoCConfigs.scala
Normal file
@@ -0,0 +1,188 @@
|
||||
package chipyard
|
||||
|
||||
import freechips.rocketchip.config.{Config}
|
||||
import freechips.rocketchip.diplomacy.{AsynchronousCrossing}
|
||||
import freechips.rocketchip.subsystem.{SBUS, MBUS}
|
||||
|
||||
import constellation.channel._
|
||||
import constellation.routing._
|
||||
import constellation.topology._
|
||||
import constellation.noc._
|
||||
import constellation.soc.{GlobalNoCParams}
|
||||
|
||||
import scala.collection.immutable.ListMap
|
||||
|
||||
/*
|
||||
* This config demonstrates a SoC architecture with three different
|
||||
* independent interconnects. The SBus interconnect is the main
|
||||
* backbone, handling core traffic to the L2s and peripherals.
|
||||
* The MBus handles requests to the DRAM and external memory.
|
||||
* The CBus handles requests to control devices.
|
||||
*
|
||||
* Topologies:
|
||||
*
|
||||
* 12 - 13 - 14 - 15
|
||||
* | | | |
|
||||
* 8 -- 9 - 10 - 11 0 -- 1 -- 2 -- 3
|
||||
* | | | | | |
|
||||
* 4 -- 5 -- 6 -- 7 7 -- 6 -- 5 -- 4
|
||||
* | | | |
|
||||
* 0 -- 1 -- 2 -- 3
|
||||
*
|
||||
* This table describes the mappings of each edge onto the network
|
||||
*
|
||||
* SI/SO: Inward/outward names into sbus
|
||||
* MI/MO: Inward/outward names into mbus
|
||||
*
|
||||
* |(12)__________|(13)__________|(14)__________|(15)__________|
|
||||
* | | Core 6 | Core 7 | |
|
||||
* | | SI:Core 6 | SI:Core 7 | |
|
||||
* |(8)___________|(9)___________|(10)__________|(11)__________|
|
||||
* | Core 4 | L2 2 | L2 3 | Core 5 |
|
||||
* | SI:Core 4 | S0:system[2] | SO:system[3] | SI:Core 5 |
|
||||
* |(4)___________|(5)___________|(6)___________|(7)___________|
|
||||
* | Core 2 | L2 0 | L2 1 | Core 3 |
|
||||
* | SI:Core 2 | SO:system[0] | SO:system[1] | SI:Core 3 |
|
||||
* |(0)___________|(1)___________|(2)___________|(3)___________|
|
||||
* | FBus | Core 0 | Core 1 | Pbus |
|
||||
* | SI:serial-tl | SI:Core 0 | SI:Core 1 | SO:pbus |
|
||||
* |______________|______________|______________|______________|
|
||||
*
|
||||
* |(0)___________|(1)___________|(2)___________|(3)___________|
|
||||
* | DRAM 0 | L2 0 | L2 1 | DRAM 1 |
|
||||
* | M0:system[0] | MI:L2[0] | MI:L2[1] | M0:system[1] |
|
||||
* | M0:serdesser | | | |
|
||||
* |______________|______________|______________|______________|
|
||||
* |||||||||||||| ||||||||||||||
|
||||
* |(7)___________|(6)___________|(5)___________|(4)___________|
|
||||
* | DRAM 2 | L2 2 | L2 3 | DRAM 3 |
|
||||
* | M0:system[2] | MI:L2[2] | MI:L2[3] | M0:system[3] |
|
||||
* | | | | |
|
||||
* |______________|______________|______________|______________|
|
||||
*/
|
||||
// DOC include start: MultiNoCConfig
|
||||
class MultiNoCConfig extends Config(
|
||||
new constellation.soc.WithCbusNoC(constellation.protocol.TLNoCParams(
|
||||
constellation.protocol.DiplomaticNetworkNodeMapping(
|
||||
inNodeMapping = ListMap(
|
||||
"serial-tl" -> 0),
|
||||
outNodeMapping = ListMap(
|
||||
"error" -> 1, "l2[0]" -> 2, "pbus" -> 3, "plic" -> 4,
|
||||
"clint" -> 5, "dmInner" -> 6, "bootrom" -> 7, "tileClockGater" -> 8, "tileResetSetter" -> 9)),
|
||||
NoCParams(
|
||||
topology = TerminalRouter(BidirectionalLine(10)),
|
||||
channelParamGen = (a, b) => UserChannelParams(Seq.fill(5) { UserVirtualChannelParams(4) }),
|
||||
routingRelation = NonblockingVirtualSubnetworksRouting(TerminalRouterRouting(BidirectionalLineRouting()), 5, 1))
|
||||
)) ++
|
||||
new constellation.soc.WithMbusNoC(constellation.protocol.TLNoCParams(
|
||||
constellation.protocol.DiplomaticNetworkNodeMapping(
|
||||
inNodeMapping = ListMap(
|
||||
"L2 InclusiveCache[0]" -> 1, "L2 InclusiveCache[1]" -> 2,
|
||||
"L2 InclusiveCache[2]" -> 5, "L2 InclusiveCache[3]" -> 6),
|
||||
outNodeMapping = ListMap(
|
||||
"system[0]" -> 0, "system[1]" -> 3, "system[2]" -> 4 , "system[3]" -> 7,
|
||||
"serdesser" -> 0)),
|
||||
NoCParams(
|
||||
topology = TerminalRouter(BidirectionalTorus1D(8)),
|
||||
channelParamGen = (a, b) => UserChannelParams(Seq.fill(10) { UserVirtualChannelParams(4) }),
|
||||
routingRelation = BlockingVirtualSubnetworksRouting(TerminalRouterRouting(BidirectionalTorus1DShortestRouting()), 5, 2))
|
||||
)) ++
|
||||
new constellation.soc.WithSbusNoC(constellation.protocol.TLNoCParams(
|
||||
constellation.protocol.DiplomaticNetworkNodeMapping(
|
||||
inNodeMapping = ListMap(
|
||||
"Core 0" -> 1, "Core 1" -> 2, "Core 2" -> 4 , "Core 3" -> 7,
|
||||
"Core 4" -> 8, "Core 5" -> 11, "Core 6" -> 13, "Core 7" -> 14,
|
||||
"serial-tl" -> 0),
|
||||
outNodeMapping = ListMap(
|
||||
"system[0]" -> 5, "system[1]" -> 6, "system[2]" -> 9, "system[3]" -> 10,
|
||||
"pbus" -> 3)),
|
||||
NoCParams(
|
||||
topology = TerminalRouter(Mesh2D(4, 4)),
|
||||
channelParamGen = (a, b) => UserChannelParams(Seq.fill(8) { UserVirtualChannelParams(4) }),
|
||||
routingRelation = BlockingVirtualSubnetworksRouting(TerminalRouterRouting(Mesh2DEscapeRouting()), 5, 1))
|
||||
)) ++
|
||||
new freechips.rocketchip.subsystem.WithNBigCores(8) ++
|
||||
new freechips.rocketchip.subsystem.WithNBanks(4) ++
|
||||
new freechips.rocketchip.subsystem.WithNMemoryChannels(4) ++
|
||||
new chipyard.config.AbstractConfig
|
||||
)
|
||||
// DOC include end: MultiNoCConfig
|
||||
|
||||
/*
|
||||
* 10 - 11 - 12 - 13 - 14
|
||||
* |
|
||||
* 0 --- 1 --- 2 --- 3
|
||||
* | |
|
||||
* 9 4
|
||||
* | |
|
||||
* 8 --- 7 --- 6 --- 5
|
||||
* |
|
||||
* 15 - 16 - 17 - 18 - 19
|
||||
*
|
||||
* SI/SO: Inward/outward names into sbus
|
||||
* MI/MO: Inward/outward names into mbus
|
||||
*
|
||||
* Agent | Bus | String | node
|
||||
* ================================
|
||||
* Core 0 | SI | Core 0 | 2
|
||||
* Core 1 | SI | Core 1 | 10
|
||||
* Core 2 | SI | Core 2 | 11
|
||||
* Core 3 | SI | Core 3 | 13
|
||||
* Core 4 | SI | Core 4 | 14
|
||||
* Core 5 | SI | Core 5 | 15
|
||||
* Core 6 | SI | Core 6 | 16
|
||||
* Core 7 | SI | Core 7 | 18
|
||||
* Core 8 | SI | Core 8 | 19
|
||||
* fbus | SI | serial-tl | 9
|
||||
* pbus | SO | pbus | 4
|
||||
* L2 0 | SO | system[0] | 0
|
||||
* L2 1 | SO | system[1] | 2
|
||||
* L2 2 | SO | system[2] | 8
|
||||
* L2 3 | SO | system[3] | 6
|
||||
* L2 0 | MI | Cache[0] | 0
|
||||
* L2 1 | MI | Cache[1] | 2
|
||||
* L2 2 | MI | Cache[2] | 8
|
||||
* L2 3 | MI | Cache[3] | 6
|
||||
* DRAM 0 | MO | system[0] | 3
|
||||
* DRAM 1 | MO | system[1] | 5
|
||||
* extram | MO | serdesser | 9
|
||||
*/
|
||||
// DOC include start: SharedNoCConfig
|
||||
class SharedNoCConfig extends Config(
|
||||
new constellation.soc.WithGlobalNoC(GlobalNoCParams(
|
||||
NoCParams(
|
||||
topology = TerminalRouter(HierarchicalTopology(
|
||||
base = UnidirectionalTorus1D(10),
|
||||
children = Seq(HierarchicalSubTopology(1, 2, BidirectionalLine(5)),
|
||||
HierarchicalSubTopology(7, 2, BidirectionalLine(5))))),
|
||||
channelParamGen = (a, b) => UserChannelParams(Seq.fill(22) { UserVirtualChannelParams(4) }),
|
||||
routingRelation = NonblockingVirtualSubnetworksRouting(TerminalRouterRouting(HierarchicalRouting(
|
||||
baseRouting = UnidirectionalTorus1DDatelineRouting(),
|
||||
childRouting = Seq(BidirectionalLineRouting(),
|
||||
BidirectionalLineRouting()))), 10, 2)
|
||||
)
|
||||
)) ++
|
||||
new constellation.soc.WithMbusNoC(constellation.protocol.TLNoCParams(
|
||||
constellation.protocol.DiplomaticNetworkNodeMapping(
|
||||
inNodeMapping = ListMap(
|
||||
"Cache[0]" -> 0, "Cache[1]" -> 2, "Cache[2]" -> 8, "Cache[3]" -> 6),
|
||||
outNodeMapping = ListMap(
|
||||
"system[0]" -> 3, "system[1]" -> 5,
|
||||
"serdesser" -> 9))
|
||||
), true) ++
|
||||
new constellation.soc.WithSbusNoC(constellation.protocol.TLNoCParams(
|
||||
constellation.protocol.DiplomaticNetworkNodeMapping(
|
||||
inNodeMapping = ListMap(
|
||||
"serial-tl" -> 9, "Core 0" -> 2,
|
||||
"Core 1" -> 10, "Core 2" -> 11, "Core 3" -> 13, "Core 4" -> 14,
|
||||
"Core 5" -> 15, "Core 6" -> 16, "Core 7" -> 18, "Core 8" -> 19),
|
||||
outNodeMapping = ListMap(
|
||||
"system[0]" -> 0, "system[1]" -> 2, "system[2]" -> 8, "system[3]" -> 6,
|
||||
"pbus" -> 4))
|
||||
), true) ++
|
||||
new freechips.rocketchip.subsystem.WithNBigCores(8) ++
|
||||
new freechips.rocketchip.subsystem.WithNBanks(4) ++
|
||||
new freechips.rocketchip.subsystem.WithNMemoryChannels(2) ++
|
||||
new chipyard.config.AbstractConfig
|
||||
)
|
||||
// DOC include end: SharedNoCConfig
|
||||
@@ -23,7 +23,7 @@ class TinyRocketConfig extends Config(
|
||||
|
||||
// DOC include start: FFTRocketConfig
|
||||
class FFTRocketConfig extends Config(
|
||||
new fftgenerator.WithFFTGenerator(baseAddr=0x2000, numPoints=8, width=16, decPt=8) ++ // add 8-point mmio fft at 0x2000 with 16bit fixed-point numbers.
|
||||
new fftgenerator.WithFFTGenerator(numPoints=8, width=16, decPt=8) ++ // add 8-point mmio fft at 0x2000 with 16bit fixed-point numbers.
|
||||
new freechips.rocketchip.subsystem.WithNBigCores(1) ++
|
||||
new chipyard.config.AbstractConfig)
|
||||
// DOC include end: FFTRocketConfig
|
||||
|
||||
@@ -1,6 +1,12 @@
|
||||
package chipyard
|
||||
|
||||
import freechips.rocketchip.config.{Config}
|
||||
import constellation.channel._
|
||||
import constellation.routing._
|
||||
import constellation.topology._
|
||||
import constellation.noc._
|
||||
import constellation.soc.{GlobalNoCParams}
|
||||
import scala.collection.immutable.ListMap
|
||||
|
||||
// This file is designed to accompany a live tutorial, with slides.
|
||||
// For each of 4 phases, participants will customize and build a
|
||||
@@ -68,3 +74,45 @@ class TutorialSha3BlackBoxConfig extends Config(
|
||||
new freechips.rocketchip.subsystem.WithNBigCores(1) ++
|
||||
new chipyard.config.AbstractConfig
|
||||
)
|
||||
|
||||
// Tutorial Phase 5: Map a multicore heterogeneous SoC with multiple cores and memory-mapped accelerators
|
||||
class TutorialNoCConfig extends Config(
|
||||
// Try changing the dimensions of the Mesh topology
|
||||
new constellation.soc.WithGlobalNoC(constellation.soc.GlobalNoCParams(
|
||||
NoCParams(
|
||||
topology = TerminalRouter(Mesh2D(3, 4)),
|
||||
channelParamGen = (a, b) => UserChannelParams(Seq.fill(12) { UserVirtualChannelParams(4) }),
|
||||
routingRelation = NonblockingVirtualSubnetworksRouting(TerminalRouterRouting(
|
||||
Mesh2DEscapeRouting()), 10, 1)
|
||||
)
|
||||
)) ++
|
||||
// The inNodeMapping and outNodeMapping values are the physical identifiers of
|
||||
// routers on the topology to map the agents to. Try changing these to any
|
||||
// value within the range [0, topology.nNodes)
|
||||
new constellation.soc.WithPbusNoC(constellation.protocol.TLNoCParams(
|
||||
constellation.protocol.DiplomaticNetworkNodeMapping(
|
||||
inNodeMapping = ListMap("Core" -> 7),
|
||||
outNodeMapping = ListMap(
|
||||
"pbus" -> 8, "uart" -> 9, "control" -> 10, "gcd" -> 11,
|
||||
"writeQueue[0]" -> 0, "writeQueue[1]" -> 1, "tailChain[0]" -> 2))
|
||||
), true) ++
|
||||
new constellation.soc.WithSbusNoC(constellation.protocol.TLNoCParams(
|
||||
constellation.protocol.DiplomaticNetworkNodeMapping(
|
||||
inNodeMapping = ListMap(
|
||||
"Core 0" -> 0, "Core 1" -> 1,
|
||||
"serial-tl" -> 2),
|
||||
outNodeMapping = ListMap(
|
||||
"system[0]" -> 3, "system[1]" -> 4, "system[2]" -> 5, "system[3]" -> 6,
|
||||
"pbus" -> 7))
|
||||
), true) ++
|
||||
new chipyard.example.WithGCD ++
|
||||
new chipyard.harness.WithLoopbackNIC ++
|
||||
new icenet.WithIceNIC ++
|
||||
new fftgenerator.WithFFTGenerator(numPoints=8) ++
|
||||
new chipyard.example.WithStreamingFIR ++
|
||||
new chipyard.example.WithStreamingPassthrough ++
|
||||
|
||||
new freechips.rocketchip.subsystem.WithNBanks(4) ++
|
||||
new freechips.rocketchip.subsystem.WithNBigCores(2) ++
|
||||
new chipyard.config.AbstractConfig
|
||||
)
|
||||
|
||||
@@ -13,7 +13,7 @@ import freechips.rocketchip.util.UIntIsOneOf
|
||||
|
||||
// DOC include start: GCD params
|
||||
case class GCDParams(
|
||||
address: BigInt = 0x2000,
|
||||
address: BigInt = 0x1000,
|
||||
width: Int = 32,
|
||||
useAXI4: Boolean = false,
|
||||
useBlackBox: Boolean = true)
|
||||
@@ -201,7 +201,7 @@ trait CanHavePeripheryGCDModuleImp extends LazyModuleImp {
|
||||
|
||||
|
||||
// DOC include start: GCD config fragment
|
||||
class WithGCD(useAXI4: Boolean, useBlackBox: Boolean) extends Config((site, here, up) => {
|
||||
class WithGCD(useAXI4: Boolean = false, useBlackBox: Boolean = false) extends Config((site, here, up) => {
|
||||
case GCDKey => Some(GCDParams(useAXI4 = useAXI4, useBlackBox = useBlackBox))
|
||||
})
|
||||
// DOC include end: GCD config fragment
|
||||
|
||||
@@ -16,8 +16,8 @@ import freechips.rocketchip.subsystem._
|
||||
// Simple passthrough to use as testbed sanity check
|
||||
// StreamingPassthrough params
|
||||
case class StreamingPassthroughParams(
|
||||
writeAddress: BigInt = 0x2000,
|
||||
readAddress: BigInt = 0x2100,
|
||||
writeAddress: BigInt = 0x2200,
|
||||
readAddress: BigInt = 0x2300,
|
||||
depth: Int
|
||||
)
|
||||
|
||||
|
||||
1
generators/constellation
Submodule
1
generators/constellation
Submodule
Submodule generators/constellation added at b93fde3e28
Submodule generators/fft-generator updated: 4c335ff6ab...40357f00a8
@@ -2,14 +2,15 @@ diff --git a/build.sbt b/build.sbt
|
||||
index bbbb8251..b7adcb73 100644
|
||||
--- a/build.sbt
|
||||
+++ b/build.sbt
|
||||
@@ -143,7 +143,7 @@ lazy val testchipip = (project in file("generators/testchipip"))
|
||||
@@ -143,8 +143,8 @@ lazy val testchipip = (project in file("generators/testchipip"))
|
||||
|
||||
lazy val chipyard = (project in file("generators/chipyard"))
|
||||
.dependsOn(testchipip, rocketchip, boom, hwacha, sifive_blocks, sifive_cache, iocell,
|
||||
- sha3, // On separate line to allow for cleaner tutorial-setup patches
|
||||
+// sha3, // On separate line to allow for cleaner tutorial-setup patches
|
||||
dsptools, `rocket-dsp-utils`,
|
||||
gemmini, icenet, tracegen, cva6, nvdla, sodor, ibex, fft_generator)
|
||||
gemmini, icenet, tracegen, cva6, nvdla, sodor, ibex, fft_generator,
|
||||
constellation)
|
||||
.settings(libraryDependencies ++= rocketLibDeps.value)
|
||||
@@ -189,11 +189,11 @@ lazy val sodor = (project in file("generators/riscv-sodor"))
|
||||
.settings(libraryDependencies ++= rocketLibDeps.value)
|
||||
|
||||
@@ -6,7 +6,7 @@ LDFLAGS= -static
|
||||
include libgloss.mk
|
||||
|
||||
PROGRAMS = pwm blkdev accum charcount nic-loopback big-blkdev pingd \
|
||||
streaming-passthrough streaming-fir nvdla spiflashread spiflashwrite fft
|
||||
streaming-passthrough streaming-fir nvdla spiflashread spiflashwrite fft gcd
|
||||
|
||||
spiflash.img: spiflash.py
|
||||
python3 $<
|
||||
|
||||
@@ -4,8 +4,8 @@
|
||||
#include <inttypes.h>
|
||||
#include <math.h>
|
||||
|
||||
#define FFT_WRITE_LANE 0x2000
|
||||
#define FFT_RD_LANE_BASE 0x2008
|
||||
#define FFT_WRITE_LANE 0x2400
|
||||
#define FFT_RD_LANE_BASE 0x2408
|
||||
// addr of read lane i is FFT_RD_LANE_BASE + i * 8
|
||||
|
||||
// from generators/fft-generator/test_pts.py (in the fft-generator repo)
|
||||
@@ -68,4 +68,4 @@ int main(void) {
|
||||
|
||||
printf("PASS: FFT Test Passed\n");
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
#include "mmio.h"
|
||||
|
||||
#define GCD_STATUS 0x2000
|
||||
#define GCD_X 0x2004
|
||||
#define GCD_Y 0x2008
|
||||
#define GCD_GCD 0x200C
|
||||
#define GCD_STATUS 0x1000
|
||||
#define GCD_X 0x1004
|
||||
#define GCD_Y 0x1008
|
||||
#define GCD_GCD 0x100C
|
||||
|
||||
unsigned int gcd_ref(unsigned int x, unsigned int y) {
|
||||
while (y != 0) {
|
||||
@@ -37,6 +37,7 @@ int main(void)
|
||||
printf("Hardware result %d does not match reference value %d\n", result, ref);
|
||||
return 1;
|
||||
}
|
||||
printf("Hardware result %d is correct for GCD\n", result);
|
||||
return 0;
|
||||
}
|
||||
// DOC include end: GCD test
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
#define PASSTHROUGH_WRITE 0x2000
|
||||
#define PASSTHROUGH_WRITE_COUNT 0x2008
|
||||
#define PASSTHROUGH_READ 0x2100
|
||||
#define PASSTHROUGH_READ_COUNT 0x2108
|
||||
#define PASSTHROUGH_WRITE 0x2200
|
||||
#define PASSTHROUGH_WRITE_COUNT 0x2208
|
||||
#define PASSTHROUGH_READ 0x2300
|
||||
#define PASSTHROUGH_READ_COUNT 0x2308
|
||||
|
||||
#include "mmio.h"
|
||||
|
||||
|
||||
13
variables.mk
13
variables.mk
@@ -111,6 +111,19 @@ ifeq ($(SUB_PROJECT),icenet)
|
||||
TB ?= TestDriver
|
||||
TOP ?= UnitTestSuite
|
||||
endif
|
||||
# For Constellation developers
|
||||
ifeq ($(SUB_PROJECT),constellation)
|
||||
SBT_PROJECT ?= chipyard
|
||||
MODEL ?= TestHarness
|
||||
VLOG_MODEL ?= TestHarness
|
||||
MODEL_PACKAGE ?= constellation.test
|
||||
CONFIG ?= TestConfig00
|
||||
CONFIG_PACKAGE ?= constellation.test
|
||||
GENERATOR_PACKAGE ?= chipyard
|
||||
TB ?= TestDriver
|
||||
TOP ?= NoC
|
||||
endif
|
||||
|
||||
|
||||
#########################################################################################
|
||||
# path to rocket-chip and testchipip
|
||||
|
||||
Reference in New Issue
Block a user