Worst-case execution time (WCET) analysis is concerned with computing a precise-as-possible bound for the maximum time the execution of a program can take. This information is indispensable for developing safety-critical real-time systems, e. g., in the avionics and automotive fields. Starting with the initial works of Chen, Mok, Puschner, Shaw, and others in the mid and late 1980s, WCET analysis turned into a well-established and vibrant field of research and development in academia and industry. The increasing number and diversity of hardware and software platforms and the ongoing rapid technological advancement became drivers for the development of a wide array of distinct methods and tools for WCET analysis. The precision, generality, and efficiency of these methods and tools depend much on the expressiveness and usability of the annotation languages that are used to describe feasible and infeasible program paths. In this article we survey the annotation languages which we consider formative for the field. By investigating and comparing their individual strengths and limitations with respect to a set of pivotal criteria, we provide a coherent overview of the state of the art. Identifying open issues, we encourage further research. This way, our approach is orthogonal and complementary to a recent approach of Wilhelm et al. who provide a thorough survey of WCET analysis methods and tools that have been developed and used in academia and industry.Keywords Worst-case execution time (WCET) analysis · Annotation languages · Path-oriented, constraint-oriented, and hierarchy-oriented WCET annotation languages · WCET annotation language challenge
MotivationComputing the time that the execution of a program can take in the worst case is challenging. It requires to cope with analysis problems that are computationally intractable or undecidable. Tools and methods for worst-case execution time analysis (WCET) thus usually content themselves to computing an upper bound of the actual WCET. The precision, generality, and efficiency of these tools and methods depend much on the accurate description and identification of feasible and infeasible program paths. A program path is feasible, 123 412 R. Kirner et al. if there is an actual program execution taking this path; it is infeasible otherwise. In practice, this information is computed by fully automatic program analyses, where possible; it is manually provided by application programmers otherwise. In both cases this requires a dedicated language in order to annotate this information and to pass it on to a subsequent WCET analysis. Such a language is commonly called an annotation language. Over the past two decades, an array of conceptually quite diverse annotation languages has been proposed to support the needs of different WCET analysis methods and tools.In this article, we present a systematic and comprehensive comparison of the various approaches for WCET annotation languages. This acts on our suggestion of the WCET annotation language challenge [32] comple...