96a97
>
97a99
> Tick current_time = m_switch->clockEdge();
99,101c101,103
< while (bw_remaining > 0 && (in->isReady() || m_units_remaining[vnet] > 0) &&
< out->areNSlotsAvailable(1)) {
<
---
> while (bw_remaining > 0 && (in->isReady(current_time) ||
> m_units_remaining[vnet] > 0) &&
> out->areNSlotsAvailable(1, current_time)) {
104c106
< if (m_units_remaining[vnet] == 0 && in->isReady()) {
---
> if (m_units_remaining[vnet] == 0 && in->isReady(current_time)) {
117,118c119,121
< in->dequeue();
< out->enqueue(msg_ptr, m_link_latency);
---
> in->dequeue(current_time);
> out->enqueue(msg_ptr, current_time,
> m_switch->cyclesToTicks(m_link_latency));
131,132c134,136
< if (bw_remaining > 0 && (in->isReady() || m_units_remaining[vnet] > 0) &&
< !out->areNSlotsAvailable(1)) {
---
> if (bw_remaining > 0 && (in->isReady(current_time) ||
> m_units_remaining[vnet] > 0) &&
> !out->areNSlotsAvailable(1, current_time)) {