Sorry to bother you, I attend the IISWC tutorial, but I still have a few questions in mind,
1. About function simulation in spike:
a. building-spike: I saw in the script, we are using verilator to build the .h file and further build the spile, I wondered how this step works, and also what is usage of "software/gemmini-rocc-tests/include/gemmini_params.h" and "/software/gemmini-rocc-tests/include/gemmini.h" and all the other .h file in software/gemmini-rocc-tests/include purpose?
b. software test file: I guess that we should use gemmini_params.h to build spike simulator, I wondered that since the gemmini should work along the Rocket-chip, in that case, how can spike as an ISA simulator works in that scenario? (Sorry that I am still learning spike)
c. Using spike: I guess that using spike can be an easy way for me to work on ROCC design, I was wondering what should be the input to the spike simulator, is the ROCC ISA?
d. another simulator: I knew that spike is good for risc-v and ROCC testing, however, if I want to test multi-core or multi-accelerator performance, I heard that spike isn't friendly to cache coherency, I wondered is there any simulator that covers ROCC?
2. About training and inference Systolic array setting difference:
a. I saw that in snap-shot and build.sh file that training and inference are setting twice, I wondered is that because is there any special optimization in back-propagation part?
b. I remember that in the tutorial session, we talked about synchronization in Gemmini, I wondered that since Gemmini and Rocket-chip are both connected to L2 cache, how Gemmini and Rocket-chip achieve cache coherency?
3. About supporting DRAM simulator
a. I saw that in Midas we can simulate DDR3, I was wondering can we do simulation in DDR4/HBM in spike by connecting to DRAMsim2/Ramulator or we can print out the memory trace in spike?
Thanks for your patience
Best