module debounce_TB;
//Port modes
reg clock, reset, dataIn;
wire dataOut;
integer k;
//Instantiate DUT
debounce U1(
.clock(clock), .reset(reset), .dataIn(dataIn), 
.dataOut(dataOut)
);
//Create an input stimulus
initial 
begin
	$shm_open("debouncewaves.shm");
	$shm_probe("AC");
	//Initial values
	clock=0;
	reset=1;
	dataIn = 1;
	//outputs should be undefined
	#2
	//reset the machine
	reset=0;
	#1
	//make the switch bounce a few times and settle at 1
	dataIn=0;
	#2
	dataIn=1;
	#4
	dataIn=0;
	#6
	dataIn=1;
	#8
	dataIn=0;
	#12
	dataIn=1;	
	#400
	//move the switch to a zero, make it bounce, and then settle at zero
	dataIn=0;
	#2
	dataIn=1;
	#4
	dataIn=0;
	#6
	dataIn=1;
	#8
	dataIn=0;
	#12
	dataIn=1;
	#15
	dataIn=0;	
	#400
	$finish;
end
always #5 clock = ~clock;
	
endmodule