blob: 0f133f01f22b6edae13f28baec4e1c5cc95bf306 [file] [log] [blame]
=============
tilegrid file
=============
The ``tilegrid.json`` is a list of all :term:`tiles <Tile>` in the device.
This information is used at various stages of the flow i.e. for
:term:`database <Database>` generation or creating a :term:`bitstream <Bitstream>`.
The most important parts of the file are related to :term:`frame <Frame>` addressing
within the :term:`bitstream <Bitstream>`, grid and :term:`clock region <Clock region>`
location, list of underlying :term:`sites <Site>`, or the type of the
:term:`tile <Tile>` itself.
Before diving into this section, it is advised to familiarize yourself with the
7-Series :doc:`Bitstream Format <../../architecture/bitstream_format>` chapter and
:doc:`Configuration <../../architecture/configuration>` chapter.
File format
-----------
The file consists of the entries describing every :term:`tile <Tile>` in
the FPGA chip. The file is of the form::
{
"<TILE_NAME>": {
"bits": {
"<CONFIGURATION_BUS>": {
"baseaddr": "<BASE_ADDR>,
"frames": 28,
"offset": 97,
"words": 2
},
<...>
},
"clock_region": <CLOCK_REGION>,
"grid_x": <GRID_X>,
"grid_y": <GRID_Y>,
"pin_functions": {
"<PIN_NAME">: "<PIN_FUNCTION>",
<...>
},
"prohibited_sites": [
"<SITE_TYPE>",
<...>
],
"sites": {
"<SITE_NAME>": <SITE_TYPE>,
<...>
},
"type": "INT_R"
}
The ``<TILE_NAME>`` indicates the name of the :term:`tile <Tile>` described
in the entry. The naming convention matches Vivado.
Each :term:`tile <Tile>` entry in the file has the following fields:
- ``"bits"`` - contains the data related to :term:`tile <Tile>` configuration over
the ``<CONFIGURATION_BUS>``. There are three types of the configuration
buses in 7-Series FPGAs: ``CLB_IO_CLK``, ``BLOCK_RAM`` and ``CFG_CLB``.
Every ``<CONFIGURATION_BUS>`` has the following fields:
- ``baseaddr`` - Basic address of the configuration :term:`frame <Frame>`.
Every configuration :term:`frame <Frame>` consist of 101 of 32bit
:term:`words <Word>`. Note that a single :term:`frame <Frame>` usually configures
a bunch of :term:`tiles <Tile>` connected to the single configuration bus.
- ``"frames"`` - Number of :term:`frames <Frame>` that can configure the
:term:`tile <Tile>`.
- ``offset`` - How many words of offset is present in the :term:`frame <Frame>`
before the first :term:`word <Word>` that configures the :term:`tile <Tile>`.
- ``words`` - How many 32bit :term:`words <Word>` configure the :term:`tile <Tile>`.
- ``clock_region`` - indicates to which :term:`clock region <Clock region>` the
:term:`tile <Tile>` belongs to.
- ``grid_x`` - :term:`tile <Tile>` column, increasing right
- ``grid_y`` - :term:`tile <Tile>` row, increasing down
- ``pin_functions`` - indicates the special functions of the :term:`tile <Tile>` pins.
Usually it is related to IOB blocks and indicates i.e. differential output pins.
- ``prohibited_sites`` - Indicates which :term:`site <Site>` types cannot be used
in the :term:`tile <Tile>`
- ``sites`` - dictionary which contains information about the :term:`sites <Site>`
which can be found inside the :term:`tile <Tile>`. Every entry in
the dictionary contains the following information:
- ``"<SITE_NAME>"`` - The unique name of the :term:`site <Site>` inside
the :term:`tile <Tile>`.
- ``"<SITE_TYPE>`` - The type of the :term:`site <Site>`
- ``type`` - The type of the :term:`tile <Tile>`
Examples
--------
.. code-block:: javascript
"CLBLL_L_X16Y149": {
"bits": {
"CLB_IO_CLK": {
"baseaddr": "0x00020800",
"frames": 36,
"offset": 99,
"words": 2
}
},
"clock_region": "X0Y2",
"grid_x": 43,
"grid_y": 1,
"pin_functions": {},
"sites": {
"SLICE_X24Y149": "SLICEL",
"SLICE_X25Y149": "SLICEL"
},
"type": "CLBLL_L"
}
Interpreted as:
- :term:`Tile <Tile>` is named ``CLBLL_L_X16Y149``
- :term:`Frame <Frame>` base address is ``0x00020800``
- For each :term:`frame <Frame>`, skip the first 99 words loaded into FDRI
- Since it's 2 FDRI words out of possible 101, it's the last 2 words
- It spans across 36 different :term:`frame <Frame>` loads
- Located in :term:`clock region <Clock region>` ``X0Y2``
- Located at row 1, column 43
- Contains two :term:`sites <Site>`, both of which are SLICEL
- Is a ``CLBLL_L`` type :term:`tile <Tile>`
More information about :term:`frames <Frame>` and the FPGA configuration can be found in the
:doc:`Configuration <../../architecture/configuration>` chapter.
Example of absolute :term:`frame <Frame>` address calculation can be found in the
:doc:`mask file <../common/mask>` chapter.