Hi, "Resource stall" means that you are running out of something to perform the transition right now. Something can be: room in the TBE table, banks in a cache tag or data array, space in a message buffer, etc. All these things are grouped under the concept of resources.
Before a transition takes place, SLICC introduces checks for all resources consumed by the upcoming transition. Specifically, an enqueue block triggers a check on the available space in the enqueue buffer. check_allocate(SOMETHING) will test the return value of SOMETHING.areNSlotsAvailable(...). Finally, a "transition(...) {RESOURCE_TAG} {...}" (notice the extra braces with RESOURCE_TAG in), will test the return value of checkResourceAvailable(RESOURCE_TAG, address) that you implement yourself in your machine definition. The later typically is for more advanced protocols. If one of the required resources is lacking (the corresponding test fails), then the transition will not take place. It will still be logged in the protocol trace but with the Resource Stall flag at the end to indicate that the transition did not take place. The controller then schedules a wake up at the next cycle to retry the transition and then jump to the next in_port. In you case, the transition requires two resources to take place: a slot in the TBE table for the i_allocateTBE action and an entry in the requestNetwork buffer for the a_issueGETS action. You are likely running out of one of these two resources. Sadly, SLICC will not tell you witch one... Luckily, because this is perfectly normal, you probably don't need to know unless you are hacking the protocol and suspect this is a bug. If you scroll down (possibly a few hundred lines), you should see the transition being performed at some point (no resource stall at the end). I recommend grepping on the line address to remove some noise ;) Gabriel _______________________________________________ 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