@@ -23,6 +23,7 @@ The architecture tag contains the following tags:
23
23
* ``<segmentlist> ``
24
24
* ``<directlist> ``
25
25
* ``<complexblocklist> ``
26
+ * ``<noc> ``
26
27
27
28
.. _arch_models :
28
29
@@ -136,6 +137,10 @@ Global FPGA Information
136
137
137
138
Content inside this tag contains a group of ``<pb_type> `` tags that specify the types of functional blocks and their properties.
138
139
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
+
139
144
.. _arch_grid_layout :
140
145
141
146
FPGA Grid Layout
@@ -1855,6 +1860,95 @@ Power
1855
1860
:opt_param scaled_by_static_prob: Port name by which to scale ``energy_per_toggle`` based on its logic high probability.
1856
1861
:opt_param scaled_by_static_prob_n: Port name by which to scale ``energy_per_toggle`` based on its logic low probability.
1857
1862
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
+
1858
1952
Wire Segments
1859
1953
-------------
1860
1954
0 commit comments