Wishbone driver

Hi,

I am trying to write wishbome master driver code. Strobe signal and ack signal should be high and when ack goes low .
But in my case strobe signal is going low when ack is still high . please help me on this
Below is my code


task wb_driver::do_write(seq_item req);
    bit wb_ack_f = 0;	 
	if(vif.reset==0) begin 
		@(this.vif.master_cb); 
	 	vif.master_cb.wb_adr_o <= req.wb_adr_o;
	 	vif.master_cb.wb_we_o <= req.wb_we_o;
	 	vif.master_cb.wb_cyc_o <= 1;
	 	vif.master_cb.wb_stb_o <= 1;	 
	 	vif.master_cb.wb_sel_o <= 1;
	 	if(req.wb_we_o ==1) begin	
	   		vif.master_cb.wb_dat_o <= req.wb_dat_o;
	   		while(wb_ack_f==0) begin
	   	  		@(this.vif.wb_clk_i);
	   	  		if (this.vif.wb_ack_i == 1) begin
	   	  		wb_ack_f = 1;
	   	  		end
	   		end
	 	end	
		@(negedge this.vif.wb_clk_i); 
		this.vif.master_cb.wb_cyc_o <= 0;
		this.vif.master_cb.wb_stb_o <= 0;  
    end		
endtask