From 010ab2e90e00463142b7611b113e56d42c86d834 Mon Sep 17 00:00:00 2001 From: cturek Date: Thu, 7 Jul 2022 22:48:46 +0000 Subject: [PATCH] Seventeen Square Root Tests --- pipelined/srt/Makefile | 5 ++-- pipelined/srt/sqrttestgen | Bin 13168 -> 22792 bytes pipelined/srt/sqrttestgen.c | 39 ++++++++++++++----------- pipelined/srt/testbench.sv | 56 ++++++++++++++++++++++-------------- 4 files changed, 60 insertions(+), 40 deletions(-) diff --git a/pipelined/srt/Makefile b/pipelined/srt/Makefile index f2ed6f8ca..5d7898b17 100644 --- a/pipelined/srt/Makefile +++ b/pipelined/srt/Makefile @@ -1,7 +1,8 @@ -all: exptestgen testgen qslc_r4a2 qslc_r4a2b qslc_sqrt_r4a2 +all: exptestgen testgen qslc_r4a2 qslc_r4a2b qslc_sqrt_r4a2 sqrttestgen sqrttestgen: sqrttestgen.c gcc sqrttestgen.c -o sqrttestgen -lm + ./sqrttestgen testgen: testgen.c gcc testgen.c -o testgen -lm @@ -28,5 +29,5 @@ inttestgen: inttestgen.c ./inttestgen clean: - rm -f testgen exptestgen qslc_r4a2 qslc_r4a2b qslc_sqrt_r4a2 + rm -f testgen exptestgen qslc_r4a2 qslc_r4a2b qslc_sqrt_r4a2 sqrttestgen diff --git a/pipelined/srt/sqrttestgen b/pipelined/srt/sqrttestgen index d4b68062699e467b77274618e35a4e7cd2690e24..dadc5dc5c8d36055ee1c68c8296279c302aa4efb 100755 GIT binary patch literal 22792 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 I3@ohpFY^DA2mk;8 literal 13168 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 SCY%1#;?NhKaWW 1) | ($signed(diffp) > 1) | (diffn === 64'bx) | (diffp === 64'bx)) // check if accurate to 1 ulp - begin - errors = errors+1; - $display("result was %h, should be %h %h %h\n", rInt, correctr, diffn, diffp); - $display("failed\n"); - $stop; - end - if (afrac === 52'hxxxxxxxxxxxxx) + end else if (~Sqrt) begin + req <= #5 1; + diffp = correctr[63:0] - rInt; + diffn = rInt - correctr[63:0]; + if (($signed(diffn) > 1) | ($signed(diffp) > 1) | (diffn === 64'bx) | (diffp === 64'bx)) // check if accurate to 1 ulp begin - $display("%d Tests completed successfully", testnum); + errors = errors+1; + $display("result was %h, should be %h %h %h\n", rInt, correctr, diffn, diffp); + $display("failed\n"); $stop; end - end + if (afrac === 52'hxxxxxxxxxxxxx) + begin + $display("%d Tests completed successfully", testnum); + $stop; + end + end else begin + req <= #5 1; + diffp = correctr[51:0] - r; + diffn = r - correctr[51:0]; + if (($signed(diffn) > 1) | ($signed(diffp) > 1) | (diffn === 64'bx) | (diffp === 64'bx)) // check if accurate to 1 ulp + begin + errors = errors + 1; + $display("result was %h, should be %h %h %h\n", rSqrt, correctr, diffn, diffp); + $display("failed\n"); + $stop; + end + if (afrac === 52'hxxxxxxxxxxxxx) begin + $display("%d Tests completed successfully", testnum); + $stop; end end + end if (req) begin req <= #5 0; correctr = nextr; @@ -169,7 +182,6 @@ module testbench; {bsign, bExp, bfrac} = b; nextr = Vec[`memr]; end - end - + end endmodule