Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Adding support for a newRISC-V processor to riscv-formal #34

Open
weedmank opened this issue Jan 2, 2020 · 4 comments
Open

Adding support for a newRISC-V processor to riscv-formal #34

weedmank opened this issue Jan 2, 2020 · 4 comments

Comments

@weedmank
Copy link

weedmank commented Jan 2, 2020

On https://github.com/SymbioticEDA/riscv-formal there's a Table of Contents that gives good information, but I have a new RISC-V CPU I want to try to test and need to know the procedure to create a folder and whatever else to be able to test it. This would be a good webpage addition to have for those of us wanting to test new CPUs. I finally found some info on page 15 of http://www.clifford.at/papers/2017/riscv-formal/slides.pdf. It gives a little info and says "Write a genchecks.cfg config file for the new core–See cores/picorv32/ and cores/rocket/ for examples" Problem is, I can't find the genchecks.cfg file in either folder. More info on what should go in genchecks.cfg would be appreciated.

@towoe
Copy link

towoe commented Jan 9, 2020

Hi @weedmank, I do not have a description but I worked on integrating Ibex and in my fork there is a branch https://github.com/towoe/riscv-formal/tree/ibex with all the latest commits related to adding the core. Maybe this is helpful to you.
And I guess the genchecks.cfg is now checks.cfg.

@weedmank
Copy link
Author

weedmank commented Jan 9, 2020 via email

@weedmank
Copy link
Author

weedmank commented Jan 10, 2020 via email

@towoe
Copy link

towoe commented Jan 14, 2020

OK. I looked. In your wrapper.sv, what are you going to do with all the instr_xxxx and data_xxxx signals. I too have similar signals but they’re tailored to connect to L1 instruction and data caches I’ve created. Is memory supposed to be instantiated inside the wrapper for this setup??? Or is it ignored? If ignored, what to do with signal that go into the cpu core? This is where I’m stuck with this project as to what to do. Thanks Kirk

Those instr_* and data_* signals are connect in order to get data into the core. This is the same as in picorv32 where, with the define, the input signals are marked with rand.
As this riscv-formal is checking the core itself, the memory details can be omitted.
So: only instantiate your core and connect the input signals with signals created with rand in your wrapper.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants