Skip to content

Commit 49fb237

Browse files
committed
Adding NoC architecture description to the architecture reference documentation
1 parent a9ea075 commit 49fb237

File tree

1 file changed

+94
-0
lines changed

1 file changed

+94
-0
lines changed

doc/src/arch/reference.rst

Lines changed: 94 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@ The architecture tag contains the following tags:
2323
* ``<segmentlist>``
2424
* ``<directlist>``
2525
* ``<complexblocklist>``
26+
* ``<noc>``
2627

2728
.. _arch_models:
2829

@@ -136,6 +137,10 @@ Global FPGA Information
136137
137138
Content inside this tag contains a group of ``<pb_type>`` tags that specify the types of functional blocks and their properties.
138139

140+
.. arch:tag:: <noc link_bandwidth="float" link_latency="float" router_latency="float" noc_router_tile_name="string">content</noc>
141+
142+
Content inside this tag specifies the Network-on-Chip (NoC) architecture on the FPGA device and its properties.
143+
139144
.. _arch_grid_layout:
140145

141146
FPGA Grid Layout
@@ -1855,6 +1860,95 @@ Power
18551860
:opt_param scaled_by_static_prob: Port name by which to scale ``energy_per_toggle`` based on its logic high probability.
18561861
:opt_param scaled_by_static_prob_n: Port name by which to scale ``energy_per_toggle`` based on its logic low probability.
18571862
1863+
NoC Description
1864+
---------------
1865+
1866+
The ``<noc>`` tag is an optional tag and its contents allows designers to describe a NoC on an FPGA device.
1867+
The ``<noc>`` tag is the top level tag for the NoC description and its attributes define the overall properties
1868+
of the NoC; refer below for its contents.
1869+
1870+
.. arch:tag:: <noc link_bandwidth="float" link_latency="float" router_latency="float" noc_router_tile_name="string">
1871+
1872+
:req_param link_bandwidth:
1873+
Specifies the maximum bandwidth in bits-per-second (bps) that a link in the NoC can support
1874+
1875+
:req_param link_latency:
1876+
Specifies the delay in seconds seen by a flit as it travels from one physical NoC router to another using a NoC link.
1877+
1878+
:req_param router_latency:
1879+
Specifies the un-loaded delays in seconds as it travels through a physical router.
1880+
1881+
:req_param noc_router_tile_name:
1882+
Specifies a string which represents the name used to identify a NoC router tile (physical hard block) in the
1883+
corresponding FPGA architecture. This information is needed to create a model of the NoC.
1884+
1885+
The ``<noc>`` tag contains a single ``<topology>`` tag which describes the topology of the NoC.
1886+
1887+
NoC topology
1888+
~~~~~~~~~~~~
1889+
1890+
As mentioned above the ``<topology>`` tag can be used to specify the topology or how the routers in the NoC
1891+
are connected to each other. The ``<topology>`` tag consists of a group ``<router>``tags.
1892+
1893+
Below is an example of how the ``<topology>`` tag is used.
1894+
1895+
.. code-block:: xml
1896+
1897+
<topology>
1898+
<!--A number of <router> tags go here-->
1899+
</topology>
1900+
1901+
The ``<router>`` tag and its contents are described below.
1902+
1903+
.. arch:tag:: <router id="int" positionx="float" positiony="float" connections="int int int int ...">
1904+
1905+
This tag represents a single physical NoC router on the FPGA device and specifies how it is connected within the NoC.
1906+
1907+
:req_param id:
1908+
Specifies a user identification (ID) number which is associate to the physical
1909+
router that this tag is identifying. This ID is used to report errors and
1910+
warnings to the user.
1911+
1912+
:req_param positionx:
1913+
Specifies the horizontal position of the physical router block that this
1914+
tag is identifying. This position does not have to be exact, it can
1915+
be an approximate value.
1916+
1917+
:req_param positiony:
1918+
Specifies the vertical position of the physical router block that this
1919+
tag is identifying. This position does not have to be exact, it can
1920+
be an approximate value.
1921+
1922+
:req_param connections:
1923+
Specifies a list of numbers seperated by spaces which are the user IDs supplied to other
1924+
``<router>`` tags. This describes how the current physical Noc router
1925+
that this tag is identifying is connected to the other physical NoC routers on the device.
1926+
1927+
Below is an example of the ``<router>`` tag which identifies a physical router located near (0,0) with ID 0. This router
1928+
is also connected to two other routers identified by IDs 1 and 2.
1929+
1930+
.. code-block:: xml
1931+
1932+
<router id="0" positionx="0" positiony="0" connections="1 2"/>
1933+
1934+
NoC Description Example
1935+
~~~~~~~~~~~~~~~~~~~~~~~
1936+
1937+
Below is an example which describes a NoC architecture which has 4 physical routers that are connected to each other to form a
1938+
2x2 mesh topology.
1939+
1940+
.. code-block:: xml
1941+
1942+
<!-- Description of a 2x2 mesh NoC-->
1943+
<noc link_bandwidth="1.2e9" router_latency="1e-9" link_latency="1e-9" noc_router_tile_name="noc_router_adapter">
1944+
<topology>
1945+
<router id="0" positionx="0" positiony="0" connections="1 2"/>
1946+
<router id="1" positionx="5" positiony="0" connections="0 3"/>
1947+
<router id="2" positionx="0" positiony="5" connections="0 3"/>
1948+
<router id="3" positionx="5" positiony="5" connections="1 2"/>
1949+
</topology>
1950+
</noc>
1951+
18581952
Wire Segments
18591953
-------------
18601954

0 commit comments

Comments
 (0)