This simple app gives a way to visualize latency calculations
in the rate-synchronous model. The idea is to (i) specify a chain
element-by-element, (ii) to manually specify a schedule, and (iii)
to see the resulting end-to-end latency values and generated
- Select a period for the chain input and click
- Add new links in the chain by specifying the operator,
concomitance (‘f’ or ‘b’), and, if necessary, the sampling
- direct: write-before-read within a period
- last: read-before-write within a period
- any: unconstrained sampling at same period
- when: fast-to-slow rate transition (write
before first read)
- when last: fast-to-slow rate transition (read
before last write)
- current: slow-to-fast rate transition
- Clicking on the slots sets the phase offset for the
The gray areas are excluded by dependency and concomitance
The concomitance of each writer and reader is
shown above the reader arrows.
The backward end-to-end latencies (data age/last-to-last) are
shown along the bottom.
The forward end-to-end latencies (reaction
time/first-to-first) are shown along the top.
Click on any of the latencies to highlight the corresponding
path through the schedule.
- Add a latency bound and click update to
generate ILP constraints on the end-to-end latency and
causality, and to fix the schedule.
While normally the constraints restrict possible schedules,
here the idea is to validate the results.
Click on solve to run
Its log is shown at bottom.
The left-hand-sides of certain inequalities are shown on the
same line in gray.
The values of the enabled chainlat constraints should
correspond with the end-to-end latencies shown above (forward)
or below (backward, exists) the schedule.
The exists option generates a single set of
constraints so that there need only exist a backward latency
chain that satisfies the given bound.
The forward option constrains all forward data
propagation paths and thus the “reaction time”/
The backward option constrains all backward data
propagation paths and thus the “data age”/ “last-to-last”
The simplify option applies simple constant
propagation when generating constraints.
- The small pencil button next to the title gives a way to
copy-and-paste latency chains.
Click the info button again to hide this text.