next up previous contents
Next: 3. Structure of the Up: 2. Overview of the Previous: 2.2 Low-level and High-level   Contents

2.3 Heptane's execution

Here we give a deeper view to a typical execution of Heptane.

Figure 2.1: A typical execution of Heptane
Image overview.gif

First, the configuration file (config.xml) is read by a shell script to determine to target's name, and performing a few tests on the configuration wanted.

Heptane uses an external tool, Salto, for the assembly analysis. Salto is linked statically with Heptane, so that we must make different binary executables for each possible target. The boot script chooses between the different binaries, according to the specified target.

A few work is done inside Heptane to generate some needed intermediate files. It depends on the method of computation you will use. For example, for an ``Aces'' computation, you will need to compile the source files with a particular cross-compiler, to cross-assemble, and cross-link. The cross-linkage is absolutely necessary to obtain the addresses of the assembly instructions. At cross-objdump, you can get the addresses back. These steps are made by external script files, mainly shell, and a few perl/sed files. Then, you get back a clean assembly file to be analyzed by Salto, and the associated addresses.

Note that we do not work directly on source files, but on MODIFIED source files, because it is required to add assembly flags to match the source files and the assembly file (in the tree method analysis).

The different source files are then analyzed, and the associated structure is extracted.

Then, the analysis begins, and each computing point asked by the user is done. These are high-level contexts creation and computation, and low-level contexts creation and computation. Those contexts creation are associated with each node they are associated to.

Each WCET computation has the possibility to use an external tool to compute partial (or complete) results. The method used must be retargetable, that is, Heptane must not be dependent from one external computation tool. To achieve this goal, the information to compute is written in XML, and an external XSLT sheet transforms it to a particular external tool format. Of course, the result must be written in a particular dialect, or transformed by another XSLT sheet, so that Heptane is still independant from the external tool. For example, the ACES methods can use either Maple or Maxima. Maple was used at the first place because it is fast and flexible, but it appeared that Heptane should be able to use a freely available tool so that the potential users wouldn't have to buy Maple; it was easily (less than 1 day of work) possible to retarget Heptane for Maxima, which is as free as Heptane (but unfortunately much slower than Maple)

Results are read back and processed if necessary. The XML result file is written. It is then possible to call external tools to process the results. For example, html.sh can be called to build the different HTML files.


next up previous contents
Next: 3. Structure of the Up: 2. Overview of the Previous: 2.2 Low-level and High-level   Contents
Mathieu Avila 2004-08-27