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); 
		} 
	 
}