etiss

Extendable Translating Instruction Set Simulator

https://github.com/tum-ei-eda/etiss

Science Score: 65.0%

This score indicates how likely this project is to be science-related based on various indicators:

  • CITATION.cff file
    Found CITATION.cff file
  • codemeta.json file
    Found codemeta.json file
  • .zenodo.json file
    Found .zenodo.json file
  • DOI references
    Found 6 DOI reference(s) in README
  • Academic publication links
  • Academic email domains
  • Institutional organization owner
    Organization tum-ei-eda has institutional domain (www.eda.ei.tum.de)
  • JOSS paper metadata
  • Scientific vocabulary similarity
    Low similarity (11.5%) to scientific vocabulary

Keywords

instruction-set-simulator risc-v
Last synced: 6 months ago · JSON representation ·

Repository

Extendable Translating Instruction Set Simulator

Basic Info
Statistics
  • Stars: 35
  • Watchers: 9
  • Forks: 42
  • Open Issues: 24
  • Releases: 1
Topics
instruction-set-simulator risc-v
Created about 6 years ago · Last pushed 6 months ago
Metadata Files
Readme License Citation

README.md

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.

Publication

If you use ETISS in your academic work you can cite it from this:

ETISS Publication

``` @inproceedings{Mueller-Gritschneder_ETISS_2017, author = {Mueller-Gritschneder, Daniel and Dittrich, Martin and Greim, Marc and Devarajegowda, Keerthikumara and Ecker, Wolfgang and Schlichtmann, Ulf}, booktitle = {RSP '17: Proceedings of the 28th International Symposium on Rapid System Prototyping: Shortening the Path from Specification to Prototype}, doi = {10.1145/3130265.3138858}, pages = {79--84}, publisher = {Association for Computing Machinery}, series = {28th International Symposium on Rapid System Prototyping: Shortening the Path from Specification to Prototype}, title = {{The Extendable Translating Instruction Set Simulator (ETISS) Interlinked with an MDA Framework for Fast RISC Prototyping}}, url = {https://doi.org/10.1145/3130265.3138858}, year = {2017} } ```

Publication

If you use ETISS in your academic work you can cite it from this:

ETISS Publication

``` @inproceedings{Mueller-Gritschneder_ETISS_2017, author = {Mueller-Gritschneder, Daniel and Dittrich, Martin and Greim, Marc and Devarajegowda, Keerthikumara and Ecker, Wolfgang and Schlichtmann, Ulf}, booktitle = {RSP '17: Proceedings of the 28th International Symposium on Rapid System Prototyping: Shortening the Path from Specification to Prototype}, doi = {10.1145/3130265.3138858}, pages = {79--84}, publisher = {Association for Computing Machinery}, series = {28th International Symposium on Rapid System Prototyping: Shortening the Path from Specification to Prototype}, title = {{The Extendable Translating Instruction Set Simulator (ETISS) Interlinked with an MDA Framework for Fast RISC Prototyping}}, url = {https://doi.org/10.1145/3130265.3138858}, year = {2017} } ```

Getting Started

The ETISS core and included plugins are built as libraries. To make use of the simulator, a program using the library is needed. A very simple bare-metal processor is included in this repository in src/bareetissprocessor. This program is built during the normal build process; its compiled binary will be placed under <build_-_dir>/bin and <etiss_install_dir>/bin. See its README for more details.

System Requirements

ETISS is built using C++ and verified to work on recent x86_64 Linux host systems. Windows hosts are currently only supported using WSL or similar virtualization methods.

