Added test for checking errors.

This commit is contained in:
bsdevlin 2019-02-26 17:35:47 -05:00
parent a10bb8df71
commit e94df14cda
3 changed files with 47 additions and 3 deletions

Binary file not shown.

View File

@ -136,7 +136,6 @@ always_ff @ (posedge i_clk) begin
equihash_sol_bram_if_a.a <= equihash_sol_bram_if_a.a;
if (chk_state == STATE_CHK_DONE) begin
ram_wr_state <= STATE_WR_IDLE;
i_axi.rdy <= 1;
cblockheader_val <= 0;
equihash_sol_bram_if_a.a <= 0;
end

View File

@ -27,15 +27,21 @@ equihash_bm_t mask;
logic mask_val;
logic start_241 = 0;
logic done_241;
logic start_241_error = 0;
logic done_241_error;
parameter DAT_BYTS = 8;
string my_file_path_s = get_file_dir(`__FILE__);
if_axi_stream #(.DAT_BYTS(DAT_BYTS)) header(clk);
if_axi_stream #(.DAT_BYTS(DAT_BYTS)) header_241(clk);
if_axi_stream #(.DAT_BYTS(DAT_BYTS)) header_241_error(clk);
// Need one for each test so we can multiplex the input
always_comb begin
header_241.rdy = 0;
header_241_error.rdy = 0;
if (start_241) begin
header_241.rdy = header.rdy;
header.val = header_241.val;
@ -46,6 +52,17 @@ always_comb begin
header.err = header_241.err;
header.dat = header_241.dat;
end
if (start_241_error) begin
header_241_error.rdy = header.rdy;
header.val = header_241_error.val;
header.sop = header_241_error.sop;
header.eop = header_241_error.eop;
header.ctl = header_241_error.ctl;
header.mod = header_241_error.mod;
header.err = header_241_error.err;
header.dat = header_241_error.dat;
end
end
initial begin
@ -73,6 +90,20 @@ file_to_axi_block241 (
.o_axi ( header_241 )
);
file_to_axi #(
.BINARY ( 1 ),
.DAT_BYTS ( DAT_BYTS ),
.FP ( 0 )
)
file_to_axi_block241_error (
.i_file ({my_file_path_s, "/../data/block_346_errors.bin"}),
.i_clk ( clk ),
.i_rst ( rst ),
.i_start ( start_241_error ),
.o_done ( done_241_error ),
.o_axi ( header_241_error )
);
zcash_verif_equihash
DUT (
.i_clk ( clk ),
@ -88,20 +119,34 @@ begin
$display("Running test_block_346...");
start_241 = 1;
while(!done_241 || !mask_val) @(posedge clk);
assert (~(|mask)) else $fatal(1, "%m %t ERROR: test_block_346 mask was non-zero", $time);
assert (~(|mask)) else $fatal(1, "%m %t ERROR: test_block_346 mask was non-zero:\n%p", $time, mask);
$display("test_block_346 PASSED");
end
endtask
// This is a tests the sample block 346 in the block chain but with deliberate errors
task test_block_346_error();
begin
$display("Running test_block_346_error...");
start_241_error = 1;
while(!done_241_error || !mask_val) @(posedge clk);
assert (&mask) else $fatal(1, "%m %t ERROR: test_block_346_error mask was zero but should of failed:\n%p", $time, mask);
$display("test_block_346_error PASSED");
end
endtask
// Main testbench calls
initial begin
#20us; // Let internal memories reset
test_block_346();
test_block_346_error();
#10us $finish();