When does the following error occurs? Is it that an object is being accessed while it is being created?

File "/afs/cs.wisc.edu/u/n/i/nilay/private/Architecture/GEM5/m5/src/python/m5/SimObject.py", line 834, in getCCObject
    raise RuntimeError, "%s: Cycle found in configuration hierarchy." \
RuntimeError: system.l1_cntrl0.L1DcacheMemory: Cycle found in configuration hierarchy.


--
Nilay

On Tue, 8 Mar 2011, Steve Reinhardt wrote:

Forgot to mention that this is how we handle registering all the thread
contexts within a system... you can look at that code (in the CPU models and
in System) for an example.

On Tue, Mar 8, 2011 at 7:16 AM, Steve Reinhardt <ste...@gmail.com> wrote:

Sorry I missed this thread... I just read Nilay's response about python
issues and he pointed me over here.

One thing we should think about is that we really only want the caches
within a single system to be flushed at once... I know that it's unlikely
that anyone will want to model two systems with detailed memory models at
once, and I vaguely recall there were other issues with Ruby not really
supporting multiple instances of itself, but I don't want to see us make
things less modular than they already are.

The m5 idiom for doing this is:
- add a parameter to each cache/controller/whatever we want to track like
this:
     system = Param.System(Parent.any, "system object")
- add a method to the System object like registerCache(Cache *c) that adds
c to the system object's list of caches
- Have each cache constructor call p->system->registerCache(this) to
register itself

Would something like this work for what you're trying to do?

Steve


On Tue, Mar 8, 2011 at 3:21 AM, Nilay Vaish <ni...@cs.wisc.edu> wrote:

It seems that this will work out. We can make AbstractController call a
static function of RubyPort class that will add the calling object to some
list which will be accessed while making functional accesses. As far as
pushing functional access support to Sequencer in to concerned, there was no
particular reason for that. Since Sequencer handles that timing acesses, I
thought that should be the file that would contain the code for functional
accesses. I am fine with functional access code going in to RubyPort.

--
Nilay



_______________________________________________
m5-dev mailing list
m5-dev@m5sim.org
http://m5sim.org/mailman/listinfo/m5-dev

Reply via email to