Hierarchical Timing Language


The HTL compiler first checks the well-formedness and the well-timedness of an HTL program, and in the end it generates the so-called E code (which is virtual machine code) interpreted by the E machine. When compiling an HTL program there are two different possibilities: (1) first flatten the HTL program and then compile the resulted flat program, and (2) directly compile the hierarchical program. First compilation method is useful when compiling HTL programs that do not have a high degree of parallelism, but if the degree of parallelism increases then the size of the generated code increases exponentially. The second method assumes more runtime support but the size of the generated code increases linearly when the degree of parallelism increases.
Flat vs. Hierarchical HTL Compiler


Binary Distribution Sources
Flat HTL Compiler flat-htlc.jar Flat_HTLCompiler.tar.gz
Hoerarchical HTL Compiler hierarchical-htlc.jar Hierarchical_HTLCompiler.tar.gz

How To Run The Compiler?

Before you run the compiler you have to make sure that you have installed on your computer J2SE Runtime Environment 5.0 (JRE 5.0, you can find it here).

To compile a HTL program you have to open a terminal and type:
    java -jar [htlc] [file_name]
where htlc is either flat-htlc.jar or hierarchical-htlc.jar; file_name, is the name of the file containing HTL program, e.g., java -jar hierarchical-htlc.jar myProgram.htl. If the compilation was successful, you will see a message: “Complete.”, also in the directory where is the HTL program, there will be created some directories, all of this directories, except “Flattening”, contains C code that has to be compiled into the E Machine. The “Flattening” directory, contains the flatten HTL program, will the “ecode” directory contains the generated E code.

The above instructions are for the case when the HTL program is not to be run on a distributed platform. If the program will be run on a distributed platform then you have to use the following command:
    java -jar [htlc] [file_name] -host [host_name] -annotated
where htlc is either flat-htlc.jar or hierarchical-htlc.jar; file_name, is the name of the file containing HTL program, and host_name, is the name of the host for which the HTL program will be compiled, for each host specified in the HTL program, has to be done a separate compilation. The generated directories are the same as for single host compilation.

How To Compile the HTL Compiler?

Before you compile the HTL Compiler you have to make sure that, you have installed ant and J2SE(TM) Development Kit 5.0..

You also need the flat or hoerarchical HTL Compiler sources.

Directory structure is:
  • src” subdirectory contains the source files for the compiler;
  • classes” subdirectory will contain the compile files;
  • dist” subdirectory will contain the generated jar file.
  • lib” subdirectory contains the sablecc jar file.
To build the project
  • type “ant build_jar” to generate the grammar, compile the *.java sources and create the HTL Compiler jar file;
  • type “ant clean” to clean the project.