Giter Club home page Giter Club logo

orca-sim's Introduction

Hi there! I'm Anderson Domingues ๐Ÿ‘‹

Here's who I am:

  • ๐Ÿ‘ฏ A PhD student, currently working on a new manycore (system-on-chip) with support Real-Time communication. I've been working on my MsC and Phd for years, from which I learned a lot about hardware-software systems, as well as hardware description languages such as VHDL and SystemVerilog. Also, I've been using some tools such ModelSim (and Questa) and Vivado.

  • ๐Ÿ˜„ Passionate software developer, have been working with languages such as Javascript, PHP, C#, C, C++, and Python. In the last years, I invested some time to learn could technologies, mostly including AWS tools. I have participated in many projects along my 10+ years of carrer.

  • โšก I'm a learner, and I'm always looking for new challenges and projects! Contact me if you have anything in mind.

A little more about me:

  • ๐Ÿ”ญ Iโ€™m currently working on ... My PhD project. RTL design and simulation, approches for achieving real-time communication in manycore systems, logical synthesis, peripheral drivers, and scheduling are some of the topics that I work on daily.
  • ๐ŸŒฑ Iโ€™m currently learning ... Python! I recently migrated some of the tools I made to python, and I'm currently investigating ways of shipping those tools to people so that they won't have to install a bunch of unecessary stuff.
  • ๐Ÿ’ฌ Iโ€™m looking to collaborate on ... New projects! I like to discuss business strategy and to give shape to new products, services, and ideas. I'm always eager to help in the kick off new startups.

๐Ÿ“ซ Contact: [email protected]

orca-sim's People

Contributors

alzemiro51 avatar amamory avatar andersondomingues avatar leorezende93 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar

orca-sim's Issues

Replace *strhti*, *strfind*, *hexstr*, and *endswap* functions in gbdbrsp module

Auxiliary functions in gdbrsp module must be replaced by corresponding functions in std library or moved to outside the gdbrsp module.

functions:
strhti => converts an string represented hexadecimal number to its integer representation
strfind => find the index of some character in the character string
hexstr => converts a bytestream to its hexadcimal string representation
endswap => byte swap for endianess treatment

software and hardware are mixed up

Ideal would be to each module to have its own parameter file. then, the orca parameter file would include the parameter file from each used submodule plus its own unique parameters.

however, in terms of software, three should be a separate parameter for each supported OS.

# ==============================================================[ HFRISCV ]

This project is 'addicted to hellfireOS' ...

is it reaaaaaly necessary to have software related definitions together with hardware definitions ?
this situation should be avoided.

the hardware model should be totally independent of the software. I would highly recommend to move the software dir to a different repository. for example:

  • orca-hellfire: orca compatible software running on top of hellfireOS
  • orca-freertos: orca compatible software running on top of FreeRTOS
  • orca-riot: ...
  • orca-zephyr: ...

of course, at the low level, the software need to know, for instance, to whihch address the hardware is mapped. For this reason, the orca-sim repo would need a single header file with all the information the software layer needs to know. When the software is compiled, it would include this hardware-related header file.

Possible data loss caused by endianess

Echo application echoes messages one byte less than expected. Possible cutting the last by the byte swap of endianess routine.

Possible fixes:

  1. increase data packet size by 1 byte to avoid loss during byte swap
  2. shift last byte to the left if packet size is even

split software image into # nodes

Compilation scripts must implement one image for each of the individual PE, avoiding applications which are not executed by PE to be shipped into the image.

use of cmake for app programmers

The current building system needs urgent improvements.
As far as I understood, at least the applications, tools, and OS should be completely decoupled from URSA and ORCA.

We need a more user friendly alternative to this script to easy the app development:
https://github.com/andersondomingues/ursa/blob/stable/Configuration.mk

I suggest something like this in the app dir

app/include
app/src
app/doc
app/build
CmakeLists.txt
ursa.exe

in the build dir we would have
build/sim <= ursa and orca libs
build/os <= HF
build/middleware <= self-adapt
build/app
build/tools

I can show you 2 Cmake-based projects I did in the past to see the final results.

Amory

enhanced task mapping

  • replace if-else by #ifdef at the startup routine to avoid useless code from being included in the images.
  • generate startup code for individuals PE based on the mapped tasks.

Variability mechanisms

The amount of parameters increases in a daily basis; thus some strategy to automate the configuration of the many possible platforms is required.
Today we use preprocessor directives to handle the matter, but It may not be "manageable" after a certain number of parameters.
Besides, dependency between parameters must be treated as well.

CI Travis, regression testing, and github badges

Github has something called badges. There are few useful badges that give to the viewer more confidence about the design. This is a list of some of the most relevant ones:

here are few examples of repos with badges
https://github.com/amamory/seriation
https://github.com/lsa-pucrs/donnie-assistive-robot-sw
https://github.com/disaster-robotics-proalertas/usv_sim_lsa

For CI, it would be nice that there were few test applications (UNIT Testing?!?!)
so we can quickly assess the results of regression testing.

Off-chip emulation with pthreads causing "could not find signal in global observer"

Off-chip module side thread keeps listening for UDP packets when it should be killed, causing "could not find signal in global observer" messages to be spammed in the reporting output. Packet sending is not affected.

Steps for reproducing the bug:

  1. start any simulation
  2. press CTRL+C once to stop the engine (do not press multiple times, wait for the simulation to finish properly)
  3. see a couple of messages at the end of simulation regarding the orphaned thread

Solution: replace the pthread implementation with the asynchornous I/O impl. used in GDBRSP server.

support to Doxygen

not all class definitions have Doxygen comment style. It would be nice to have some tec docs. there are some tutorials about doxygen deployment in github
https://gist.github.com/vidavidorra/548ffbcdae99d752da02.

There also alternatives to doxygen, based on markdown.
I like ReadTheDocs, for instance, https://dont-be-afraid-to-commit.readthedocs.io/en/latest/documentation.html

it would also be nice to have readme.md files in the main dirs/modules to briefly explain its contents.

Choose one format and stick with it !

graphviz

in the readme file, replace rviz by graphviz

  • Make sure you have installed doxygen and rviz to your system.

  • Make sure you have installed doxygen and graphviz to your system.

hf_recv error

Hello Anderson

I was testing "example-orca-udp" and the returned msg was not correct. The output was:

[ INFO] [1560961567.053192095]: r: "", 9 bytes (0:62:20)

The msg was empty, although It was received 9 bytes. Since the msg was incorrect, when the command "orca_mpsoc_to_ros.publish(msg)" was executed, a segmentation fault event has emerged.

Regards,
Marcelo

rewire cpu-to-ni (send process)

The NI currently uses of the _comm_start signal to start their send operation. The cpu checks whether the signal is down before raise it up to send a packet to the network. Both module writes to this signal, so it must be replaced by two distinct signals: one to report status to the cpu (_comm_status), and another one to start the sending operation (_comm_start).

Network stuck after long time activity

The network works properly until an arbitrary number of cycles, then gets stuck preventing data from going from one node to another. No error is shown. Data processing is not affected, only communication.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.