tum-ei-eda / M2-ISA-R

CoreDSL2 Parser with backend to generate simulation code for the ETISS instruction set simulator
https://tum-ei-eda.github.io/M2-ISA-R/
Apache License 2.0
6 stars 6 forks source link

Include some examples / automated testing with github actions #3

Closed fpedd closed 3 years ago

fpedd commented 3 years ago

I think it would be helpful to include an example folder that would contain some basic RISCV core modelled in CoreDSL. This could be used to quickly get going and test whether M2-ISA-R is working. One could also use it to run some automated tests using unittest and GitHub actions (including a status badge and what not... :)). Let me know if you think this is useful and I will create a PR.

In the long run, it could be beneficial to have a separate CoreDSL Model repository here on GitHub, similar to the one you have on GitLab @wysiwyng. This Model repository could then be included as a submodule. As this tool is the only way one can actually use the CoreDSL Models for anything meaningful, I would find this "relative tight coupling" between models and generator not too problematic.

wysiwyng commented 3 years ago

Examples exist already for CoreDSL 2.0, see MINRES' repository: https://github.com/Minres/RISCV_ISA_CoreDSL. As soon as the CoreDSL 2.0 parser is implemented for this project, that repo will serve as the main RISC-V model. Other models currently only exist internally and are not ready for publishing.

Unit tests will come with the new parser as well, this will require some planning effort on how to utilize CI in an effective way. The main problem here is that the generated models are not completely usable out-of-the box, some human intervention is still required.

Including models as a submodule here is probably not worth the effort of keeping them up to date, especially as this repository is neither intended to be only a parser for CoreDSL nor only a generator for ETISS. CI could simply pull in models it needs in the CI script, for development it is more convenient to have this repo and model repo(s) separated.