Dependencies

  • C++ 14 compliant compiler
  • Boost >= 1.54 development headers, specifically the sub-libraries:
    • boost-system
    • boost-filesystem
    • boost-program-options
  • CMake >= 3.13
  • Optional:
    • Graphviz + Doxygen (For documentation generation)
    • LLVM + Clang 11 (Please download appropriate pre-built binaries from https://releases.llvm.org/download.html and put them in /opt/)

LINUX SYSTEM

Packages required for Ubuntu / Debian:

build-essential git cmake libboost-system-dev libboost-filesystem-dev libboost-program-options-dev

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. Replace Release with Debug for development purposes.

$ cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=`pwd`/installed ..

Compile the package:

$ make

Build the documentation (optional):

$ make doc

Install the package:

$ make install

To save time, compiling can be sped up by using multiple CPU cores:

$ make -j$(nproc)

WINDOWS SYSTEM

Running ETISS on Windows systems is currently only supported using WSL. The steps here are the same as for running on Linux.

Example project to run ETISS

Example programs tailored to run in ETISS can be found in the repository https://github.com/tum-ei-eda/etissriscvexamples. Follow the README there to get started.

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/

Owner

  • Name: EDA@TUM
  • Login: tum-ei-eda
  • Kind: organization
  • Email: eda@ei.tum.de
  • Location: Munich, Germany

Open Source Repository of the Chair of Electronic Design Automation, TU Munich

Citation (CITATION.cff)

cff-version: 1.2.0
message: "If you use this software, please cite it as below."
authors:
- family-names: "Mueller-Gritschneder"
  given-names: "Daniel"
  orcid: "https://orcid.org/0000-0003-0903-631X"
- family-names: "Dittrich"
  given-names: "Martin"
- family-names: "Greim"
  given-names: "Marc"
- family-names: "Devarajegowda"
  given-names: "Keerthikumara"
  orcid: "https://orcid.org/0000-0003-3498-0708"
- family-names: "Ecker"
  given-names: "Wolfgang"
  orcid: "https://orcid.org/0000-0002-9362-8096"
- family-names: "Schlichtmann"
  given-names: "Ulf"
  orcid: "https://orcid.org/0000-0003-4431-7619"
title: "The Extendable Translating Instruction Set Simulator (ETISS)"
url: "https://github.com/tum-ei-eda/etiss"
preferred-citation:
  type: conference-paper
  authors:
  - family-names: "Mueller-Gritschneder"
    given-names: "Daniel"
    orcid: "https://orcid.org/0000-0003-0903-631X"
  - family-names: "Dittrich"
    given-names: "Martin"
  - family-names: "Greim"
    given-names: "Marc"
  - family-names: "Devarajegowda"
    given-names: "Keerthikumara"
    orcid: "https://orcid.org/0000-0003-3498-0708"
  - family-names: "Ecker"
    given-names: "Wolfgang"
    orcid: "https://orcid.org/0000-0002-9362-8096"
  - family-names: "Schlichtmann"
    given-names: "Ulf"
    orcid: "https://orcid.org/0000-0003-4431-7619"
  year: "2017"
  title: "The Extendable Translating Instruction Set Simulator (ETISS) Interlinked with an MDA Framework for Fast RISC Prototyping"
  start: "79"
  end: "84"
  doi: "10.1145/3130265.3138858"
  url: "https://doi.org/10.1145/3130265.3138858"
  publisher: "Association for Computing Machinery"
  conference: "28th International Symposium on Rapid System Prototyping: Shortening the Path from Specification to Prototype"
  collection-doi: "10.1145/3130265"
  collection-title: "RSP '17: Proceedings of the 28th International Symposium on Rapid System Prototyping: Shortening the Path from Specification to Prototype"
  location: "Seoul, South Korea"
  collection-type: "proceedings"
  isbn: "9781450354189"

GitHub Events

Total
  • Issues event: 4
  • Watch event: 5
  • Delete event: 1
  • Issue comment event: 14
  • Push event: 15
  • Pull request review comment event: 11
  • Pull request review event: 6
  • Pull request event: 11
  • Fork event: 5
  • Create event: 6
Last Year
  • Issues event: 4
  • Watch event: 5
  • Delete event: 1
  • Issue comment event: 14
  • Push event: 15
  • Pull request review comment event: 11
  • Pull request review event: 6
  • Pull request event: 11
  • Fork event: 5
  • Create event: 6

Issues and Pull Requests

Last synced: 6 months ago

All Time
  • Total issues: 3
  • Total pull requests: 6
  • Average time to close issues: N/A
  • Average time to close pull requests: over 1 year
  • Total issue authors: 3
  • Total pull request authors: 3
  • Average comments per issue: 0.0
  • Average comments per pull request: 2.17
  • Merged pull requests: 2
  • Bot issues: 0
  • Bot pull requests: 0
Past Year
  • Issues: 3
  • Pull requests: 4
  • Average time to close issues: N/A
  • Average time to close pull requests: N/A
  • Issue authors: 3
  • Pull request authors: 2
  • Average comments per issue: 0.0
  • Average comments per pull request: 0.0
  • Merged pull requests: 0
  • Bot issues: 0
  • Bot pull requests: 0
Top Authors
Issue Authors
  • JoGei (3)
  • wysiwyng (2)
  • PhilippvK (2)
  • RRArinc (1)
  • togulcan (1)
  • rafzi (1)
  • DanMueGri (1)
  • AndHager (1)
  • maltevonehren (1)
Pull Request Authors
  • PhilippvK (5)
  • wysiwyng (4)
  • JoGei (1)
  • rafzi (1)
  • SamiraAFg (1)
  • khouly18 (1)
  • Samanti-Das (1)
  • thomasgoodfellow (1)
  • togulcan (1)
  • kebi-be (1)
  • jokap11 (1)
Top Labels
Issue Labels
bug (2) help wanted (2) enhancement (1)
Pull Request Labels

Dependencies

script/requirements.txt pypi
  • mako *
  • matplotlib *
src/bare_etiss_processor/requirements.txt pypi
  • argparse *
  • humanize *
  • pyelftools *
.github/workflows/ci.yml actions
  • actions/checkout v2 composite
  • actions/download-artifact v2 composite
  • actions/upload-artifact v2 composite
  • geekyeggo/delete-artifact 1-glob-support composite
  • peaceiris/actions-gh-pages v3 composite
  • peter-evans/create-or-update-comment v1 composite
  • peter-evans/find-comment v1 composite
.github/workflows/docs.yml actions
  • actions/checkout v2 composite
  • peaceiris/actions-gh-pages v3 composite
ci/Dockerfile docker
  • ubuntu 16.04 build