From e94df14cda572d43e67af62427b72efcd545f2aa Mon Sep 17 00:00:00 2001 From: bsdevlin Date: Tue, 26 Feb 2019 17:35:47 -0500 Subject: [PATCH] Added test for checking errors. --- zcash_verif/src/data/block_346_errors.bin | Bin 0 -> 1619 bytes zcash_verif/src/rtl/zcash_verif_equihash.sv | 1 - zcash_verif/src/tb/zcash_verif_equihash_tb.sv | 49 +++++++++++++++++- 3 files changed, 47 insertions(+), 3 deletions(-) create mode 100644 zcash_verif/src/data/block_346_errors.bin diff --git a/zcash_verif/src/data/block_346_errors.bin b/zcash_verif/src/data/block_346_errors.bin new file mode 100644 index 0000000000000000000000000000000000000000..9b578e0e89e9ed93ef731e6584118eb05077f003 GIT binary patch literal 1619 zcmaKsc{~#e0LM4?QP^ylIaWiL7;CnYdn`wpNmAL`h8)k6isqP3iJs5OnB>e6D$!g~ z`>0V;dKxpw9HW$^yvQ}jUiEqZ_I`i;KA+$5=T`v$0BDN@rCL7Dutm$cqS4;gYcvD? zi%`aXOVOGZYu}F?rDNrX1nXe&*Gf)|}!ah&@QTbmvBx@gT zX_YsEbL)wvz~5Ho*BliA`AZ5jV|qD5WMbeA6Mww>R&ecthLys&(M>M%Jg&{@;;Rw; z@#&%Qvs&JTcLIeCw;S%^LriAE)%X=;ixO*CV$U0&hRG5up@J~<$(M)^u=gx=R-5he zFrNEOu`cn^$BECII6QEw#;A?5lab$rCJ6rqx7>IOEH3ehySDQ#8V|J6_XuE>47Bpz zaR92Hvf!vw*bSTU;pM?HafxA9TSCt=!`>-b4pB8cTyhi|1q)`3mB~uWZ`*MjYL0G0 zdtwuxqd*hl((^#nq586DxYh@ZQQ)b0Pd43FBhX77EXx%ktS(asE7y_L;=NFwhtIvH zTm2ioW;WG#41OvpqgG^};mZ!#rDh;9v5oYl{LRz|Ae07PbR;yFxP%vxTlSdtHjOS0 zyls>;yIjgM1aS8P1)nOMvy@oDh!x*}?!^x7ar`|^&5@BbIagY`i$@TTlg?&sj;f5Y zo^C9v-lC*-_gwa#o!qQT2+T-#hNsGta1W)WheGiqzi0nof#T+JKN7ob&y_r+y@Po> z5yCT{LEf#JfZGqKtS0Eow-@(Er|V#|x00%}f{>e@`!gZuA#0(MB2J2Yd%WOUeATv` zI}DK~U4ey0$$AVP$LxI(@)Bc=>AD~5##V1M&}CgwlqE&o&WwIJrrH^xO{FPc)18?3 z=q+{!wuS3jm_j3Y7?+gYbESjRoT;HzM(NpG!^&nS7buZ}4QDvV=B~}oijtk{4(13C z&+qIorDO6^2>Y%t3=^pRCb54mcq^|RJ%$5+$*bF+97d4vxpLo|q|Cot2NmUgBg+hf zb24D3OgZKabn|B&vKyFjM9BbJmM-04LIty{9=PVj!Ywqcx7#F^OwHrbgN&>#zLCA* zX6?(AMqpQgC4dwPIw{Q}R)z7%(1pAU6nOh$oKz1*7{2nI`mp4kZT7TXK&@_Dy3I&4 zGksO`F1ljC+9;_n?rAAL1g`@%ubLmz4Ql>}0*ZUhl6pC-^-${jzwbWX)Q%n;oAA^3 z2S8Tky;WqfUP1L^9n6@%Vn_D`U`S!lq^V!na*&55g?Z6NU!`x@4a15f*hd5gKgEWS z6P{*bNnqlCf({BSyMz96nxqL_49ZnzoMXp$oylRyM?#Ngd@drDt6z%i3 z%DPIm#k90gi!9@-NcydE0X#qM_`~}c1@Ff%?S&MJJ9%}U24%~s(t_qyqy^qp?WG?+ z_pYyKcK6(!BgO$e4oXIC5R90VXc!cMAt<{O2p_PgbW_=^&saBv|gTp}&N;!M{B9w@iZ6eY- zciO~vo1Z%}-M!O5(CWY4g4AO6+6^G-Q%rtY0qW ke|6pI*N1K;gy~j}>M_oK$liz!tvu1H%G<9Up7JyN7gLzhW&i*H literal 0 HcmV?d00001 diff --git a/zcash_verif/src/rtl/zcash_verif_equihash.sv b/zcash_verif/src/rtl/zcash_verif_equihash.sv index 1c38120..cf8b9fe 100644 --- a/zcash_verif/src/rtl/zcash_verif_equihash.sv +++ b/zcash_verif/src/rtl/zcash_verif_equihash.sv @@ -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 diff --git a/zcash_verif/src/tb/zcash_verif_equihash_tb.sv b/zcash_verif/src/tb/zcash_verif_equihash_tb.sv index 21c3570..e510703 100644 --- a/zcash_verif/src/tb/zcash_verif_equihash_tb.sv +++ b/zcash_verif/src/tb/zcash_verif_equihash_tb.sv @@ -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();