diff --git a/README.md b/README.md index d65cd25..32d0961 100644 --- a/README.md +++ b/README.md @@ -1,81 +1,16 @@ # DBT-RISE-RISCV -Am instruction set simulator based on DBT-RISE implementing the RISC-V ISA. The project is hosted at https://git.minres.com/DBT-RISE/DBT-RISE-RISCV . +Core of an instruction set simulator based on DBT-RISE implementing the RISC-V ISA. The project is hosted at https://git.minres.com/DBT-RISE/DBT-RISE-RISCV . -**DBT-RISE-RISCV README** +This library provide the infrastructure to build RISC-V ISS. Currently part of the library are the following implementations adhering to version 2.2 of the 'The RISC-V Instruction Set Manual Volume I: User-Level ISA': -This is work in progress, so use at your own risk. Goal is to implement an open-source ISS which can easily embedded e.g. into SystemC Virtual Prototypes. It used code generation to allow easy extension and adaptation of the used instruction. -The RISC-V ISS reaches about 30MIPS running on Intel Core i7-2600K. +* RV32IMAC +* RV32GC +* RC64I +* RV64GC -The implementation is based on LLVM 4.0. Eclipse CDT 4.7 (Oxygen) is recommended as IDE. +All pass the respective compliance tests. Along with those ISA implementations there is a wrapper implementing the M/S/U modes inlcuding virtual memory management and CSRs as of privileged spec 1.10. The main.cpp in src allows to build a standalone ISS when integrated into a top-level project. For further information please have a look at [https://git.minres.com/VP/RISCV-VP](https://git.minres.com/VP/RISCV-VP). -DBT-RISE-RISCV uses libGIS (https://github.com/vsergeev/libGIS) as well as ELFIO (http://elfio.sourceforge.net/), both under MIT license +Last but not least an SystemC wrapper is provided which allows easy integration into SystemC based virtual platforms. -**Planned features** +Since DBT-RISE uses a generative approch other needed combinations or custom extension can be generated. For further information please contact [info@minres.com](mailto:info@minres.com). -* add platform peripherals beyond programmers view to resemble E300 platform - * ... -* and more - -**Quick start** - -* you need to have a C++11 capable compiler, make, python, and cmake installed -* install LLVM >= 4.0 according to http://apt.llvm.org/ (if it is not already provided by your distribution e.g by Ubuntu 18.04) -* install conan.io (see also http://docs.conan.io/en/latest/installation.html): -``` - pip install conan -``` -* setup conan to use the minres repo: -``` - conan remote add minres https://api.bintray.com/conan/minres/conan-repo - conan remote add bincrafters https://api.bintray.com/conan/bincrafters/public-conan -``` -* checkout source from git -* start an out-of-source build: -``` - cd DBT-RISE-RiscV - mkdir build - cd build - cmake .. - cmake --build . -``` -* if you encounter issues when linking wrt. c++11 symbols you might have run into GCC ABI incompatibility introduced from GCC 5.0 onwards. You can fix this by adding '-s compiler.libcxx=libstdc++11' to the conan call or changing compiler.libcxx to -``` -compiler.libcxx=libstdc++11 -``` -in $HOME/.conan/profiles/default - -** Detailed Setup steps** - -*** prepare Ubuntu 18.04 *** - -``` - sudo apt-get install -y git python-pip build-essential cmake libloki-dev zlib1g-dev libncurses5-dev \ - libboost-dev libboost-program-options-dev libboost-system-dev libboost-thread-dev llvm-dev llvm-doc - pip install --user conan -``` - -*** prepare Fedora 28 *** - -``` - #prepare system - dnf install @development-tools gcc-c++ boost-devel zlib-devel loki-lib-devel cmake python2 python3 llvm-devel llvm-static - #install conan - pip3 install --user conan - export PATH=${PATH}:$HOME/.local/bin -``` - -*** Build the ISS *** - -``` - # configure conan - conan remote add minres https://api.bintray.com/conan/minres/conan-repo - conan remote add bincrafters https://api.bintray.com/conan/bincrafters/public-conan - conan profile new default --detect - # clone and build DBT-RISE-RISCV - git clone --recursive https://github.com/Minres/DBT-RISE-RISCV.git - cd DBT-RISE-RISCV/ - git checkout develop - mkdir build;cd build - MAKE_FLAGS="-j4" cmake .. - make -j4 -```