Hi Leon, Scheduling arbitrary events is not allowed in SLICC. The SLICC language is meant only for defining state machines and their actions. Any scheduling, etc. should either be done within the restrictions of SLICC or outside of SLICC in some other way. For instance, you could add a new method to the CacheMemory object.
Another option if you need to trigger some other action from a SLICC action would be to use a "trigger queue". This is a special message buffer which you can enqueue your own messages and can trigger an event on an in_port in a subsequent cycle. You can even specify a latency for the trigger queue as well. Many SLICC protocols have examples of using a trigger queue. Cheers, Jason On Wed, Dec 9, 2020 at 2:40 AM Leon Zhao via gem5-users <[email protected]> wrote: > Hi all, > > I noticed that in 'src/mem/ruby/protocol/MOESI_CMP_directory-L1cache.sm', > in getAccessPermission() function, a line like 'TBE tbe := TBEs[addr];' > appeared, and I suppose it's the corresponding line of 'lookup()'. In my > research, I want this line to be scheduled by schedule() as in many C++ > files. > > I tried to modify the codes with, like, 'schedule(doThis, Cycles(1))' but > unfortunately, when I define doThis, a lambda expression is required with a > std::function<void(void)>, which would trigger a syntax error of not > recognizing lambda expression. > > Does anyone have idea of how to fix this problem? Much obliged! > > Leon > _______________________________________________ > gem5-users mailing list -- [email protected] > To unsubscribe send an email to [email protected] > %(web_page_url)slistinfo%(cgiext)s/%(_internal_name)s >
_______________________________________________ gem5-users mailing list -- [email protected] To unsubscribe send an email to [email protected] %(web_page_url)slistinfo%(cgiext)s/%(_internal_name)s
