Cheshire with two cores
#1
Hi all,

I'm trying to generate a bit file for Cheshire v0.1.0 with two cores for the Genesys2 board using Vivado 2023.2, but get an error stating that timing constraints are not met.
I can generate the bit file from an earlier commit, f316617, of the Cheshire repo. I did remove the USB support as it would not fit on the FPGA of Genesys2.

I'm quite new to this and would appreciate any help. I'm not sure where to start looking.

Regards,
/Andreas
Reply
#2
I am guessing that some of the additions proved a bit too much for the timing constraints. You could (in most cases) relax the constraints to get through it. Note that for most PULP IP, the code is not FPGA optimized, we use FPGAs for emulation and not as the primary target. That is why, the speed at which it works is not much of an issue. Our usual targets are ASIC designs where the optimizations may differ quite a bit from FPGAs (due to internal resources like BRAMs, DSPs etc).

Of course it is not like the timing contraints should go from 50ns to 5000ns.. that could point out to an issue somewhere
Visit pulp-platform.org and follow us on twitter @pulp_platform
Reply
#3
Hi, Were you able to boot linux on Cheshire dual core?
I've been trying but without success.
I made the changes mentioned in this issue.
https://github.com/pulp-platform/cheshire/issues/175

Any helps, references, pointers would be extremely appreciated.
Thanks
Reply
#4
Can you let us know where you are stuck, the original question had issues during synthesis. Is this the case for you as well. At what stage are you stuck, which branch are you using, which FPGA you are using?

AFAIK this is something that is working in our environment and is in active use.
Visit pulp-platform.org and follow us on twitter @pulp_platform
Reply
#5
Hello, Thank you so much for stepping in. I am using the main branch of cheshire. Cloned and built using the process provided here.
https://pulp-platform.github.io/cheshire/tg/xilinx

I have a VCU118 board instead of VCU128 so I used the changes mentioned in this repo https://github.com/mrbilandi/cheshire/tree/VCU118 (which I believe has pull request into main branch of cheshire). I am using STARTUPE3 and Xilinx QSPI IP to boot linux from FPGA flash (since vcu118 has no SD card support and PMOD has signal integrity issues).

My single core version works perfect and linux boots successfully but when I changed NumCores to 2 and built, (linux image remained the same), I see no output on UART terminal. Not even the ZSL loads that prints cat logo and some system information. I used OpenOCD to debug and was able to run baremetal helloworld.spm.elf on each core individually (by changing util/openocd.common.tcl `coreid` parameter to 0 and 1 respectively for each core.

I am not sure if I need to change any other parameters aside from NumCores to be able to run linux on dual core system.
The issue: https://github.com/pulp-platform/cheshire/issues/175 describes my situation best.
Any guidance is extremely appreciated. Thanks in advance
Reply
#6
(10-30-2024, 06:26 AM)andlo47 Wrote: Hi all, Speed Stars Online
I'm trying to generate a bit file for Cheshire v0.1.0 with two cores for the Genesys2 board using Vivado 2023.2, but get an error stating that timing constraints are not met.
I can generate the bit file from an earlier commit, f316617, of the Cheshire repo. I did remove the USB support as it would not fit on the FPGA of Genesys2.
I'm quite new to this and would appreciate any help. I'm not sure where to start looking.
Regards,
/Andreas

Does Cheshire v0.1.0 officially support dual-core configurations on the Genesys2, or are you modifying it manually?
Reply
#7
(04-07-2025, 10:35 AM)antp Wrote: Hello, Thank you so much for stepping in. I am using the main branch of cheshire. Cloned and built using the process provided here.
https://pulp-platform.github.io/cheshire/tg/xilinx

I have a VCU118 board instead of VCU128 so I used the changes mentioned in this repo  https://github.com/mrbilandi/cheshire/tree/VCU118 (which I believe has pull request into main branch of cheshire). I am using STARTUPE3 and Xilinx QSPI IP to boot linux from FPGA flash (since vcu118 has no SD card support and PMOD has signal integrity issues).

My single core version works perfect and linux boots successfully but when I changed NumCores to 2 and built, (linux image remained the same), I see no output on UART terminal. Not even the ZSL loads that prints cat logo and some system information. I used OpenOCD to debug and was able to run baremetal helloworld.spm.elf on each core individually (by changing util/openocd.common.tcl `coreid` parameter to 0 and 1 respectively for each core.

I am not sure if I need to change any other parameters aside from NumCores to be able to run linux on dual core system.
The issue: https://github.com/pulp-platform/cheshire/issues/175 describes my situation best.
Any guidance is extremely appreciated. Thanks in advance

Thank you  Heart
Reply
#8
Hi all,
I can jump in to answer your questions since I am one of the developers of the multi-core Cheshire version. The main branch of Cheshire does support multiple cores, however it is lacking hardware coherence. Thus, they can be used in bare metal workloads but booting Linux with the provided CVA6-SDK as-is is not possible (see the response from the mantainer of Cheshire here: https://github.com/pulp-platform/cheshire/issues/212).

The different branches people tried out in the GitHub issues you highlighted are still experimental and unstable, as we are still working to provide a multi-core cache coherent version of Cheshire which supports multi-core Linux execution out of the box. Unfortunately, at the moment there is no official support for the configuration you are looking for. I suggest to stay tuned on our channels since we will eventually have this update for Cheshire.

Hope this clarifies the situation!
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)