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

Reply via email to