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.

Reply via email to