Bound-T from Tidorum Ltd is a software tool that uses static analysis of the machine code to compute upper bounds on the execution time (WCET) and stack usage of embedded programs.
Analyse your code with Bound-T to get
A real-time program must meet its deadlines every time and all the time. Bound-T is a software tool that helps you create reliable real-time software. By static analysis of the code, Bound-T computes an upper bound on the worst-case execution time (the WCET). Thus it is easy to verify that deadlines are met even in the worst case.
Bound-T lets you deliver hard real-time software with confidence in its performance. For soft real-time programs, Bound-T can find the execution time of different execution scenarios to help you compute average response times and CPU loads. In both cases, Bound-T reduces the cost of performance verification.
Traditionally, real-time performance is verified by measuring the execution time of a set of test cases. It is often hard to define the worst-case execution scenario, and cumbersome to set up a realistic test harness in which the scenario can be run and measured. Static analysis, as in Bound-T, needs neither test cases nor test harness.
Using sophisticated methods of data-flow analysis and arithmetic modelling, Bound-T finds the loop-counter variables and bounds their initial and final values, thus bounding the number of loop repetitions.
Since Bound-T analyses the executable code, it is independent of the source language of the target program. It even handles mixed-language programs, for example programs that use assembly language libraries.
In some cases, Bound-T may be sensitive to the target compiler. Some compilers use library routines with non-standard calling sequences, or special code idioms for things like switch/case statements. Tidorum strives to make Bound-T compatible with the major compilers for each target.
Bound-T can analyse code for which the source is not at hand, for example mathematical libraries. (Note that target software licences may limit such analysis.)
Rare events, such as hardware failures, can be excluded from the "worst case" software scenario by user-written assertions on variable values, loop bounds, and the number of times specific calls are executed. Such assertions also support the analysis of complex programs that cannot be analysed fully automatically. Assertions are written as text files. By modifying the assertions, various execution scenarios can be analysed, for example to find the program's response times under various input loads.
In analysis and architectural design, you can use Bound-T to verify real-time design issues such as execution time budgets for each operation. A skeleton program can be built with the real loop and call structure but with all computations replaced by dummy loops that use the budgeted time. Bound-T can compute the overall WCET bound to verify that the overall deadlines are met with these budgets.
During coding and testing, you can use Bound-T to verify that each operation meets its time budgets. The program does not have to be complete or executable, only linkable.
Finally, you can verify that the full program meets its deadlines by analysing its schedulability based on the WCET bounds from Bound-T.
Bound-T is aimed chiefly at small and mid-sized embedded processors. It is able to model pipeline timing but does not currently model the real behaviour of caches or other dynamic features. This leads to overestimated (conservative) times for such features.
Static execution-time analysis is unsolvable in general. For Bound-T, the target program must be recursion-free and have a reducible loop structure. With automatic loop analysis, the analysis time depends strongly on the flow-complexity of target subprograms, otherwise the analysis time is proportional to the size of the target program.
Since Bound-T analyses machine code, a specific version is provided for each type of target processor; see the list of currently supported target processors.
Tidorum welcomes your suggestions for new target processors. Thanks to modular design, Tidorum can adapt Bound-T to customer-specified targets; please ask for an offer.
Bound-T can be executed on several host platforms. All targets processor are generally supported on all host platforms.
Bound-T is implemented using standard programming languages and portable coding styles. If you would like to use Bound-T on a platform that is not listed above, let us know and we will evaluate if a port is feasible.
Tidorum Ltd was founded in 2003 to further develop, sell and support Bound-T, taking over these functions from Space Systems Finland Ltd (SSF) where Bound-T was first developed.
Since January 2014 Tidorum supplies Bound-T as free of charge, open-source software, but continues selling technical support and custom extensions and modifications to Bound-T.
SSF developed Bound-T at first for the European Space Agency and successfully used it in space projects, for example, in the DEBIE instrument, on which a report (PDF) was published. Tidorum is now making Bound-T available in various ways as detailed below.
Tidorum offers a service where Tidorum uses Bound-T to analyse the real-time performance of a customer program. This can take place at Tidorum premises, or at the customer site.
The Bound-T tool itself is provided as free of charge, open-source software (the specific open-source licence is under definition). Some Bound-T modules use information proprietary to certain vendors of cross-compilers for certain target architectures, and these modules will remain closed source. Details are given here.
Tidorum will provide support and training for Bound-T in customer premises. Please contact Tidorum and let us know your needs.
Comprehensive documentation is available for Bound-T, including:
Feel free to contact Tidorum for any further information you may need.
Some details of the architecture and implementation of Bound-T can be found in the "What's inside?" page.