Hi,
I am new to UVM.
Can anyone help me in making sequence from this task which was in interface of my sv code.
task automatic reg_read_lane (input [`NB_LANES-1:0] lane, input [ADDR_WIDTH -1:0] addr, output [DATA_WIDTH -1:0] data);
begin
wait(busy_flag == 1'b0);
busy_flag = 1'b1 ;
wait(psel[lane]==1'b0);
@(negedge pclk[lane]);
psel [lane] = 1'b1;
penable[lane] = 1'b1;
paddr [ADDR_WIDTH_EXT * lane + (ADDR_WIDTH_EXT -1) -:ADDR_WIDTH_EXT] = {32'h0,addr};
pwdata [DATA_WIDTH_EXT * lane + (DATA_WIDTH_EXT -1) -:DATA_WIDTH_EXT] = {32'h0};
pwrite [lane] = 1'b0;
wait(pready[lane]);
@(posedge pclk[lane]);
data_int = prdata[DATA_WIDTH_EXT * lane + (DATA_WIDTH_EXT -1) -: DATA_WIDTH_EXT];
data = data_int [15:0];
if(pslverr[lane]) begin
`uvm_info(pcs_interface,$psprintf("@%0h ERROR : Error resp received from apb slave ",addr),UVM_DEBUG)
->error_rsp_rcvd;
end
if($isunknown(data)) begin
->error_rsp_rcvd;
`uvm_info(pcs_interface,$psprintf("@%0h ERROR : Unknown value detected for prdata",addr),UVM_DEBUG)
end
@(negedge pclk[lane]);
psel [lane] = 1'b0;
penable[lane] = 1'b0;
paddr [lane] = 10'h00;
pwdata [lane] = 8'h00;
pwrite [lane] = 1'b0;
busy_flag = 1'b0;
end
endtask : reg_read_lane
I am having confusion that can I put wait statement in sequence class or how to implement a sequence class like above.
Thank You in Advance