It seems odd that it tries to create L1DcacheMemory right after it creates
system. Can you add print statements like in this patch and see what it
shows?
diff --git a/src/python/m5/SimObject.py b/src/python/m5/SimObject.py
--- a/src/python/m5/SimObject.py
+++ b/src/python/m5/SimObject.py
@@ -843,8 +843,11 @@
# Call C++ to create C++ object corresponding to this object
def createCCObject(self):
+ print "Creating", self, "params"
self.getCCParams()
+ print "Creating", self
self.getCCObject() # force creation
+ print "Done creating", self
def getValue(self):
return self.getCCObject()
On Wed, Mar 9, 2011 at 2:34 PM, Nilay Vaish <[email protected]> wrote:
> Creating root
> Creating system.physmem
> Creating system
> Creating system.l1_cntrl0.L1DcacheMemory
> Creating system.ruby
> Creating system.ruby.network
> Creating system.ruby.network.topology
> Creating system.ruby.network.topology.ext_links0
> Creating system.l1_cntrl0
> Creating system.l1_cntrl0.L1DcacheMemory
>
> This is the output I obtained from SimObject.py, clearly there is a cycle.
> Should not the cache controllers be part of ruby, instead of being part of
> system? Once they become part of ruby, it should be possible to traverse the
> controller array and figure out all the caches.
>
>
> Nilay
>
> On Wed, 9 Mar 2011, Steve Reinhardt wrote:
>
> I think you're looking in the wrong place... you want to look at
>> getCCObject() in src/python/m5/SimObject.py where the error message is
>> coming from, and see if you can add some print statements there.
>>
>> Steve
>>
>> On Wed, Mar 9, 2011 at 11:27 AM, Nilay Vaish <[email protected]> wrote:
>>
>> What exactly happens on the function call Param.RubySystem(Parent.any,
>>> "Ruby System") ?
>>>
>>> Nilay
>>>
>>>
>>> On Wed, 9 Mar 2011, Steve Reinhardt wrote:
>>>
>>> Does the RubySystem object have a pointer to a RubyCache object?
>>>
>>>>
>>>> You could also go into the python code and add some print statements to
>>>> get
>>>> a clue about where the cycle is occurring.
>>>>
>>>> Steve
>>>>
>>>> On Wed, Mar 9, 2011 at 4:51 AM, Nilay <[email protected]> wrote:
>>>>
>>>> Brad, given current versions of MESI_CMP_directory.py and Ruby.py, the
>>>>
>>>>> following change to the way cache memory is added to the system creates
>>>>> a
>>>>> loop. What am I missing here?
>>>>>
>>>>> class RubyAbstractMemory(SimObject):
>>>>> type = 'RubyAbstractMemory'
>>>>> cxx_class = 'AbstractMemory'
>>>>> system = Param.RubySystem(Parent.any,"Ruby System");
>>>>>
>>>>> class RubyCache(RubyAbstractMemory):
>>>>> type = 'RubyCache'
>>>>> cxx_class = 'CacheMemory'
>>>>> size = Param.MemorySize("capacity in bytes");
>>>>> latency = Param.Int("");
>>>>> assoc = Param.Int("");
>>>>> replacement_policy = Param.String("PSEUDO_LRU", "");
>>>>> start_index_bit = Param.Int(6, "index start, default 6 for 64-byte
>>>>> line");
>>>>>
>>>>> --
>>>>> Nilay
>>>>>
>>>>> _______________________________________________
>>>>>
>>>> _______________________________________________
> m5-dev mailing list
> [email protected]
> http://m5sim.org/mailman/listinfo/m5-dev
>
_______________________________________________
m5-dev mailing list
[email protected]
http://m5sim.org/mailman/listinfo/m5-dev