I'm trying to send many memory requests with short time separation

The following error happened
"""""""""""""
gem5.debug: build/RISCV/mem/xbar.cc:199:
bool gem5::BaseXBar::Layer<gem5::ResponsePort,
gem5::RequestPort>::tryTiming(SrcType *)
[SrcType = gem5::ResponsePort, DstType = gem5::RequestPort]:
 Assertion `std::find(waitingForLayer.begin(), waitingForLayer.end(), src_port) == waitingForLayer.end()' failed.
"""""""""""""""""""""""""""""""""""


It happens inside the following function:
"""
template <typename SrcType, typename DstType>
bool
BaseXBar::Layer<SrcType, DstType>::tryTiming(SrcType* src_port)
{
    // if we are in the retry state, we will not see anything but the
    // retrying port (or in the case of the snoop ports the snoop
    // response port that mirrors the actual CPU-side port) as we leave
    // this state again in zero time if the peer does not immediately
    // call the layer when receiving the retry

    // first we see if the layer is busy, next we check if the
    // destination port is already engaged in a transaction waiting
    // for a retry from the peer
    if (state == BUSY || waitingForPeer != NULL) {
        // the port should not be waiting already
        //Abotaleb : @todo :: FInd why this assertion happens in case of fast inter-arrival between requests
 
        assert(std::find(waitingForLayer.begin(), waitingForLayer.end(),
                         src_port) == waitingForLayer.end());

        // put the port at the end of the retry list waiting for the
        // layer to be freed up (and in the case of a busy peer, for
        // that transaction to go through, and then the layer to free
        // up)
        waitingForLayer.push_back(src_port);
        return false;
    }

    state = BUSY;

    return true;
}
"""""



Is there any idea why such asserion happen and how to eliminate it ?
Thank you in advance.

_______________________________________________
gem5-users mailing list -- gem5-users@gem5.org
To unsubscribe send an email to gem5-users-le...@gem5.org

Reply via email to