This patch fixes a problem where in Garnet, the enqueue time in the
VCallocator and the SWallocator which is of type Cycles was being stored
inside a variable with int type.
This lead to a known problem restoring checkpoints with garnet & the fixed
pipeline enabled. That value was really big and didn't fit in the variable
overflowing it, therefore some conditions on the VC allocation stage & the
SW allocation stage were not met and the packets didn't advance through the
network, leading to a deadlock panic right after the checkpoint was restored.
Committed by: Nilay Vaish <nilay@cs.wisc.edu>
SWallocator_d::is_candidate_inport(int inport, int invc)
{
int outport = m_input_unit[inport]->get_route(invc);
- int t_enqueue_time = m_input_unit[inport]->get_enqueue_time(invc);
+ Cycles t_enqueue_time = m_input_unit[inport]->get_enqueue_time(invc);
int t_vnet = get_vnet(invc);
int vc_base = t_vnet*m_vc_per_vnet;
if ((m_router->get_net_ptr())->isVNetOrdered(t_vnet)) {
{
int outport = m_input_unit[inport_iter]->get_route(invc_iter);
int vnet = get_vnet(invc_iter);
- int t_enqueue_time =
+ Cycles t_enqueue_time =
m_input_unit[inport_iter]->get_enqueue_time(invc_iter);
int invc_base = vnet*m_vc_per_vnet;