I think there is a very minor typo in the documentation on the following page:
"https://www.gem5.org/documentation/gem5-stdlib/develop-stdlib-board";
"from .unqiue_board import UniqueBoard"
Should instead be:
"from .unique_board import UniqueBoard"
However, I ended up dropping the "." and using the following:
"from unique_board import UniqueBoard"

So good so far. I also followed the wonderful documentation at the following 
page to get the needed "UniqueCacheHierarchy":
"https://www.gem5.org/documentation/gem5-stdlib/develop-own-components-tutorial";

However, when I try to run things, I get the following error:
prompt> riscv-gem5 configs/uniqueboard/config.py
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 25 2023 08:56:48
gem5 started Jun 25 2023 14:18:54
gem5 executing on lvablnode14, pid 234413
command line: riscv-gem5 configs/uniqueboard/config.py

AttributeError: Class UniqueCPU has no parameter core_id

At:
  build/RISCV/python/m5/SimObject.py(913): __setattr__
  build/RISCV/python/m5/SimObject.py(768): __init__
  build/RISCV/cpu/BaseCPU.py(297): __init__
  configs/uniqueboard/uniqueboard.py(19): <module>
  <frozen importlib._bootstrap>(219): _call_with_frames_removed
  <frozen importlib._bootstrap_external>(678): exec_module
  <frozen importlib._bootstrap>(665): _load_unlocked
  <frozen importlib._bootstrap>(955): _find_and_load_unlocked
  <frozen importlib._bootstrap>(971): _find_and_load
  configs/uniqueboard/config.py(1): <module>
  build/RISCV/python/m5/main.py(597): main

The original page 
("https://www.gem5.org/documentation/gem5-stdlib/develop-stdlib-board";) 
mentions that:
"BaseCPU objects require a unique core_id to be specified upon construction."

However, when I look into the Python source code in 
"build/RISCV/cpu/BaseCPU.py" I don't see the "core_id" flag being used. This 
could be passed to the parent class, but that's a "ClockedObject" which 
probably doesn't care about a "core_id". When I remove the "core_id=0" from the 
example on the page so the line instead looks like "BaseCPUCore(core = 
UniqueCPU())", things will work, and I get my "Hello World" output.

Thanks again for the wonderful documentation, I think there's just a couple of 
minor issues in there. Although, I suppose that turned out to help me learn 
more as I tracked down what the problems were instead of just blindly running 
already perfect examples.

Also, as to my previous questions about getting specific RISC-V core models to 
test with, it does look like the included CPU models have lots of parameters, 
so it would likely be possible to just set the right parameters to get the 
existing models to act like specific CPU cores like "Rocket" or "Boom" cores. 
There's a lot of fun options to play with, some below from the "config.ini" 
file which is super helpful. This is just for the minor core; so many options 
to play with with the out-of-order core model are available. -- I might again 
ask if there is any preferred way to model cores like "Rocket" or "Boomv3", 
etc. It seems like someone, somewhere probably has one of the base models 
configured to look like these real-world examples. I wonder where one might 
find some of these settings preconfigured.

[board.processor.cores.core]
type=BaseMinorCPU
children=branchPred decoder executeFuncUnits interrupts isa mmu power_state 
tracer workload
branchPred=board.processor.cores.core.branchPred
checker=Null
clk_domain=board.clk_domain
cpu_id=-1
decodeCycleInput=true
decodeInputBufferSize=3
decodeInputWidth=2
decodeToExecuteForwardDelay=2
decoder=board.processor.cores.core.decoder
do_checkpoint_insts=true
do_statistics_insts=true
enableIdling=true
eventq_index=0
executeAllowEarlyMemoryIssue=true
executeBranchDelay=1
executeCommitLimit=2
executeCycleInput=true
executeFuncUnits=board.processor.cores.core.executeFuncUnits
executeInputBufferSize=7
executeInputWidth=2
executeIssueLimit=2
executeLSQMaxStoreBufferStoresPerCycle=2
executeLSQRequestsQueueSize=1
executeLSQStoreBufferSize=5
executeLSQTransfersQueueSize=2
executeMaxAccessesInMemory=2
[...]

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