.. role:: raw-html(raw)
:format: html
.. _nomenclature:
############
Nomenclature
############
To ensure consistency through-out this documentation, the following naming convention
is used to describe the relationship between the :term:`XML` descriptions and
the generated :term:`XML` and :term:`VHDL` output.
+---------------------+---------------------------------------------------------------------------------------------------------+
| Convention | |
+=====================+=========================================================================================================+
| ``attr=`` | Reference to a node attribute, Where ``attr`` is substituted with the actual name of the attribute. |
+---------------------+---------------------------------------------------------------------------------------------------------+
| ``attr=""`` | Provides an example with node attribute value set. ```` is substituted with the example's value. |
+---------------------+---------------------------------------------------------------------------------------------------------+
| BUS_LINK_LIB | This "linked" library is an external library which provides the :term:`VHDL` definitions and resources |
| | required by the chosen `Bus-side` interface. See :ref:`vhdl_libraries`. |
+---------------------+---------------------------------------------------------------------------------------------------------+
| UPPERCASE words | Indicate user-substitution for: |
| | |
| | * :term:`XML` input filenames; |
| | * :term:`XML` node names; *and* |
| | * :term:`XML` node attribute values. |
| | |
| | and the relationship to these UPPERCASE word substitutions in the resulting: |
| | |
| | * :term:`XML` output filenames; |
| | * :term:`VHDL` filenames; |
| | * :term:`VHDL` component names; |
| | * :term:`VHDL` package files; |
| | * ID references for :term:`VHDL` signal array indexes; *and* |
| | * Expandible :term:`VHDL` records to target register and bit-field entries. |
+---------------------+---------------------------------------------------------------------------------------------------------+
| XML_LINK_LIB | This "linked" library is used to reference the generated :term:`VHDL` in the end-user host design. |
| | See :ref:`vhdl_libraries`. |
+---------------------+---------------------------------------------------------------------------------------------------------+
Active-low signals
==================
Active-low signals, which may be defined in referenced materials with a line above
the signal name, are suffixed with a lowercase *n* throughout this document.
Concepts
########
Node types
==========
+-------------------------------+--------------------------------------------------------------------------------------------+
| Type | |
+-------------------------------+--------------------------------------------------------------------------------------------+
| Register | A register description, of up-to 32 bits. See :ref:`rmaps`. |
+-------------------------------+--------------------------------------------------------------------------------------------+
| Register with child bit-field | A register description, of up-to 32 bits, which has additional bit-field descriptions. |
| | See :ref:`rmaps`. |
+-------------------------------+--------------------------------------------------------------------------------------------+
| Interconnect | An `Interconnect (IC)` describes how to join other `registers` and `interconnects`. |
| | See :ref:`ics`. |
+-------------------------------+--------------------------------------------------------------------------------------------+
| Internal Memory | A register description with attributes to describe connections to dual-port :term:`FPGA` |
| | :term:`RAM`\ s. See :ref:`internal_memories`. |
+-------------------------------+--------------------------------------------------------------------------------------------+
| External Memory | See :ref:`external_memories`. |
+-------------------------------+--------------------------------------------------------------------------------------------+
Sides
=====
`XML2VHDL` is built around the connectivity from two interfaces. This results in the
concept of sides:
#. `Bus-side`. Operations which happen on the :term:`AXI4-Lite` (or equivalent) interface.
These are configured using the ``permission=`` node attribute; *and*
#. `Logic-side` or `Hardware-side`. Operations which happen in connected user-logic,
and are connected to components in the host design. These are configured using
the ``hw_permission=`` and/or ``hw_reset=`` node attributes.
Host design
===========
Host design, refers to the end-user design, to which the `XML2VHDL` generated output
is being integrated.
.. _vhdl_libraries:
VHDL libraries
##############
Bus Library
===========
When generating :term:`VHDL` from the :term:`XML` descriptions, `XML2VHDL` expects the output :term:`VHDL`
to be linked to a library. This is done using the ``--bus_library`` argument.
.. important::
This is an external library and |NOT| currently distributed with `XML2VHDL`.
For :term:`AXI4-Lite` the following (or equivalent) can be used:
* |dl_axi4lite_pkg|.
* |dl_slave_logic|.
XML Linked Library
==================
When generating :term:`VHDL` from the :term:`XML` descriptions, `XML2VHDL` expects the output :term:`VHDL`
to be linked to a library. This is done using the ``--slave_library`` argument.
.. caution::
As :term:`VHDL` output can be "linked" to libraries at generation time, care should be taken
to include the correct generated output files in the end-user host design.
Linking
=======
The :term:`VHDL` libraries are required to be linked at `XML2VHDL` generation time by
providing each via arguments to `XML2VHDL`:
.. code-block:: bash
xml2vhdl --bus_library "BUS_LINKED_LIB" --slave_library "XML_LINKED_LIB"