srishtid200 / etiss_

Other
0 stars 0 forks source link

ETISS (Extendable Translating Instruction Set Simulator)

Build Status

ETISS is a C++ ISS (Instruction Set Simulator), which is designed to simulate instructions for a target core on a host computer. It translates binary instructions into C code and appends translated code into a block, which will be compiled and executed at runtime. As aforementioned, it is Extendable, thus it supports myriad level of customization by adopting the technique of plug-ins. ETISS supports varied Instruction Set Architectures (ISAs) according to user needs (see architecture models in ArchImpl/). Meanwhile, the simulator could be enhanced with customized plug-ins to set up many applications (see application examples in examples/).

ETISS diagram

ETISS is structured as shown in the diagram above, and it is capable of translating binary instructions according to loaded architecture models. Furthermore, plug-ins could be developed to model new features of architecture and be added flexibly without any hacking in the ETISS source code.

Getting Started

ETISS has to be built into separate libraries, and a main file is needed to set up a simulator. After build and installation, the folder examples/ will be installed into <etiss_install_dir> with correct configuration. Check README in <etiss_install_dir>/examples/ respectively to set up a simulator for varied bare-metal simulations.

System Requirements

ETISS is supported on x86_64 Linux and Windows hosts. Tested compilers include GCC 7.4 and MSVC 2019. CMake 3.13 is required as build system.

Dependencies

LINUX SYSTEM

Packages for Ubuntu 18:

sudo apt-get install g++ libboost-system-dev libboost-filesystem-dev libboost-program-options-dev graphviz doxygen libtinfo-dev zlib1g-dev texinfo

Build and Installation

Follow these instructions to quickly build ETISS. Start in the root directory of ETISS by creating a build directory:

$ mkdir build_dir

Change to the created directory, e.g.,

$ cd build_dir

If LLVM-JIT compiler is used, source it with the environment variable:

$ export LLVM_DIR=/path/to/llvm

Configure the build system, e.g., Replace `pwd`/installed with your <etiss_install_path> if you do not like to install etiss into build_dir/installed/. Set up path to cmake if necessary.

$ cmake -DCMAKE_BUILD_TYPE=Release -DETISS_BUILD_MANUAL_DOC=ON \
        -DCMAKE_INSTALL_PREFIX:PATH=`pwd`/installed \
        ..

Compile the package:

$ make

Build the documentation (optional):

$ make doc

Install the package:

$ make install

WINDOWS SYSTEM

Requirements for Windows:

Packages for Windows:

Build and Installation

Follow these instructions to quickly build ETISS. The developer powershell of Visual Studio is recommended. Otherwise the environment PATH variable might have to be set accordingly to locate various tools. Start in the root directory of ETISS by creating a build directory:

$ mkdir build_dir

Change to the created directory, e.g.,

$ cd build_dir

Configure the build system:

$ cmake -DCMAKE_BUILD_TYPE=Release -DETISS_BUILD_MANUAL_DOC=ON -DCMAKE_INSTALL_PREFIX:PATH=X:/install/path ..

Compile the package:

Compile in Release mode or Debug mode by setting $BUILD_TYPE to Release or Debug appropriately.

$ cmake --build . --config $BUILD_TYPE

Install the package:

$ cmake --build . --config $BUILD_TYPE --target install

Example project to run etiss

Follow steps in <etiss_install_path>/examples/README

Licensing and Copyright

See the separate LICENSE file to determine your rights and responsibilities for using ETISS.

User Documentation

The documentation is optionally built with ETISS and can be found in <etiss_install_path>/doc/html/index.html

It is also hosted at https://tum-ei-eda.github.io/etiss/