**Experimental modular TFA (xTFA)** is a tool for computing latency bounds in time-sensitive networks that contain cyclic dependencies, traffic regulators, packet replication and elimination functions and non-ideal clock.

The main ideas behind the tool are presented in my manuscript.

A discussion on their implementation in the tool is available :doc:`relationmanuscript`

A discussion on their implementation in the tool is available here: :doc:`relationmanuscript`

This website contains the API reference: :doc:`xtfa`.

In this page, we detail where the notions presented in the manuscript are implemented in the tool.

...

...

@@ -6,24 +6,44 @@ In this page, we detail where the notions presented in the manuscript are implem

The Flow State (6.2.2)

----------------------

The concept of flow state is implemented by the class :py:class:`xtfa.flows.FlowState`.

It contains:

* :py:attr:`xtfa.flows.FlowState.flow` a reference to the corresponding flow

The Content of the Flow State

^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

* :py:attr:`xtfa.flows.FlowState.flow`: A reference to the corresponding flow

* :py:attr:`xtfa.flows.FlowState.atEdge` a string used to identify the parents from which the flow states comes

* :py:attr:`xtfa.flows.FlowState.atEdge`: A string used to identify the parents from which the flow states comes

* :py:attr:`xtfa.flows.FlowState.arrivalCurve` the arrival curve of the flow at the corresponding observation point

* :py:attr:`xtfa.flows.FlowState.arrivalCurve`: The arrival curve of the flow at the corresponding observation point

* :py:attr:`xtfa.flows.FlowState.clock` the clock used to observe the values inside the flow state

* :py:attr:`xtfa.flows.FlowState.clock`: The clock used to observe the values inside the flow state

* :py:attr:`xtfa.flows.FlowState.flags` used to store optionnal flags. Useful for example for the ADAM computations.

* :py:attr:`xtfa.flows.FlowState.minDelayFrom` [resp., :py:attr:`xtfa.flows.FlowState.minDelayFrom`] the :math:`d[u]` [resp., :math:`D[u]`] maps. In the :py:attr:`xtfa.flows.FlowState` class, there exit no explicit set of ancestors :math:`\mathcal{U}`. The ancestors are stored as keys of the :py:attr:`xtfa.flows.FlowState.minDelayFrom` and :py:attr:`xtfa.flows.FlowState.minDelayFrom` maps.

* :py:attr:`xtfa.flows.FlowState.minDelayFrom` [resp., :py:attr:`xtfa.flows.FlowState.minDelayFrom`]: The :math:`d[u]` [resp., :math:`D[u]`] maps representing the lower [resp.,] latency bounds since :math:`u^*`, the output of the ancestor :math:`u`. In the :py:attr:`xtfa.flows.FlowState` class, there exit no explicit set of ancestors :math:`\mathcal{U}`. The ancestors are stored as keys of the :py:attr:`xtfa.flows.FlowState.minDelayFrom` and :py:attr:`xtfa.flows.FlowState.minDelayFrom` maps.

* :py:attr:`xtfa.flows.FlowState.rtoFrom`: The :math:`\lambda[u]` corresponding to an upper-bound on the Reordering late Time Offset (RTO) of the flow at the location of the flow state, with respect the order of its packets at :math:`u^*`, the output of :math:`u`.

Changing the Clock of a Flow State

^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

The clock used to observe a flow state can be change with :py:meth:`xtfa.flows.FlowState.changeClock`

The Computation Pipelines (6.2.3)

---------------------------------

The computation pipelines are implemented by the following files:

* :py:attr:`xtfa.flows.FlowState.rtoFrom`

* The aggregate computation pipeline (ACP) is implemented in :py:mod:`xtfa.inputPipelines`

* The delay-bound computation pipeline is implemented in :py:mod:`xtfa.contentionPipelines`

* The flow-state computation pipeline is implemented in :py:mod:`xtfa.outputPipelines`

The differences between the names used in the manuscript (aggregate computation pipeline, ACP) and the names used in the tool (input pipeline) are because the latter have been selected before the former.

When we wrote the manuscript, we decided to change the name of the notions for clarification purposes.