.. index:: POM AXI lite .. _pom_axi_lite: POM AXI-Lite interface memory map ::::::::::::::::::::::::::::::::: The POM hardware runtime includes an optional AXI-Lite interface to access internal debug registers (read-only). The mapped address space is 16KB (14-bit addresses). The available registers and their respective addresses are (size in bytes): +-----------------------+-----------+--------------+-----------------+ | Register name | Address | Size | Description | +=======================+===========+==============+=================+ | COPY_OPT_IN | 0x0 | 4 | Number of copy | | | | | in | | | | | optimizations | | | | | in the command | | | | | in queue (both | | | | | internal and | | | | | external) | +-----------------------+-----------+--------------+-----------------+ | COPY_OPT_OUT | 0x4 | 4 | Number of copy | | | | | in | | | | | optimizations | | | | | in the command | | | | | in queue (both | | | | | internal and | | | | | external) | +-----------------------+-----------+--------------+-----------------+ | ACC_AVAIL | 0x8 | 8 | One bit per | | | | | accelerator, | | | | | indicating the | | | | | availability | | | | | status | +-----------------------+-----------+--------------+-----------------+ | QUEUE_NEMPTY | 0x10 | 8 | One bit per | | | | | accelerator, | | | | | indicating if | | | | | the internal | | | | | queue is not | | | | | empty | +-----------------------+-----------+--------------+-----------------+ | CMD_IN_N_CMDS | 0x800 | 4 per acc | For each | | | | | accelerator, | | | | | the number of | | | | | commands it has | | | | | received | +-----------------------+-----------+--------------+-----------------+ | CMD_OUT_N_CMDS | 0x900 | 4 per acc | For each | | | | | accelerator, | | | | | the number of | | | | | commands it has | | | | | issued | +-----------------------+-----------+--------------+-----------------+ | ACC_AVAIL_COUNT | 0xA00 | 8 per acc | For each | | | | | accelerator, | | | | | the total | | | | | number of | | | | | execution | | | | | cycles | +-----------------------+-----------+--------------+-----------------+ How to enable the AXI-Lite interface ------------------------------------ You can enable it with the ``--enable_pom_axilite`` flag in AIT. For a full list of AIT options, see :ref:`ait_help` How to read the registers with QDMA ----------------------------------- You can use the script located in the https://pm.bsc.es/gitlab/ompss-at-fpga/rtl/meep-ompss-fpga-cluster repository, under ``scripts/axilite_cntrl.py``. .. code-block:: text python3 $MEEP-OMPSS-FPGA-CLUSTER/scripts/axilite_cntrl.py --read_pom The script needs the ``XTASKS_PCI_DEV`` variable. If you are using OMPIF, you can read all registers, including the message sender and receiver, with the ``cluster.json`` file. .. code-block:: text python3 $MEEP-OMPSS-FPGA-CLUSTER/scripts/axilite_cntrl.py --cluster cluster.json If some FPGAs are on remote nodes, the script automatically launches servers on each remote node. However, you need to have the ``xtasks_devs_$(hostname).sh`` files in the current working directory.