I. Introduction
As the use of computational systems proliferates in our society, systems with real-time requirements, i.e. Real-Time Systems (RTSs), become ever more common. It is necessary for the RTSs' industry to provide effective, reliable and flexible systems, making them available to the market as quickly as possible. This results in increasing software complexity, where we have more and more equipment with computers controlling and making decisions that affect the physical world and, consequently, that must use complex hardware elements (e.g., cache memories, pipelines, and branch prediction mechanisms). Moreover, such systems comprise today industrial equipment with millions of lines of code and even Linux-based embedded controllers. Consequently, providing guarantees that the temporal requirements are met becomes increasingly difficult [1], [2].