www.pudn.com > noc.rar > ATE.cpp
#include "ATE.h"
void ATE::rst_state()
{
state = FIRST_SLICE;
r_en = 0;
en = 1;
valid.write(1);
}
//just send several test data as example
void ATE::send_data()
{
if(en){
switch(state)
{
case FIRST_SLICE:
state = SECOND_SLICE;
test_stimuli.write(8);//the value is determined by atpg
break;
case SECOND_SLICE:
state = THIRD_SLICE;
test_stimuli.write(8);
break;
case THIRD_SLICE:
state = CAPTURE;
test_stimuli.write(8);
break;
case CAPTURE:
state = FIRST_RESPONSE;
r_en = 1;
en = 0;
break;
case default:
break;
}
}
}
void ATE::receive_data()
{
sc_uint response, golden_res;
response = test_response.read();
if(r_en)
{
switch(state)
{
case FIRST_RESPONSE:
golden_res = 8;
break;
case SCOND_RESPONSE:
golden_res = 8;
r_en = 0;
en = 1;
break;
default:
break;
}
if(response == golden_res) valid.write(1);
else valid.write(0);
}
}