static int receive_rx_spw_calltf(char*user_data)
|
static int receive_rx_spw_calltf(char*user_data)
|
{
|
{
|
vpiHandle DATA_O = vpi_handle_by_name("module_tb.DATA_O",NULL);
|
vpiHandle DATA_O = vpi_handle_by_name("module_tb.DATA_O",NULL);
|
vpiHandle RD_DATA = vpi_handle_by_name("module_tb.RD_DATA",NULL);
|
vpiHandle RD_DATA = vpi_handle_by_name("module_tb.RD_DATA",NULL);
|
vpiHandle RX_EMPTY = vpi_handle_by_name("module_tb.RX_EMPTY",NULL);
|
vpiHandle RX_EMPTY = vpi_handle_by_name("module_tb.RX_EMPTY",NULL);
|
|
|
value_to_rx.format = vpiIntVal;
|
value_to_rx.format = vpiIntVal;
|
|
|
if(SC_TOP->reset_set())
|
if(SC_TOP->reset_set())
|
{
|
{
|
switch(state_test_rx)
|
switch(state_test_rx)
|
{
|
{
|
case WAIT_DATA:
|
case WAIT_DATA:
|
vpi_get_value(RX_EMPTY, &value_to_rx);
|
vpi_get_value(RX_EMPTY, &value_to_rx);
|
if(value_to_rx.value.integer == 1)
|
if(value_to_rx.value.integer == 1)
|
{
|
{
|
value_to_rx.value.integer = 0;
|
value_to_rx.value.integer = 0;
|
vpi_put_value(RD_DATA, &value_to_rx, NULL, vpiNoDelay);
|
vpi_put_value(RD_DATA, &value_to_rx, NULL, vpiNoDelay);
|
}else
|
}else
|
{
|
{
|
value_to_rx.value.integer = 1;
|
value_to_rx.value.integer = 1;
|
vpi_put_value(RD_DATA, &value_to_rx, NULL, vpiNoDelay);
|
vpi_put_value(RD_DATA, &value_to_rx, NULL, vpiNoDelay);
|
state_test_rx =59;
|
state_test_rx =59;
|
}
|
}
|
break;
|
break;
|
case 59:
|
case 59:
|
state_test_rx =70;
|
state_test_rx =70;
|
break;
|
break;
|
case 70:
|
case 70:
|
state_test_rx =71;
|
state_test_rx =71;
|
break;
|
break;
|
case 71:
|
case 71:
|
state_test_rx =72;
|
state_test_rx =72;
|
break;
|
break;
|
case 72:
|
case 72:
|
state_test_rx =73;
|
state_test_rx =73;
|
break;
|
break;
|
case 73:
|
case 73:
|
state_test_rx =74;
|
state_test_rx =74;
|
break;
|
break;
|
case 74:
|
case 74:
|
state_test_rx =60;
|
state_test_rx =60;
|
break;
|
break;
|
case 60:
|
case 60:
|
vpi_get_value(DATA_O, &value_to_rx);
|
vpi_get_value(DATA_O, &value_to_rx);
|
SC_TOP->data_o(value_to_rx.value.integer,data_iteration_vlog);
|
SC_TOP->data_o(value_to_rx.value.integer,data_iteration_vlog);
|
data_iteration_vlog++;
|
data_iteration_vlog++;
|
state_test_rx =61;
|
state_test_rx =61;
|
break;
|
break;
|
case 61:
|
case 61:
|
state_test_rx =WAIT_DATA;
|
state_test_rx =WAIT_DATA;
|
value_to_rx.value.integer = 0;
|
value_to_rx.value.integer = 0;
|
vpi_put_value(RD_DATA, &value_to_rx, NULL, vpiNoDelay);
|
vpi_put_value(RD_DATA, &value_to_rx, NULL, vpiNoDelay);
|
|
|
if(data_iteration_vlog > SC_TOP->size_data_test())
|
if(data_iteration_vlog > SC_TOP->size_data_test_sc())
|
data_iteration_vlog = 0;
|
data_iteration_vlog = 0;
|
break;
|
break;
|
}
|
}
|
}
|
}
|
|
|
return 0;
|
return 0;
|
}
|
}
|
|
|