He escrito tb en verilog. Mis entradas de banco de pruebas van a una alta impedancia, es decir, zz. Mi ho no puede forzar el estímulo. Por favor, ayúdeme, ya que no puedo detectar el problema en mi banco de pruebas.
module_tb()
reg [47:0] data_out_1;
top_design uut1(
//inputs
.clock(clk),
.reset(rst),
.data_in(data_i),
.dcsel(dcsel),
.xlat(xlat),
.blank(),
.RD(read),
///OUTPUTS
.Data_out(data_out_tb));
initial
begin
//inialize
inputs
#1 rst=0
exp_case_2a(data_out_1);
exp_case_2b(data_out_1);
#100000 $finish;
end
task operation_1;
reg [47:0] data_out_1;
begin
exp_case_2a(data_out_1);
end
endtask
task operation_2;
reg [47:0] data_out_1;
begin
exp_case_2b(data_out_1);
end
endtask
task exp_case_2a;
reg data_i;
reg reset;
reg read;
reg dcsel;
reg xlat;
output [47:0] data_o;
begin
repeat(47)begin@(posedge clk)
data_i = 1;
reset = 0;
read = 0;
dcsel = 0;
xlat = 0;
data_o = Data_out;
end
@(posedge clk)
begin
data_i = 0;
reset = 0;
dcsel = 0;
xlat = 1;
read = 1;
data_o = Data_out;
end
#5250 compare_data_2(data_out_tb);
end
endtask // exp_case_2a
task exp_case_2b;
reg data_i;
reg reset;
reg read;
reg dcsel;
reg xlat;
output [47:0] data_o;
begin
repeat(47)begin @(posedge clk)
data_i = 1;
reset = 0;
read = 0;
dcsel = 0;
xlat = 0;
data_o = Data_out;
end
@(posedge clk)
begin
data_i = 0;
reset = 0;
read = 0;
dcsel = 0;
xlat = 1;
data_o = Data_out;
end
#5250 compare_data_2(data_out_tb);
end
endtask
/* ........... SCORE-BOARD..............
task compare_data_1;
input [47:0] exp_data;
begin
if(exp_data == 'comp_data_1 )
begin
$display("test passed 0");
-> error;
end
else
begin
$display("test failed 0");
-> error;
err_cnt_1 = err_cnt_1 + 1;
end // else:
end
endtask