139c139,142
< // @todo: We need to pay for this and not just zero it out
---
> // technically the packet only reaches us after the header delay,
> // and typically we also need to deserialise any payload (unless
> // the two sides of the bridge are synchronous)
> Tick receive_delay = pkt->headerDelay + pkt->payloadDelay;
142c145,146
< slavePort.schedTimingResp(pkt, bridge.clockEdge(delay));
---
> slavePort.schedTimingResp(pkt, bridge.clockEdge(delay) +
> receive_delay);
194c198,202
< // @todo: We need to pay for this and not just zero it out
---
> // technically the packet only reaches us after the header
> // delay, and typically we also need to deserialise any
> // payload (unless the two sides of the bridge are
> // synchronous)
> Tick receive_delay = pkt->headerDelay + pkt->payloadDelay;
197c205,206
< masterPort.schedTimingReq(pkt, bridge.clockEdge(delay));
---
> masterPort.schedTimingReq(pkt, bridge.clockEdge(delay) +
> receive_delay);