============= tilegrid file ============= The ``tilegrid.json`` is a list of all :term:`tiles ` in the device. This information is used at various stages of the flow i.e. for :term:`database ` generation or creating a :term:`bitstream `. The most important parts of the file are related to :term:`frame ` addressing within the :term:`bitstream `, grid and :term:`clock region ` location, list of underlying :term:`sites `, or the type of the :term:`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 ` in the FPGA chip. The file is of the form:: { "": { "bits": { "": { "baseaddr": ", "frames": 28, "offset": 97, "words": 2 }, <...> }, "clock_region": , "grid_x": , "grid_y": , "pin_functions": { ": "", <...> }, "prohibited_sites": [ "", <...> ], "sites": { "": , <...> }, "type": "INT_R" } The ```` indicates the name of the :term:`tile ` described in the entry. The naming convention matches Vivado. Each :term:`tile ` entry in the file has the following fields: - ``"bits"`` - contains the data related to :term:`tile ` configuration over the ````. There are three types of the configuration buses in 7-Series FPGAs: ``CLB_IO_CLK``, ``BLOCK_RAM`` and ``CFG_CLB``. Every ```` has the following fields: - ``baseaddr`` - Basic address of the configuration :term:`frame `. Every configuration :term:`frame ` consist of 101 of 32bit :term:`words `. Note that a single :term:`frame ` usually configures a bunch of :term:`tiles ` connected to the single configuration bus. - ``"frames"`` - Number of :term:`frames ` that can configure the :term:`tile `. - ``offset`` - How many words of offset is present in the :term:`frame ` before the first :term:`word ` that configures the :term:`tile `. - ``words`` - How many 32bit :term:`words ` configure the :term:`tile `. - ``clock_region`` - indicates to which :term:`clock region ` the :term:`tile ` belongs to. - ``grid_x`` - :term:`tile ` column, increasing right - ``grid_y`` - :term:`tile ` row, increasing down - ``pin_functions`` - indicates the special functions of the :term:`tile ` pins. Usually it is related to IOB blocks and indicates i.e. differential output pins. - ``prohibited_sites`` - Indicates which :term:`site ` types cannot be used in the :term:`tile ` - ``sites`` - dictionary which contains information about the :term:`sites ` which can be found inside the :term:`tile `. Every entry in the dictionary contains the following information: - ``""`` - The unique name of the :term:`site ` inside the :term:`tile `. - ``"`` - The type of the :term:`site ` - ``type`` - The type of the :term:`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 ` is named ``CLBLL_L_X16Y149`` - :term:`Frame ` base address is ``0x00020800`` - For each :term:`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 ` loads - Located in :term:`clock region ` ``X0Y2`` - Located at row 1, column 43 - Contains two :term:`sites `, both of which are SLICEL - Is a ``CLBLL_L`` type :term:`tile ` More information about :term:`frames ` and the FPGA configuration can be found in the :doc:`Configuration <../../architecture/configuration>` chapter. Example of absolute :term:`frame ` address calculation can be found in the :doc:`mask file <../common/mask>` chapter.