| =========== | |
| ppips files | |
| =========== | |
| The *ppips files* are generated for every FPGA :term:`tile <Tile>` type. | |
| They store the information about the pseudo-PIPs, inside the tile. | |
| Programable Interconnect Point (:term:`PIP <PIP>`) is a connection inside the | |
| :term:`tile <Tile>` that can be enabled or disabled. Pseudo PIPs appear as standard | |
| :term:`PIPs <PIP>` in the Vivado tool, but they do not have actual configuration | |
| bit pattern in segbits files (they are not configurable). | |
| The *ppips files* contains the information which `PIPs <PIP>` do not have | |
| configuration bits, which allows the tools to not generat error in that situation. | |
| On the other hand this information is used to indicate that the connection | |
| between wires is always on. | |
| Naming convention | |
| ----------------- | |
| The naming scheme for the PPIPs files is the following:: | |
| ppips_<tile>.db | |
| For example: | |
| - ``ppips_dsp_l.db`` | |
| - ``ppips_clbll_l.db`` | |
| - ``ppips_bram_int_interface_l.db`` | |
| File format | |
| ----------- | |
| The file contains one entry per pseudo-PIP, each with one of the following | |
| three tags: ``always``, ``default`` or ``hint``. The entries are of the form::: | |
| <ppip_location> <tag> | |
| The tag ``always`` is used for pseudo-PIPs that are actually always-on, i.e., | |
| that are permanent connections between two wires. | |
| The tag ``default`` is used for pseudo-PIPs that represent the default behavior | |
| if no other driver has been configured for the destination net | |
| (all default pseudo-PIPs connect to the VCC_WIRE net). | |
| The tag ``hint`` is used for PIPs that are used by Vivado to tell the router | |
| that two logic slice outputs drive the same value, i.e., behave like they | |
| are connected as far as the routing process is concerned. | |
| Example | |
| ------- | |
| Below there is a part of artix7 ``ppips_clbll_l.db`` file:: | |
| <...> | |
| CLBLL_L.CLBLL_L_A.CLBLL_L_A6 hint | |
| CLBLL_L.CLBLL_L_AMUX.CLBLL_L_A hint | |
| CLBLL_L.CLBLL_L_AX.CLBLL_BYP0 always | |
| CLBLL_L.CLBLL_L_B.CLBLL_L_B1 hint | |
| CLBLL_L.CLBLL_L_B.CLBLL_L_B2 hint | |
| CLBLL_L.CLBLL_L_B.CLBLL_L_B3 hint | |
| CLBLL_L.CLBLL_L_B.CLBLL_L_B4 hint | |
| <...> | |
| The ``<ppip_location>`` name is arbitrary. However, the naming convention is | |
| similar to the one in the Vivado tool, which allows for quick identification of their role in the FPGA chip. |