Skip to content

A Simulator for ORCA Platform made on top of URSA Engine.

License

Notifications You must be signed in to change notification settings

amamory-ursa/orca-sim

 
 

Repository files navigation

ORCASIM

How to:

  1. clone this repository
  2. clone https://github.com/andersondomingues/hellfireos into /software (must be /orca-sim/software/hellfireos)
  3. make clean && make
  4. run as ./bin/single-core.exe image.bin

Project organisation

  • /bin : compiled binaries and external libraries
  • /docs : contains a tutorial and images used in this MD file, also serving as output folder for doxygen
  • /logs : output from the hardware models, as well as other implementation-specific outputs and debugging
  • /models : general purpose hardware models (independent modules)
  • /platforms : platform-specific hardware models (top-level modules)
  • /simulator : URSA's core
  • /software : software to be deployed to emulated platforms
  • /tools : several scripts and helpers

Project Status

  • We have succefully emulated a fully-functional MPSoC platform comprising of a mesh-based NoC architecture interconnecting up to 16x16 processing elements (256 cores). The platform is ORCA MPSoC (see https://github.com/andersondomingues/orca-mpsoc). URSA and ORCA started as the same project, and as the project progressed we decided to split them into two different projects, one for URSA, which is still a simulation API, and another one for ORCA, a fully-functional MPSoC platform. We are still cleaning the repository and setting things up. In meanwhile, I apologize for any "orbitating artifact".

Project Roadmap

Things we are likely to work on in the next months:

  • Automatically generate and export Doxygen documentation to a github of the project, programmatically.
  • A VHDL version of the platform. See (https://github.com/andersondomingues/orca-mpsoc)
  • Provide an API to use for energy evaluation of applications
  • Unit tests on software (mainly for HellfireOS, see (https://github.com/andersondomingues/hellfireos)
  • Provide hardware models as static libraries
  • Rework task mapping and wiring (code can be cumbersome when dealing with a large number of signals)
  • Provide some IDE-specific projects (hopefully they won't inject any dirt in the project)
  • Remote debugging using GDB
  • Remove eliminate pthreads from models
  • Support for C++ apps
  • Stub code generator
  • A website containing technical and non-technical information on the project.
  • Benchmarks! Probably something based on PARSEC but for NORMA archs.
  • Memory hierarchy and some memory protection
  • Update HellfireOS to match a more stable and recent branch (see (https://github.com/sjohann81/hellfireos)
  • Replace multitail with some visualization tools (including, NoC, Task Schedule, memory and other inspections)
  • Provide a robust infrastructure so that anyone can create their own models
  • Automatic model generation (based on some process algebra)
  • Deal with endianess (enables heterogeneous multicore)
  • DOOM (see https://github.com/lcq2/risc-666)
  • Decent tutorials

Generating API Docuemtnation

  • Make sure you have installed doxygen and rviz to your system.
  • In the root directory, type make documentation. Documentation will be deployed to docs/doxygen folder.
  • You can access docs by opening docs/doxygen/html/index.html in any web browser (e.g., firefox).
  • LaTeX documentation can be generate by typeing make -C docs/doxygen/latex/. The output file docs/doxygen/latex/refman.pdf contains the generated documentation.

Third-Party Work

  • HF-RISCV. The hf-riscv core is maintained by Sergio Johann (sjohann81). More information on his work can be found at his repository. Also, our model of hf-riscv core is very based on the one provided by him.

  • HEMPS (and HERMES). The GAPH group maintains the HEMPS project. More information on their work can be found at their website. Provided network-on-chip router model is based on the RTL models available at their repository.

  • HELLFIREOS. We use sjohann81's HellfireOS operating system within the processing tiles of the ORCA platform.

Licensing

See LICENSE.MD for details.

Contact

Feel free to contact me (andersondomingues), the maintainer of this project: mailto:[email protected].

About

A Simulator for ORCA Platform made on top of URSA Engine.

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • C++ 90.3%
  • Makefile 9.0%
  • C 0.7%