Hi,
I am trying to create two-core configuration on simics. For that, I used
serengeti-6800-system.include script and modified cpu_num variable to 2 and
boot up solaris 10 through it.
*A) *After boot, following is the output :
*bash-3.00# prtdiag *
*System Configuration: Sun Microsystems sun4u Sun Fire 6800*
*System clock frequency: 150 MHz*
*Memory size: 512 Megabytes*
*========================= CPUs
===============================================*
* CPU Run E$ CPU CPU *
*FRU Name ID MHz MB Impl. Mask*
*---------- ------- ---- ---- ------- ----*
*/N0/SB0/P0 0 75 8.0 US-III 3.5 *
*/N0/SB0/P1 1 75 8.0 US-III 3.5 *
*B) *When I create a checkpoint and run it through flexus, following assert
fails -
137 <SimicsTracer.cpp:1108> {0}- Connecting: cpu0
138 <SimicsTracer.cpp:1111> {0}- DecoupledFeeder connects Flexus cpu0 to
Simics object cpu0
139 <SimicsTracer.cpp:1108> {0}- Connecting: cpu1
140 <SimicsTracer.cpp:1111> {0}- DecoupledFeeder connects Flexus cpu1 to
Simics object cpu1
141 <SimicsTracer.cpp:310> {0}- <undefined> Assertion failed: ((!(false)))
: Two CPUs connected to the same memory timing_model: phys_mem
Abort (SIGABRT) in main thread
*C)* I went back and looked at the script that creates sample flexus app -
*@def fix_memory_spaces_for_Simics3():*
* version = SIM_version()*
* if version[7] == '3':*
* #Fix for memory spaces in Simics 3.0.X*
* cpulist = SIM_get_all_processors()*
* for cpu in cpulist:*
* cpu_name = SIM_get_attribute(cpu,"name")*
* memory_object = SIM_get_attribute(cpu,"physical_memory")*
* memory_name = SIM_get_attribute(memory_object,"name")*
* new_memory_object = pre_conf_object(cpu_name +
"_mem",'memory-space')*
* new_memory_object.map = [[0x0, memory_object, 0, 0,
0xffffffffffffffff]]*
* new_memory_object.default_target = [memory_object, 0, 0,
memory_object]*
* SIM_add_configuration([new_memory_object], None)*
* SIM_set_attribute(cpu,"physical_memory", new_memory_object)*
* io_object = SIM_get_attribute(cpu,"physical_io")*
* io_name = SIM_get_attribute(io_object,"name")*
* new_io_object = pre_conf_object(cpu_name + "_io",'memory-space')*
* new_io_object.map = [[0x0, io_object, 0, 0, 0xffffffffffffffff]]*
* new_io_object.default_target = [io_object, 0, 0, io_object]*
* SIM_add_configuration([new_io_object], None)*
* SIM_set_attribute(cpu,"physical_io", new_io_object)*
*D)* After doing the same in my scripts, it works but *I did not understand
why it is required ? Why do we need different physical memory for each CPU
core while all shares the same RAM in practice ? *or am I missing something
?
Best,
Priyank
The University of Edinburgh is a charitable body, registered in
Scotland, with registration number SC005336.