Gem5-Users,

Apologies if this is a silly question or one that has been asked many times 
before. I've done some quick google searches and haven't found anything yet.

I'm a new user to Gem5, and I have gone through a good portion of the tutorial 
to where I can create various caches with various configurations, memory 
systems, etc., and connect them all together. So, it seems like, from creating 
a Python configuration file alone, I would be able to string together something 
reasonable for describing different RISCV system architectures. This is all 
good.

Perhaps I am naïve, but it seems like the only important thing I'm missing from 
the base package and what I've learned from the tutorial is where to get 
specific CPU core implementations / models. For example, when I look at a list 
from the built-in "se.py" script, there are only a few specific CPU models 
provided by Gem5:

prompt> riscv-gem5 ./configs/example/se.py --list-cpu-types
gem5 Simulator System.  https://www.gem5.org
gem5 is copyrighted software; use the --copyright option for details.
gem5 version 22.1.0.0
gem5 compiled Jun 24 2023 11:18:42
gem5 started Jun 25 2023 08:54:33
gem5 executing on lvablnode16, pid 96252
command line: riscv-gem5 
/dept/Boston/avose/riscv/tools/source/gem5/configs/example/se.py 
--list-cpu-types
Available BaseCPU classes:
               AtomicSimpleCPU
                              Simple CPU model executing a configurable number 
of instructions per
                              cycle. This model uses the simplified 'atomic' 
memory mode.
               BaseAtomicSimpleCPU
                              Simple CPU model executing a configurable number 
of instructions per
                              cycle. This model uses the simplified 'atomic' 
memory mode.
               BaseMinorCPU
               BaseNonCachingSimpleCPU
                              Simple CPU model based on the atomic CPU. Unlike 
the atomic CPU,
                              this model causes the memory system to bypass 
caches and is
                              therefore slightly faster in some cases. However, 
its main purpose
                              is as a substitute for hardware virtualized CPUs 
when stress-testing
                              the memory system.
               BaseO3CPU
               BaseTimingSimpleCPU
               DerivO3CPU
               MinorCPU
               NonCachingSimpleCPU
                              Simple CPU model based on the atomic CPU. Unlike 
the atomic CPU,
                              this model causes the memory system to bypass 
caches and is
                              therefore slightly faster in some cases. However, 
its main purpose
                              is as a substitute for hardware virtualized CPUs 
when stress-testing
                              the memory system.
               O3CPU
               RiscvAtomicSimpleCPU
                              Simple CPU model executing a configurable number 
of instructions per
                              cycle. This model uses the simplified 'atomic' 
memory mode.
               RiscvMinorCPU
               RiscvNonCachingSimpleCPU
                              Simple CPU model based on the atomic CPU. Unlike 
the atomic CPU,
                              this model causes the memory system to bypass 
caches and is
                              therefore slightly faster in some cases. However, 
its main purpose
                              is as a substitute for hardware virtualized CPUs 
when stress-testing
                              the memory system.
               RiscvO3CPU
               RiscvTimingSimpleCPU
               TimingSimpleCPU

I guess I'm wondering how people manage to get a RISC-V "Rocket" or a "Boom" 
core to be used in place of these available built-in CPU types. Is the idea 
that one would write the models for the different RISC-V CPUs themselves using 
the Python / C++ interface, or are there existing core models made available 
somewhere that people like me could directly use instead? Or, perhaps, are the 
above CPU core models parameterized sufficiently that they can be made to look 
something like a "Rocket" or a "Boom v3" core? I will continue to read through 
the documentation and tutorials. I was just hoping someone might be able to 
point me in the right direction.

Thanks much,
~Aaron Vose
_______________________________________________
gem5-users mailing list -- gem5-users@gem5.org
To unsubscribe send an email to gem5-users-le...@gem5.org

Reply via email to