Hi Shaikhul,

"trigger" isn't really a function. It's a language statement (like, `if` in
C/C++).

SLICC doesn't always give the most helpful errors. However, I notice that
the eros is actually showing line 124, not line 219. That seems suspicious
to me, and I'd look more into that.

Also, you can find a working and tested version of the MSI protocol in
src/learning_gem5/part3/. You can check yours against that to see if there
are any changes. It's possible that some things in gem5 have changed since
the tutorial was last updated.

Cheers,
Jason

On Sat, Sep 19, 2020 at 11:45 AM Shaikhul Hadi via gem5-users <
gem5-users@gem5.org> wrote:

> I'm trying to implement MSI protocol in gem5 using Ruby SLICC [version
> SHA: 8e9b03b640e1c2074896d1123fd55fd336c37d6c] following this
> <http://learning.gem5.org/book/part3/MSI/cache-intro.html> source. When I
> run build, it raises exception and terminates operation.
>
> Exception: MSI-dir.sm:124: Error: Unrecognized function name:
>> 'trigger_Event_Addr'
>>
>
> Exception occurs at line 219 of MSI-dir.sm
> <http://learning.gem5.org/book/_downloads/MSI-dir.sm> file.
>
> in_port(memQueue_in, MemoryMsg, responseFromMemory) {
>>         if (memQueue_in.isReady(clockEdge())) {
>>             peek(memQueue_in, MemoryMsg) {
>>                 if (in_msg.Type == MemoryRequestType:MEMORY_READ) {
>>                     trigger(Event:MemData, in_msg.addr); //exception
>> raised here
>>                 } else if (in_msg.Type == MemoryRequestType:MEMORY_WB) {
>>                     trigger(Event:MemAck, in_msg.addr);
>>                 } else {
>>                     error("Invalid message");
>>                 }
>>             }
>>         }
>>     }
>>
>
>  I cloud not find any detail documentation of trigger function. According
> to gem5 documatation
> <http://www.gem5.org/documentation/general_docs/ruby/slicc/> the number
> of arguments to trigger depend on the machine itself which I presume means
> variable arguments.Also my implementation of trigger is valid(I assume) as
> in ./src/mem/ruby/protocol  also provides sample protocol file
> (Garnet_standalone-dir.sm) that has trigger implementation with two
> argument (trigger(Event:MemData, in_msg.addr);) just like mine. My system
> do not have dma controller.
>
> Why this exception is being raised ? How cloud I solve this issue?
>
> Note: I have also asked this question in stack overflow
> <https://stackoverflow.com/questions/63969494/trigger-is-not-recongnized-for-msi-protocol-withruby-in-gem5?noredirect=1#comment113119805_63969494>
>
> _______________________________________________
> gem5-users mailing list -- gem5-users@gem5.org
> To unsubscribe send an email to gem5-users-le...@gem5.org
> %(web_page_url)slistinfo%(cgiext)s/%(_internal_name)s
_______________________________________________
gem5-users mailing list -- gem5-users@gem5.org
To unsubscribe send an email to gem5-users-le...@gem5.org
%(web_page_url)slistinfo%(cgiext)s/%(_internal_name)s

Reply via email to