He escrito testbench en verilog. Todos los casos de prueba definidos en la tarea funcionan bien independientemente, pero cuando intento ejecutar ambas tareas, se obtiene el resultado adecuado para la primera tarea en la tarea tarea pero no para otra tarea. El estímulo permanece allí para otra tarea también. Quiero usar la entrada en la tarea como localmente en lugar de definir globalmente. ¿Cómo debo definir la entrada en el argumento en la tarea para que la entrada se dé de forma independiente?
module tb();
reg data_i_t;
reg dcsel_t;
reg clk ;
reg reset_t;
reg reset;
reg read_t;
reg xlat_t;
initial begin
#2 reset =0;
task_operation();
#100000 $finish;
end
task task_operation();
begin
exp_case_2a(data_i_t,reset_t,read_t,dcsel_t,xlat_t,data_out_1);
exp_case_2b(data_i_t,reset_t,read_t,dcsel_t,xlat_t,data_out_1);
end
endtask
task exp_case_2a;
input data_i;
input reset;
input read;
input dcsel;
input xlat;
output reg [47:0] data_o;
begin
repeat(47) begin @(posedge clk)
data_i = 1;
reset = 0;
read = 1;
dcsel = 0;
xlat = 1;
data_o = Data_out;
end
#5250 compare_data_2(data_out_tb);
end
endtask
task exp_case_2b
input data_i;
input reset;
input read;
input dcsel;
input xlat;
output reg [47:0] data_o;
begin
repeat(47)begin @(posedge clk)
data_i = 1;
reset = 0;
read = 0;
dcsel = 0;
xlat = 1;
data_o = Data_out;
end
#5250 compare_data_2(data_out_tb);
end
endtask
/ * ........... SCORE-BOARD ..............
tarea compare_data_2;
entrada [47: 0] exp_data;
begin
if(exp_data == 'comp_data_1 )
begin
'INFO("TEST PASSSED",$time);
$display(" exp_data : %h ",exp_data);
end
else
begin
'ERROR("TEST FAILED",$time);
$display(" exp_data : %h ",exp_data);
end
end
endtask