ЛР1. Обновление тб и порядка выполнения задания

This commit is contained in:
Andrei Solodovnikov
2024-02-11 11:22:01 +03:00
parent 129c62bb93
commit 0692ae3117
4 changed files with 120 additions and 3568 deletions

View File

@@ -1,6 +1,6 @@
//////////////////////////////////////////////////////////////////////////////////
// Company: MIET
// Engineer: Nikita Bulavin
// Engineer: Andrei Solodovnikov
// Module Name: tb_fulladder
// Project Name: RISCV_practicum
@@ -10,15 +10,12 @@
module tb_fulladder();
parameter TIME_OPERATION = 100;
parameter TEST_VALUES = 8;
wire tb_a_i;
wire tb_b_i;
wire tb_carry_i;
wire tb_carry_o;
wire tb_sum_o;
logic tb_a_i;
logic tb_b_i;
logic tb_carry_i;
logic tb_carry_o;
logic tb_sum_o;
logic [2:0] test_case;
fulladder DUT (
.a_i(tb_a_i),
@@ -28,51 +25,18 @@ parameter TEST_VALUES = 8;
.carry_o(tb_carry_o)
);
integer i, err_count = 0;
reg [4:0] running_line;
reg [5*8-1:0] line_dump;
wire sum_dump;
wire carry_o_dump;
assign tb_a_i = running_line[4];
assign tb_b_i = running_line[3];
assign tb_carry_i = running_line[2];
assign sum_dump = running_line[1];
assign carry_o_dump = running_line[0];
assign {tb_a_i, tb_b_i, tb_carry_i} = test_case;
initial begin
$display( "Start test: ");
`ifdef __debug__
for ( i = 0; i < TEST_VALUES; i = i + 1 )
begin
running_line = line_dump[i*5+:5];
#TIME_OPERATION;
if( (tb_carry_o !== carry_o_dump) || (tb_sum_o !== sum_dump) ) begin
$display("ERROR! carry_i = %b; (a)%b + (b)%b = ", tb_carry_i, tb_a_i, tb_b_i, "(carry_o)%b (sum_o)%b;", tb_carry_o, tb_sum_o, " carry_o_dump: %b, sum_dump: %b", carry_o_dump, sum_dump);
err_count = err_count + 1'b1;
end
end
$display("Number of errors: %d", err_count);
if( !err_count ) $display("\nfulladder SUCCESS!!!\n");
`else
for ( i = 0; i < TEST_VALUES; i = i + 1 )
begin
running_line = line_dump[i*5+:5];
#TIME_OPERATION;
end
$display("Test has been finished");
`endif
$finish();
$display("\nTest has been started\n");
#5ns;
test_case = 3'd0;
repeat(8) begin
#5ns;
test_case++;
end
$display("\nTest has been finished\n");
$finish();
end
initial line_dump = {
5'b00000,
5'b10010,
5'b01010,
5'b11001,
5'b00110,
5'b10101,
5'b01101,
5'b11111};
endmodule