/////////////////////////////////////////////////////////////////////
|
/////////////////////////////////////////////////////////////////////
|
//// ////
|
//// ////
|
//// FPU ////
|
//// FPU ////
|
//// Floating Point Unit (Single precision) ////
|
//// Floating Point Unit (Single precision) ////
|
//// ////
|
//// ////
|
//// TEST BENCH ////
|
//// TEST BENCH ////
|
//// ////
|
//// ////
|
//// Author: Rudolf Usselmann ////
|
//// Author: Rudolf Usselmann ////
|
//// russelmann@hotmail.com ////
|
//// russelmann@hotmail.com ////
|
//// ////
|
//// ////
|
/////////////////////////////////////////////////////////////////////
|
/////////////////////////////////////////////////////////////////////
|
//// ////
|
//// ////
|
//// Copyright (C) 2000 Rudolf Usselmann ////
|
//// Copyright (C) 2000 Rudolf Usselmann ////
|
//// russelmann@hotmail.com ////
|
//// russelmann@hotmail.com ////
|
//// ////
|
//// ////
|
//// This source file may be used and distributed without ////
|
//// This source file may be used and distributed without ////
|
//// restriction provided that this copyright statement is not ////
|
//// restriction provided that this copyright statement is not ////
|
//// removed from the file and that any derivative work contains ////
|
//// removed from the file and that any derivative work contains ////
|
//// the original copyright notice and the associated disclaimer.////
|
//// the original copyright notice and the associated disclaimer.////
|
//// ////
|
//// ////
|
//// THIS SOURCE FILE IS PROVIDED "AS IS" AND WITHOUT ANY ////
|
//// THIS SOURCE FILE IS PROVIDED "AS IS" AND WITHOUT ANY ////
|
//// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, WITHOUT ////
|
//// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, WITHOUT ////
|
//// LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND ////
|
//// LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND ////
|
//// FITNESS FOR A PARTICULAR PURPOSE. ////
|
//// FITNESS FOR A PARTICULAR PURPOSE. ////
|
//// ////
|
//// ////
|
/////////////////////////////////////////////////////////////////////
|
/////////////////////////////////////////////////////////////////////
|
|
|
|
|
|
|
if(fp_combo)
|
if(fp_combo)
|
begin
|
begin
|
$display("\n\nTesting FPU \n");
|
$display("\n\nTesting FPU \n");
|
|
|
$display("\nRunning Combo Test 1 ...\n");
|
$display("\nRunning Combo Test 1 ...\n");
|
$readmemh ("test_vectors/combo/fpu_combo1.hex", tmem);
|
$readmemh ("test_vectors/combo/fpu_combo1.hex", tmem);
|
run_test;
|
run_test;
|
|
|
$display("\nRunning Combo Test 2 ...\n");
|
$display("\nRunning Combo Test 2 ...\n");
|
$readmemh ("test_vectors/combo/fpu_combo2.hex", tmem);
|
$readmemh ("test_vectors/combo/fpu_combo2.hex", tmem);
|
run_test;
|
run_test;
|
|
|
$display("\nRunning Combo Test 3 ...\n");
|
$display("\nRunning Combo Test 3 ...\n");
|
$readmemh ("test_vectors/combo/fpu_combo3.hex", tmem);
|
$readmemh ("test_vectors/combo/fpu_combo3.hex", tmem);
|
run_test;
|
run_test;
|
|
|
$display("\nRunning Combo Test 4 ...\n");
|
$display("\nRunning Combo Test 4 ...\n");
|
$readmemh ("test_vectors/combo/fpu_combo4.hex", tmem);
|
$readmemh ("test_vectors/combo/fpu_combo4.hex", tmem);
|
run_test;
|
run_test;
|
|
|
end
|
end
|
|
|
if(fp_fasu)
|
if(fp_fasu)
|
begin
|
begin
|
$display("\n\nTesting FP Add/Sub Unit\n");
|
$display("\n\nTesting FP Add/Sub Unit\n");
|
if(test_rmode[0])
|
if(test_rmode[0])
|
begin
|
begin
|
$display("\n+++++ ROUNDING MODE: Nearest Even\n\n");
|
$display("\n+++++ ROUNDING MODE: Nearest Even\n\n");
|
|
|
if(test_sel[0])
|
if(test_sel[0])
|
begin
|
begin
|
$display("\nRunning Pat 0 Add Test ...\n");
|
$display("\nRunning Pat 0 Add Test ...\n");
|
$readmemh ("test_vectors/rtne/fasu_pat0a.hex", tmem);
|
$readmemh ("test_vectors/rtne/fasu_pat0a.hex", tmem);
|
run_test;
|
run_test;
|
end
|
end
|
|
|
if(test_sel[0])
|
if(test_sel[0])
|
begin
|
begin
|
$display("\nRunning Pat 0 Sub Test ...\n");
|
$display("\nRunning Pat 0 Sub Test ...\n");
|
$readmemh ("test_vectors/rtne/fasu_pat0b.hex", tmem);
|
$readmemh ("test_vectors/rtne/fasu_pat0b.hex", tmem);
|
run_test;
|
run_test;
|
end
|
end
|
|
|
if(test_sel[1])
|
if(test_sel[1])
|
begin
|
begin
|
$display("\nRunning Pat 1 Add Test ...\n");
|
$display("\nRunning Pat 1 Add Test ...\n");
|
$readmemh ("test_vectors/rtne/fasu_pat1a.hex", tmem);
|
$readmemh ("test_vectors/rtne/fasu_pat1a.hex", tmem);
|
run_test;
|
run_test;
|
end
|
end
|
|
|
if(test_sel[1])
|
if(test_sel[1])
|
begin
|
begin
|
$display("\nRunning Pat 1 Sub Test ...\n");
|
$display("\nRunning Pat 1 Sub Test ...\n");
|
$readmemh ("test_vectors/rtne/fasu_pat1b.hex", tmem);
|
$readmemh ("test_vectors/rtne/fasu_pat1b.hex", tmem);
|
run_test;
|
run_test;
|
end
|
end
|
|
|
if(test_sel[2])
|
if(test_sel[2])
|
begin
|
begin
|
$display("\nRunning Pat 2 Add Test ...\n");
|
$display("\nRunning Pat 2 Add Test ...\n");
|
$readmemh ("test_vectors/rtne/fasu_pat2a.hex", tmem);
|
$readmemh ("test_vectors/rtne/fasu_pat2a.hex", tmem);
|
run_test;
|
run_test;
|
end
|
end
|
|
|
if(test_sel[2])
|
if(test_sel[2])
|
begin
|
begin
|
$display("\nRunning Pat 2 Sub Test ...\n");
|
$display("\nRunning Pat 2 Sub Test ...\n");
|
$readmemh ("test_vectors/rtne/fasu_pat2b.hex", tmem);
|
$readmemh ("test_vectors/rtne/fasu_pat2b.hex", tmem);
|
run_test;
|
run_test;
|
end
|
end
|
|
|
if(test_sel[3])
|
if(test_sel[3])
|
begin
|
begin
|
$display("\nRunning Random Lg. Num Add Test ...\n");
|
$display("\nRunning Random Lg. Num Add Test ...\n");
|
$readmemh ("test_vectors/rtne/fasu_lga.hex", tmem);
|
$readmemh ("test_vectors/rtne/fasu_lga.hex", tmem);
|
run_test;
|
run_test;
|
end
|
end
|
|
|
if(test_sel[3])
|
if(test_sel[3])
|
begin
|
begin
|
$display("\nRunning Random Lg. Num Sub Test ...\n");
|
$display("\nRunning Random Lg. Num Sub Test ...\n");
|
$readmemh ("test_vectors/rtne/fasu_lgb.hex", tmem);
|
$readmemh ("test_vectors/rtne/fasu_lgb.hex", tmem);
|
run_test;
|
run_test;
|
end
|
end
|
|
|
if(test_sel[4])
|
if(test_sel[4])
|
begin
|
begin
|
$display("\nRunning Random Sm. Num Add Test ...\n");
|
$display("\nRunning Random Sm. Num Add Test ...\n");
|
$readmemh ("test_vectors/rtne/fasu_sma.hex", tmem);
|
$readmemh ("test_vectors/rtne/fasu_sma.hex", tmem);
|
run_test;
|
run_test;
|
end
|
end
|
|
|
if(test_sel[4])
|
if(test_sel[4])
|
begin
|
begin
|
$display("\nRunning Random Sm. Num Sub Test ...\n");
|
$display("\nRunning Random Sm. Num Sub Test ...\n");
|
$readmemh ("test_vectors/rtne/fasu_smb.hex", tmem);
|
$readmemh ("test_vectors/rtne/fasu_smb.hex", tmem);
|
run_test;
|
run_test;
|
end
|
end
|
end
|
end
|
|
|
|
|
if(test_rmode[1])
|
if(test_rmode[1])
|
begin
|
begin
|
$display("\n\n+++++ ROUNDING MODE: Towards Zero\n\n");
|
$display("\n\n+++++ ROUNDING MODE: Towards Zero\n\n");
|
|
|
if(test_sel[0])
|
if(test_sel[0])
|
begin
|
begin
|
$display("\nRunning Pat 0 Add Test ...\n");
|
$display("\nRunning Pat 0 Add Test ...\n");
|
$readmemh ("test_vectors/rtzero/fasu_pat0a.hex", tmem);
|
$readmemh ("test_vectors/rtzero/fasu_pat0a.hex", tmem);
|
run_test;
|
run_test;
|
end
|
end
|
|
|
if(test_sel[0])
|
if(test_sel[0])
|
begin
|
begin
|
$display("\nRunning Pat 0 Sub Test ...\n");
|
$display("\nRunning Pat 0 Sub Test ...\n");
|
$readmemh ("test_vectors/rtzero/fasu_pat0b.hex", tmem);
|
$readmemh ("test_vectors/rtzero/fasu_pat0b.hex", tmem);
|
run_test;
|
run_test;
|
end
|
end
|
|
|
if(test_sel[1])
|
if(test_sel[1])
|
begin
|
begin
|
$display("\nRunning Pat 1 Add Test ...\n");
|
$display("\nRunning Pat 1 Add Test ...\n");
|
$readmemh ("test_vectors/rtzero/fasu_pat1a.hex", tmem);
|
$readmemh ("test_vectors/rtzero/fasu_pat1a.hex", tmem);
|
run_test;
|
run_test;
|
end
|
end
|
|
|
if(test_sel[1])
|
if(test_sel[1])
|
begin
|
begin
|
$display("\nRunning Pat 1 Sub Test ...\n");
|
$display("\nRunning Pat 1 Sub Test ...\n");
|
$readmemh ("test_vectors/rtzero/fasu_pat1b.hex", tmem);
|
$readmemh ("test_vectors/rtzero/fasu_pat1b.hex", tmem);
|
run_test;
|
run_test;
|
end
|
end
|
|
|
if(test_sel[2])
|
if(test_sel[2])
|
begin
|
begin
|
$display("\nRunning Pat 2 Add Test ...\n");
|
$display("\nRunning Pat 2 Add Test ...\n");
|
$readmemh ("test_vectors/rtzero/fasu_pat2a.hex", tmem);
|
$readmemh ("test_vectors/rtzero/fasu_pat2a.hex", tmem);
|
run_test;
|
run_test;
|
end
|
end
|
|
|
if(test_sel[2])
|
if(test_sel[2])
|
begin
|
begin
|
$display("\nRunning Pat 2 Sub Test ...\n");
|
$display("\nRunning Pat 2 Sub Test ...\n");
|
$readmemh ("test_vectors/rtzero/fasu_pat2b.hex", tmem);
|
$readmemh ("test_vectors/rtzero/fasu_pat2b.hex", tmem);
|
run_test;
|
run_test;
|
end
|
end
|
|
|
if(test_sel[3])
|
if(test_sel[3])
|
begin
|
begin
|
$display("\nRunning Random Lg. Num Add Test ...\n");
|
$display("\nRunning Random Lg. Num Add Test ...\n");
|
$readmemh ("test_vectors/rtzero/fasu_lga.hex", tmem);
|
$readmemh ("test_vectors/rtzero/fasu_lga.hex", tmem);
|
run_test;
|
run_test;
|
end
|
end
|
|
|
if(test_sel[3])
|
if(test_sel[3])
|
begin
|
begin
|
$display("\nRunning Random Lg. Num Sub Test ...\n");
|
$display("\nRunning Random Lg. Num Sub Test ...\n");
|
$readmemh ("test_vectors/rtzero/fasu_lgb.hex", tmem);
|
$readmemh ("test_vectors/rtzero/fasu_lgb.hex", tmem);
|
run_test;
|
run_test;
|
end
|
end
|
|
|
if(test_sel[4])
|
if(test_sel[4])
|
begin
|
begin
|
$display("\nRunning Random Sm. Num Add Test ...\n");
|
$display("\nRunning Random Sm. Num Add Test ...\n");
|
$readmemh ("test_vectors/rtzero/fasu_sma.hex", tmem);
|
$readmemh ("test_vectors/rtzero/fasu_sma.hex", tmem);
|
run_test;
|
run_test;
|
end
|
end
|
|
|
if(test_sel[4])
|
if(test_sel[4])
|
begin
|
begin
|
$display("\nRunning Random Sm. Num Sub Test ...\n");
|
$display("\nRunning Random Sm. Num Sub Test ...\n");
|
$readmemh ("test_vectors/rtzero/fasu_smb.hex", tmem);
|
$readmemh ("test_vectors/rtzero/fasu_smb.hex", tmem);
|
run_test;
|
run_test;
|
end
|
end
|
end
|
end
|
|
|
if(test_rmode[2])
|
if(test_rmode[2])
|
begin
|
begin
|
$display("\n\n+++++ ROUNDING MODE: Towards INF+ (UP)\n\n");
|
$display("\n\n+++++ ROUNDING MODE: Towards INF+ (UP)\n\n");
|
|
|
if(test_sel[0])
|
if(test_sel[0])
|
begin
|
begin
|
$display("\nRunning Pat 0 Add Test ...\n");
|
$display("\nRunning Pat 0 Add Test ...\n");
|
$readmemh ("test_vectors/rup/fasu_pat0a.hex", tmem);
|
$readmemh ("test_vectors/rup/fasu_pat0a.hex", tmem);
|
run_test;
|
run_test;
|
end
|
end
|
|
|
if(test_sel[0])
|
if(test_sel[0])
|
begin
|
begin
|
$display("\nRunning Pat 0 Sub Test ...\n");
|
$display("\nRunning Pat 0 Sub Test ...\n");
|
$readmemh ("test_vectors/rup/fasu_pat0b.hex", tmem);
|
$readmemh ("test_vectors/rup/fasu_pat0b.hex", tmem);
|
run_test;
|
run_test;
|
end
|
end
|
|
|
if(test_sel[1])
|
if(test_sel[1])
|
begin
|
begin
|
$display("\nRunning Pat 1 Add Test ...\n");
|
$display("\nRunning Pat 1 Add Test ...\n");
|
$readmemh ("test_vectors/rup/fasu_pat1a.hex", tmem);
|
$readmemh ("test_vectors/rup/fasu_pat1a.hex", tmem);
|
run_test;
|
run_test;
|
end
|
end
|
|
|
if(test_sel[1])
|
if(test_sel[1])
|
begin
|
begin
|
$display("\nRunning Pat 1 Sub Test ...\n");
|
$display("\nRunning Pat 1 Sub Test ...\n");
|
$readmemh ("test_vectors/rup/fasu_pat1b.hex", tmem);
|
$readmemh ("test_vectors/rup/fasu_pat1b.hex", tmem);
|
run_test;
|
run_test;
|
end
|
end
|
|
|
if(test_sel[2])
|
if(test_sel[2])
|
begin
|
begin
|
$display("\nRunning Pat 2 Add Test ...\n");
|
$display("\nRunning Pat 2 Add Test ...\n");
|
$readmemh ("test_vectors/rup/fasu_pat2a.hex", tmem);
|
$readmemh ("test_vectors/rup/fasu_pat2a.hex", tmem);
|
run_test;
|
run_test;
|
end
|
end
|
|
|
if(test_sel[2])
|
if(test_sel[2])
|
begin
|
begin
|
$display("\nRunning Pat 2 Sub Test ...\n");
|
$display("\nRunning Pat 2 Sub Test ...\n");
|
$readmemh ("test_vectors/rup/fasu_pat2b.hex", tmem);
|
$readmemh ("test_vectors/rup/fasu_pat2b.hex", tmem);
|
run_test;
|
run_test;
|
end
|
end
|
|
|
if(test_sel[3])
|
if(test_sel[3])
|
begin
|
begin
|
$display("\nRunning Random Lg. Num Add Test ...\n");
|
$display("\nRunning Random Lg. Num Add Test ...\n");
|
$readmemh ("test_vectors/rup/fasu_lga.hex", tmem);
|
$readmemh ("test_vectors/rup/fasu_lga.hex", tmem);
|
run_test;
|
run_test;
|
end
|
end
|
|
|
if(test_sel[3])
|
if(test_sel[3])
|
begin
|
begin
|
$display("\nRunning Random Lg. Num Sub Test ...\n");
|
$display("\nRunning Random Lg. Num Sub Test ...\n");
|
$readmemh ("test_vectors/rup/fasu_lgb.hex", tmem);
|
$readmemh ("test_vectors/rup/fasu_lgb.hex", tmem);
|
run_test;
|
run_test;
|
end
|
end
|
|
|
if(test_sel[4])
|
if(test_sel[4])
|
begin
|
begin
|
$display("\nRunning Random Sm. Num Add Test ...\n");
|
$display("\nRunning Random Sm. Num Add Test ...\n");
|
$readmemh ("test_vectors/rup/fasu_sma.hex", tmem);
|
$readmemh ("test_vectors/rup/fasu_sma.hex", tmem);
|
run_test;
|
run_test;
|
end
|
end
|
|
|
if(test_sel[4])
|
if(test_sel[4])
|
begin
|
begin
|
$display("\nRunning Random Sm. Num Sub Test ...\n");
|
$display("\nRunning Random Sm. Num Sub Test ...\n");
|
$readmemh ("test_vectors/rup/fasu_smb.hex", tmem);
|
$readmemh ("test_vectors/rup/fasu_smb.hex", tmem);
|
run_test;
|
run_test;
|
end
|
end
|
end
|
end
|
|
|
if(test_rmode[3])
|
if(test_rmode[3])
|
begin
|
begin
|
$display("\n\n+++++ ROUNDING MODE: Towards INF- (DOWN)\n\n");
|
$display("\n\n+++++ ROUNDING MODE: Towards INF- (DOWN)\n\n");
|
|
|
if(test_sel[0])
|
if(test_sel[0])
|
begin
|
begin
|
$display("\nRunning Pat 0 Add Test ...\n");
|
$display("\nRunning Pat 0 Add Test ...\n");
|
$readmemh ("test_vectors/rdown/fasu_pat0a.hex", tmem);
|
$readmemh ("test_vectors/rdown/fasu_pat0a.hex", tmem);
|
run_test;
|
run_test;
|
end
|
end
|
|
|
if(test_sel[0])
|
if(test_sel[0])
|
begin
|
begin
|
$display("\nRunning Pat 0 Sub Test ...\n");
|
$display("\nRunning Pat 0 Sub Test ...\n");
|
$readmemh ("test_vectors/rdown/fasu_pat0b.hex", tmem);
|
$readmemh ("test_vectors/rdown/fasu_pat0b.hex", tmem);
|
run_test;
|
run_test;
|
end
|
end
|
|
|
if(test_sel[1])
|
if(test_sel[1])
|
begin
|
begin
|
$display("\nRunning Pat 1 Add Test ...\n");
|
$display("\nRunning Pat 1 Add Test ...\n");
|
$readmemh ("test_vectors/rdown/fasu_pat1a.hex", tmem);
|
$readmemh ("test_vectors/rdown/fasu_pat1a.hex", tmem);
|
run_test;
|
run_test;
|
end
|
end
|
|
|
if(test_sel[1])
|
if(test_sel[1])
|
begin
|
begin
|
$display("\nRunning Pat 1 Sub Test ...\n");
|
$display("\nRunning Pat 1 Sub Test ...\n");
|
$readmemh ("test_vectors/rdown/fasu_pat1b.hex", tmem);
|
$readmemh ("test_vectors/rdown/fasu_pat1b.hex", tmem);
|
run_test;
|
run_test;
|
end
|
end
|
|
|
if(test_sel[2])
|
if(test_sel[2])
|
begin
|
begin
|
$display("\nRunning Pat 2 Add Test ...\n");
|
$display("\nRunning Pat 2 Add Test ...\n");
|
$readmemh ("test_vectors/rdown/fasu_pat2a.hex", tmem);
|
$readmemh ("test_vectors/rdown/fasu_pat2a.hex", tmem);
|
run_test;
|
run_test;
|
end
|
end
|
|
|
if(test_sel[2])
|
if(test_sel[2])
|
begin
|
begin
|
$display("\nRunning Pat 2 Sub Test ...\n");
|
$display("\nRunning Pat 2 Sub Test ...\n");
|
$readmemh ("test_vectors/rdown/fasu_pat2b.hex", tmem);
|
$readmemh ("test_vectors/rdown/fasu_pat2b.hex", tmem);
|
run_test;
|
run_test;
|
end
|
end
|
|
|
if(test_sel[3])
|
if(test_sel[3])
|
begin
|
begin
|
$display("\nRunning Random Lg. Num Add Test ...\n");
|
$display("\nRunning Random Lg. Num Add Test ...\n");
|
$readmemh ("test_vectors/rdown/fasu_lga.hex", tmem);
|
$readmemh ("test_vectors/rdown/fasu_lga.hex", tmem);
|
run_test;
|
run_test;
|
end
|
end
|
|
|
if(test_sel[3])
|
if(test_sel[3])
|
begin
|
begin
|
$display("\nRunning Random Lg. Num Sub Test ...\n");
|
$display("\nRunning Random Lg. Num Sub Test ...\n");
|
$readmemh ("test_vectors/rdown/fasu_lgb.hex", tmem);
|
$readmemh ("test_vectors/rdown/fasu_lgb.hex", tmem);
|
run_test;
|
run_test;
|
end
|
end
|
|
|
if(test_sel[4])
|
if(test_sel[4])
|
begin
|
begin
|
$display("\nRunning Random Sm. Num Add Test ...\n");
|
$display("\nRunning Random Sm. Num Add Test ...\n");
|
$readmemh ("test_vectors/rdown/fasu_sma.hex", tmem);
|
$readmemh ("test_vectors/rdown/fasu_sma.hex", tmem);
|
run_test;
|
run_test;
|
end
|
end
|
|
|
if(test_sel[4])
|
if(test_sel[4])
|
begin
|
begin
|
$display("\nRunning Random Sm. Num Sub Test ...\n");
|
$display("\nRunning Random Sm. Num Sub Test ...\n");
|
$readmemh ("test_vectors/rdown/fasu_smb.hex", tmem);
|
$readmemh ("test_vectors/rdown/fasu_smb.hex", tmem);
|
run_test;
|
run_test;
|
end
|
end
|
end
|
end
|
end
|
end
|
|
|
if(fp_mul)
|
if(fp_mul)
|
begin
|
begin
|
|
|
$display("\n\nTesting FP MUL Unit\n");
|
$display("\n\nTesting FP MUL Unit\n");
|
|
|
if(test_rmode[0])
|
if(test_rmode[0])
|
begin
|
begin
|
$display("\n+++++ ROUNDING MODE: Nearest Even\n\n");
|
$display("\n+++++ ROUNDING MODE: Nearest Even\n\n");
|
|
|
if(test_sel[0])
|
if(test_sel[0])
|
begin
|
begin
|
$display("\nRunning Pat 0 Test ...\n");
|
$display("\nRunning Pat 0 Test ...\n");
|
$readmemh ("test_vectors/rtne/fmul_pat0.hex", tmem);
|
$readmemh ("test_vectors/rtne/fmul_pat0.hex", tmem);
|
run_test;
|
run_test;
|
end
|
end
|
|
|
if(test_sel[1])
|
if(test_sel[1])
|
begin
|
begin
|
$display("\nRunning Pat 1 Test ...\n");
|
$display("\nRunning Pat 1 Test ...\n");
|
$readmemh ("test_vectors/rtne/fmul_pat1.hex", tmem);
|
$readmemh ("test_vectors/rtne/fmul_pat1.hex", tmem);
|
run_test;
|
run_test;
|
end
|
end
|
|
|
if(test_sel[2])
|
if(test_sel[2])
|
begin
|
begin
|
$display("\nRunning Pat 2 Test ...\n");
|
$display("\nRunning Pat 2 Test ...\n");
|
$readmemh ("test_vectors/rtne/fmul_pat2.hex", tmem);
|
$readmemh ("test_vectors/rtne/fmul_pat2.hex", tmem);
|
run_test;
|
run_test;
|
end
|
end
|
|
|
if(test_sel[3])
|
if(test_sel[3])
|
begin
|
begin
|
$display("\nRunning Random Lg. Num Test ...\n");
|
$display("\nRunning Random Lg. Num Test ...\n");
|
$readmemh ("test_vectors/rtne/fmul_lg.hex", tmem);
|
$readmemh ("test_vectors/rtne/fmul_lg.hex", tmem);
|
run_test;
|
run_test;
|
end
|
end
|
|
|
if(test_sel[4])
|
if(test_sel[4])
|
begin
|
begin
|
$display("\nRunning Random Sm. Num Test ...\n");
|
$display("\nRunning Random Sm. Num Test ...\n");
|
$readmemh ("test_vectors/rtne/fmul_sm.hex", tmem);
|
$readmemh ("test_vectors/rtne/fmul_sm.hex", tmem);
|
run_test;
|
run_test;
|
end
|
end
|
end
|
end
|
|
|
if(test_rmode[1])
|
if(test_rmode[1])
|
begin
|
begin
|
$display("\n\n+++++ ROUNDING MODE: Towards Zero\n\n");
|
$display("\n\n+++++ ROUNDING MODE: Towards Zero\n\n");
|
|
|
if(test_sel[0])
|
if(test_sel[0])
|
begin
|
begin
|
$display("\nRunning Pat 0 Test ...\n");
|
$display("\nRunning Pat 0 Test ...\n");
|
$readmemh ("test_vectors/rtzero/fmul_pat0.hex", tmem);
|
$readmemh ("test_vectors/rtzero/fmul_pat0.hex", tmem);
|
run_test;
|
run_test;
|
end
|
end
|
|
|
if(test_sel[1])
|
if(test_sel[1])
|
begin
|
begin
|
$display("\nRunning Pat 1 Test ...\n");
|
$display("\nRunning Pat 1 Test ...\n");
|
$readmemh ("test_vectors/rtzero/fmul_pat1.hex", tmem);
|
$readmemh ("test_vectors/rtzero/fmul_pat1.hex", tmem);
|
run_test;
|
run_test;
|
end
|
end
|
|
|
if(test_sel[2])
|
if(test_sel[2])
|
begin
|
begin
|
$display("\nRunning Pat 2 Test ...\n");
|
$display("\nRunning Pat 2 Test ...\n");
|
$readmemh ("test_vectors/rtzero/fmul_pat2.hex", tmem);
|
$readmemh ("test_vectors/rtzero/fmul_pat2.hex", tmem);
|
run_test;
|
run_test;
|
end
|
end
|
|
|
if(test_sel[3])
|
if(test_sel[3])
|
begin
|
begin
|
$display("\nRunning Random Lg. Num Test ...\n");
|
$display("\nRunning Random Lg. Num Test ...\n");
|
$readmemh ("test_vectors/rtzero/fmul_lg.hex", tmem);
|
$readmemh ("test_vectors/rtzero/fmul_lg.hex", tmem);
|
run_test;
|
run_test;
|
end
|
end
|
|
|
if(test_sel[4])
|
if(test_sel[4])
|
begin
|
begin
|
$display("\nRunning Random Sm. Num Test ...\n");
|
$display("\nRunning Random Sm. Num Test ...\n");
|
$readmemh ("test_vectors/rtzero/fmul_sm.hex", tmem);
|
$readmemh ("test_vectors/rtzero/fmul_sm.hex", tmem);
|
run_test;
|
run_test;
|
end
|
end
|
end
|
end
|
|
|
if(test_rmode[2])
|
if(test_rmode[2])
|
begin
|
begin
|
$display("\n\n+++++ ROUNDING MODE: Towards INF+ (UP)\n\n");
|
$display("\n\n+++++ ROUNDING MODE: Towards INF+ (UP)\n\n");
|
|
|
if(test_sel[0])
|
if(test_sel[0])
|
begin
|
begin
|
$display("\nRunning Pat 0 Test ...\n");
|
$display("\nRunning Pat 0 Test ...\n");
|
$readmemh ("test_vectors/rup/fmul_pat0.hex", tmem);
|
$readmemh ("test_vectors/rup/fmul_pat0.hex", tmem);
|
run_test;
|
run_test;
|
end
|
end
|
|
|
if(test_sel[1])
|
if(test_sel[1])
|
begin
|
begin
|
$display("\nRunning Pat 1 Test ...\n");
|
$display("\nRunning Pat 1 Test ...\n");
|
$readmemh ("test_vectors/rup/fmul_pat1.hex", tmem);
|
$readmemh ("test_vectors/rup/fmul_pat1.hex", tmem);
|
run_test;
|
run_test;
|
end
|
end
|
|
|
if(test_sel[2])
|
if(test_sel[2])
|
begin
|
begin
|
$display("\nRunning Pat 2 Test ...\n");
|
$display("\nRunning Pat 2 Test ...\n");
|
$readmemh ("test_vectors/rup/fmul_pat2.hex", tmem);
|
$readmemh ("test_vectors/rup/fmul_pat2.hex", tmem);
|
run_test;
|
run_test;
|
end
|
end
|
|
|
if(test_sel[3])
|
if(test_sel[3])
|
begin
|
begin
|
$display("\nRunning Random Lg. Num Test ...\n");
|
$display("\nRunning Random Lg. Num Test ...\n");
|
$readmemh ("test_vectors/rup/fmul_lg.hex", tmem);
|
$readmemh ("test_vectors/rup/fmul_lg.hex", tmem);
|
run_test;
|
run_test;
|
end
|
end
|
|
|
if(test_sel[4])
|
if(test_sel[4])
|
begin
|
begin
|
$display("\nRunning Random Sm. Num Test ...\n");
|
$display("\nRunning Random Sm. Num Test ...\n");
|
$readmemh ("test_vectors/rup/fmul_sm.hex", tmem);
|
$readmemh ("test_vectors/rup/fmul_sm.hex", tmem);
|
run_test;
|
run_test;
|
end
|
end
|
|
|
end
|
end
|
|
|
if(test_rmode[3])
|
if(test_rmode[3])
|
begin
|
begin
|
$display("\n\n+++++ ROUNDING MODE: Towards INF- (DOWN)\n\n");
|
$display("\n\n+++++ ROUNDING MODE: Towards INF- (DOWN)\n\n");
|
|
|
if(test_sel[0])
|
if(test_sel[0])
|
begin
|
begin
|
$display("\nRunning Pat 0 Test ...\n");
|
$display("\nRunning Pat 0 Test ...\n");
|
$readmemh ("test_vectors/rdown/fmul_pat0.hex", tmem);
|
$readmemh ("test_vectors/rdown/fmul_pat0.hex", tmem);
|
run_test;
|
run_test;
|
end
|
end
|
|
|
if(test_sel[1])
|
if(test_sel[1])
|
begin
|
begin
|
$display("\nRunning Pat 1 Test ...\n");
|
$display("\nRunning Pat 1 Test ...\n");
|
$readmemh ("test_vectors/rdown/fmul_pat1.hex", tmem);
|
$readmemh ("test_vectors/rdown/fmul_pat1.hex", tmem);
|
run_test;
|
run_test;
|
end
|
end
|
|
|
if(test_sel[2])
|
if(test_sel[2])
|
begin
|
begin
|
$display("\nRunning Pat 2 Test ...\n");
|
$display("\nRunning Pat 2 Test ...\n");
|
$readmemh ("test_vectors/rdown/fmul_pat2.hex", tmem);
|
$readmemh ("test_vectors/rdown/fmul_pat2.hex", tmem);
|
run_test;
|
run_test;
|
end
|
end
|
|
|
if(test_sel[3])
|
if(test_sel[3])
|
begin
|
begin
|
$display("\nRunning Random Lg. Num Test ...\n");
|
$display("\nRunning Random Lg. Num Test ...\n");
|
$readmemh ("test_vectors/rdown/fmul_lg.hex", tmem);
|
$readmemh ("test_vectors/rdown/fmul_lg.hex", tmem);
|
run_test;
|
run_test;
|
end
|
end
|
|
|
if(test_sel[4])
|
if(test_sel[4])
|
begin
|
begin
|
$display("\nRunning Random Sm. Num Test ...\n");
|
$display("\nRunning Random Sm. Num Test ...\n");
|
$readmemh ("test_vectors/rdown/fmul_sm.hex", tmem);
|
$readmemh ("test_vectors/rdown/fmul_sm.hex", tmem);
|
run_test;
|
run_test;
|
end
|
end
|
end
|
end
|
end
|
end
|
|
|
if(fp_div)
|
if(fp_div)
|
begin
|
begin
|
|
|
$display("\n\nTesting FP DIV Unit\n");
|
$display("\n\nTesting FP DIV Unit\n");
|
|
|
if(test_rmode[0])
|
if(test_rmode[0])
|
begin
|
begin
|
$display("\n+++++ ROUNDING MODE: Nearest Even\n\n");
|
$display("\n+++++ ROUNDING MODE: Nearest Even\n\n");
|
|
|
if(test_sel[0])
|
if(test_sel[0])
|
begin
|
begin
|
$display("\nRunning Pat 0 Test ...\n");
|
$display("\nRunning Pat 0 Test ...\n");
|
$readmemh ("test_vectors/rtne/fdiv_pat0.hex", tmem);
|
$readmemh ("test_vectors/rtne/fdiv_pat0.hex", tmem);
|
run_test;
|
run_test;
|
end
|
end
|
|
|
if(test_sel[1])
|
if(test_sel[1])
|
begin
|
begin
|
$display("\nRunning Pat 1 Test ...\n");
|
$display("\nRunning Pat 1 Test ...\n");
|
$readmemh ("test_vectors/rtne/fdiv_pat1.hex", tmem);
|
$readmemh ("test_vectors/rtne/fdiv_pat1.hex", tmem);
|
run_test;
|
run_test;
|
end
|
end
|
|
|
if(test_sel[2])
|
if(test_sel[2])
|
begin
|
begin
|
$display("\nRunning Pat 2 Test ...\n");
|
$display("\nRunning Pat 2 Test ...\n");
|
$readmemh ("test_vectors/rtne/fdiv_pat2.hex", tmem);
|
$readmemh ("test_vectors/rtne/fdiv_pat2.hex", tmem);
|
run_test;
|
run_test;
|
end
|
end
|
|
|
if(test_sel[3])
|
if(test_sel[3])
|
begin
|
begin
|
$display("\nRunning Random Lg. Num Test ...\n");
|
$display("\nRunning Random Lg. Num Test ...\n");
|
$readmemh ("test_vectors/rtne/fdiv_lg.hex", tmem);
|
$readmemh ("test_vectors/rtne/fdiv_lg.hex", tmem);
|
run_test;
|
run_test;
|
end
|
end
|
|
|
if(test_sel[4])
|
if(test_sel[4])
|
begin
|
begin
|
$display("\nRunning Random Sm. Num Test ...\n");
|
$display("\nRunning Random Sm. Num Test ...\n");
|
$readmemh ("test_vectors/rtne/fdiv_sm.hex", tmem);
|
$readmemh ("test_vectors/rtne/fdiv_sm.hex", tmem);
|
run_test;
|
run_test;
|
end
|
end
|
end
|
end
|
|
|
if(test_rmode[1])
|
if(test_rmode[1])
|
begin
|
begin
|
$display("\n\n+++++ ROUNDING MODE: Towards Zero\n\n");
|
$display("\n\n+++++ ROUNDING MODE: Towards Zero\n\n");
|
|
|
if(test_sel[0])
|
if(test_sel[0])
|
begin
|
begin
|
$display("\nRunning Pat 0 Test ...\n");
|
$display("\nRunning Pat 0 Test ...\n");
|
$readmemh ("test_vectors/rtzero/fdiv_pat0.hex", tmem);
|
$readmemh ("test_vectors/rtzero/fdiv_pat0.hex", tmem);
|
run_test;
|
run_test;
|
end
|
end
|
|
|
if(test_sel[1])
|
if(test_sel[1])
|
begin
|
begin
|
$display("\nRunning Pat 1 Test ...\n");
|
$display("\nRunning Pat 1 Test ...\n");
|
$readmemh ("test_vectors/rtzero/fdiv_pat1.hex", tmem);
|
$readmemh ("test_vectors/rtzero/fdiv_pat1.hex", tmem);
|
run_test;
|
run_test;
|
end
|
end
|
|
|
if(test_sel[2])
|
if(test_sel[2])
|
begin
|
begin
|
$display("\nRunning Pat 2 Test ...\n");
|
$display("\nRunning Pat 2 Test ...\n");
|
$readmemh ("test_vectors/rtzero/fdiv_pat2.hex", tmem);
|
$readmemh ("test_vectors/rtzero/fdiv_pat2.hex", tmem);
|
run_test;
|
run_test;
|
end
|
end
|
|
|
if(test_sel[3])
|
if(test_sel[3])
|
begin
|
begin
|
$display("\nRunning Random Lg. Num Test ...\n");
|
$display("\nRunning Random Lg. Num Test ...\n");
|
$readmemh ("test_vectors/rtzero/fdiv_lg.hex", tmem);
|
$readmemh ("test_vectors/rtzero/fdiv_lg.hex", tmem);
|
run_test;
|
run_test;
|
end
|
end
|
|
|
if(test_sel[4])
|
if(test_sel[4])
|
begin
|
begin
|
$display("\nRunning Random Sm. Num Test ...\n");
|
$display("\nRunning Random Sm. Num Test ...\n");
|
$readmemh ("test_vectors/rtzero/fdiv_sm.hex", tmem);
|
$readmemh ("test_vectors/rtzero/fdiv_sm.hex", tmem);
|
run_test;
|
run_test;
|
end
|
end
|
end
|
end
|
|
|
if(test_rmode[2])
|
if(test_rmode[2])
|
begin
|
begin
|
$display("\n\n+++++ ROUNDING MODE: Towards INF+ (UP)\n\n");
|
$display("\n\n+++++ ROUNDING MODE: Towards INF+ (UP)\n\n");
|
|
|
if(test_sel[0])
|
if(test_sel[0])
|
begin
|
begin
|
$display("\nRunning Pat 0 Test ...\n");
|
$display("\nRunning Pat 0 Test ...\n");
|
$readmemh ("test_vectors/rup/fdiv_pat0.hex", tmem);
|
$readmemh ("test_vectors/rup/fdiv_pat0.hex", tmem);
|
run_test;
|
run_test;
|
end
|
end
|
|
|
if(test_sel[1])
|
if(test_sel[1])
|
begin
|
begin
|
$display("\nRunning Pat 1 Test ...\n");
|
$display("\nRunning Pat 1 Test ...\n");
|
$readmemh ("test_vectors/rup/fdiv_pat1.hex", tmem);
|
$readmemh ("test_vectors/rup/fdiv_pat1.hex", tmem);
|
run_test;
|
run_test;
|
end
|
end
|
|
|
if(test_sel[2])
|
if(test_sel[2])
|
begin
|
begin
|
$display("\nRunning Pat 2 Test ...\n");
|
$display("\nRunning Pat 2 Test ...\n");
|
$readmemh ("test_vectors/rup/fdiv_pat2.hex", tmem);
|
$readmemh ("test_vectors/rup/fdiv_pat2.hex", tmem);
|
run_test;
|
run_test;
|
end
|
end
|
|
|
if(test_sel[3])
|
if(test_sel[3])
|
begin
|
begin
|
$display("\nRunning Random Lg. Num Test ...\n");
|
$display("\nRunning Random Lg. Num Test ...\n");
|
$readmemh ("test_vectors/rup/fdiv_lg.hex", tmem);
|
$readmemh ("test_vectors/rup/fdiv_lg.hex", tmem);
|
run_test;
|
run_test;
|
end
|
end
|
|
|
if(test_sel[4])
|
if(test_sel[4])
|
begin
|
begin
|
$display("\nRunning Random Sm. Num Test ...\n");
|
$display("\nRunning Random Sm. Num Test ...\n");
|
$readmemh ("test_vectors/rup/fdiv_sm.hex", tmem);
|
$readmemh ("test_vectors/rup/fdiv_sm.hex", tmem);
|
run_test;
|
run_test;
|
end
|
end
|
|
|
end
|
end
|
|
|
if(test_rmode[3])
|
if(test_rmode[3])
|
begin
|
begin
|
$display("\n\n+++++ ROUNDING MODE: Towards INF- (DOWN)\n\n");
|
$display("\n\n+++++ ROUNDING MODE: Towards INF- (DOWN)\n\n");
|
|
|
if(test_sel[0])
|
if(test_sel[0])
|
begin
|
begin
|
$display("\nRunning Pat 0 Test ...\n");
|
$display("\nRunning Pat 0 Test ...\n");
|
$readmemh ("test_vectors/rdown/fdiv_pat0.hex", tmem);
|
$readmemh ("test_vectors/rdown/fdiv_pat0.hex", tmem);
|
run_test;
|
run_test;
|
end
|
end
|
|
|
if(test_sel[1])
|
if(test_sel[1])
|
begin
|
begin
|
$display("\nRunning Pat 1 Test ...\n");
|
$display("\nRunning Pat 1 Test ...\n");
|
$readmemh ("test_vectors/rdown/fdiv_pat1.hex", tmem);
|
$readmemh ("test_vectors/rdown/fdiv_pat1.hex", tmem);
|
run_test;
|
run_test;
|
end
|
end
|
|
|
if(test_sel[2])
|
if(test_sel[2])
|
begin
|
begin
|
$display("\nRunning Pat 2 Test ...\n");
|
$display("\nRunning Pat 2 Test ...\n");
|
$readmemh ("test_vectors/rdown/fdiv_pat2.hex", tmem);
|
$readmemh ("test_vectors/rdown/fdiv_pat2.hex", tmem);
|
run_test;
|
run_test;
|
end
|
end
|
|
|
if(test_sel[3])
|
if(test_sel[3])
|
begin
|
begin
|
$display("\nRunning Random Lg. Num Test ...\n");
|
$display("\nRunning Random Lg. Num Test ...\n");
|
$readmemh ("test_vectors/rdown/fdiv_lg.hex", tmem);
|
$readmemh ("test_vectors/rdown/fdiv_lg.hex", tmem);
|
run_test;
|
run_test;
|
end
|
end
|
|
|
if(test_sel[4])
|
if(test_sel[4])
|
begin
|
begin
|
$display("\nRunning Random Sm. Num Test ...\n");
|
$display("\nRunning Random Sm. Num Test ...\n");
|
$readmemh ("test_vectors/rdown/fdiv_sm.hex", tmem);
|
$readmemh ("test_vectors/rdown/fdiv_sm.hex", tmem);
|
run_test;
|
run_test;
|
end
|
end
|
end
|
end
|
end
|
end
|
|
|
|
|
|
|
if(fp_i2f)
|
if(fp_i2f)
|
begin
|
begin
|
|
|
$display("\n\nTesting FP I2F Unit\n");
|
$display("\n\nTesting FP I2F Unit\n");
|
|
|
if(test_rmode[0])
|
if(test_rmode[0])
|
begin
|
begin
|
$display("\n+++++ ROUNDING MODE: Nearest Even\n\n");
|
$display("\n+++++ ROUNDING MODE: Nearest Even\n\n");
|
|
|
if(test_sel[0])
|
if(test_sel[0])
|
begin
|
begin
|
$display("\nRunning Pat 0 Test ...\n");
|
$display("\nRunning Pat 0 Test ...\n");
|
$readmemh ("test_vectors/rtne/i2f_pat0.hex", tmem);
|
$readmemh ("test_vectors/rtne/i2f_pat0.hex", tmem);
|
run_test;
|
run_test;
|
end
|
end
|
|
|
if(test_sel[1])
|
if(test_sel[1])
|
begin
|
begin
|
$display("\nRunning Pat 1 Test ...\n");
|
$display("\nRunning Pat 1 Test ...\n");
|
$readmemh ("test_vectors/rtne/i2f_pat1.hex", tmem);
|
$readmemh ("test_vectors/rtne/i2f_pat1.hex", tmem);
|
run_test;
|
run_test;
|
end
|
end
|
|
|
if(test_sel[2])
|
if(test_sel[2])
|
begin
|
begin
|
$display("\nRunning Pat 2 Test ...\n");
|
$display("\nRunning Pat 2 Test ...\n");
|
$readmemh ("test_vectors/rtne/i2f_pat2.hex", tmem);
|
$readmemh ("test_vectors/rtne/i2f_pat2.hex", tmem);
|
run_test;
|
run_test;
|
end
|
end
|
|
|
if(test_sel[3])
|
if(test_sel[3])
|
begin
|
begin
|
$display("\nRunning Random Lg. Num Test ...\n");
|
$display("\nRunning Random Lg. Num Test ...\n");
|
$readmemh ("test_vectors/rtne/i2f_lg.hex", tmem);
|
$readmemh ("test_vectors/rtne/i2f_lg.hex", tmem);
|
run_test;
|
run_test;
|
end
|
end
|
|
|
if(test_sel[4])
|
if(test_sel[4])
|
begin
|
begin
|
$display("\nRunning Random Sm. Num Test ...\n");
|
$display("\nRunning Random Sm. Num Test ...\n");
|
$readmemh ("test_vectors/rtne/i2f_sm.hex", tmem);
|
$readmemh ("test_vectors/rtne/i2f_sm.hex", tmem);
|
run_test;
|
run_test;
|
end
|
end
|
end
|
end
|
|
|
if(test_rmode[1])
|
if(test_rmode[1])
|
begin
|
begin
|
$display("\n\n+++++ ROUNDING MODE: Towards Zero\n\n");
|
$display("\n\n+++++ ROUNDING MODE: Towards Zero\n\n");
|
|
|
if(test_sel[0])
|
if(test_sel[0])
|
begin
|
begin
|
$display("\nRunning Pat 0 Test ...\n");
|
$display("\nRunning Pat 0 Test ...\n");
|
$readmemh ("test_vectors/rtzero/i2f_pat0.hex", tmem);
|
$readmemh ("test_vectors/rtzero/i2f_pat0.hex", tmem);
|
run_test;
|
run_test;
|
end
|
end
|
|
|
if(test_sel[1])
|
if(test_sel[1])
|
begin
|
begin
|
$display("\nRunning Pat 1 Test ...\n");
|
$display("\nRunning Pat 1 Test ...\n");
|
$readmemh ("test_vectors/rtzero/i2f_pat1.hex", tmem);
|
$readmemh ("test_vectors/rtzero/i2f_pat1.hex", tmem);
|
run_test;
|
run_test;
|
end
|
end
|
|
|
if(test_sel[2])
|
if(test_sel[2])
|
begin
|
begin
|
$display("\nRunning Pat 2 Test ...\n");
|
$display("\nRunning Pat 2 Test ...\n");
|
$readmemh ("test_vectors/rtzero/i2f_pat2.hex", tmem);
|
$readmemh ("test_vectors/rtzero/i2f_pat2.hex", tmem);
|
run_test;
|
run_test;
|
end
|
end
|
|
|
if(test_sel[3])
|
if(test_sel[3])
|
begin
|
begin
|
$display("\nRunning Random Lg. Num Test ...\n");
|
$display("\nRunning Random Lg. Num Test ...\n");
|
$readmemh ("test_vectors/rtzero/i2f_lg.hex", tmem);
|
$readmemh ("test_vectors/rtzero/i2f_lg.hex", tmem);
|
run_test;
|
run_test;
|
end
|
end
|
|
|
if(test_sel[4])
|
if(test_sel[4])
|
begin
|
begin
|
$display("\nRunning Random Sm. Num Test ...\n");
|
$display("\nRunning Random Sm. Num Test ...\n");
|
$readmemh ("test_vectors/rtzero/i2f_sm.hex", tmem);
|
$readmemh ("test_vectors/rtzero/i2f_sm.hex", tmem);
|
run_test;
|
run_test;
|
end
|
end
|
end
|
end
|
|
|
if(test_rmode[2])
|
if(test_rmode[2])
|
begin
|
begin
|
$display("\n\n+++++ ROUNDING MODE: Towards INF+ (UP)\n\n");
|
$display("\n\n+++++ ROUNDING MODE: Towards INF+ (UP)\n\n");
|
|
|
if(test_sel[0])
|
if(test_sel[0])
|
begin
|
begin
|
$display("\nRunning Pat 0 Test ...\n");
|
$display("\nRunning Pat 0 Test ...\n");
|
$readmemh ("test_vectors/rup/i2f_pat0.hex", tmem);
|
$readmemh ("test_vectors/rup/i2f_pat0.hex", tmem);
|
run_test;
|
run_test;
|
end
|
end
|
|
|
if(test_sel[1])
|
if(test_sel[1])
|
begin
|
begin
|
$display("\nRunning Pat 1 Test ...\n");
|
$display("\nRunning Pat 1 Test ...\n");
|
$readmemh ("test_vectors/rup/i2f_pat1.hex", tmem);
|
$readmemh ("test_vectors/rup/i2f_pat1.hex", tmem);
|
run_test;
|
run_test;
|
end
|
end
|
|
|
if(test_sel[2])
|
if(test_sel[2])
|
begin
|
begin
|
$display("\nRunning Pat 2 Test ...\n");
|
$display("\nRunning Pat 2 Test ...\n");
|
$readmemh ("test_vectors/rup/i2f_pat2.hex", tmem);
|
$readmemh ("test_vectors/rup/i2f_pat2.hex", tmem);
|
run_test;
|
run_test;
|
end
|
end
|
|
|
if(test_sel[3])
|
if(test_sel[3])
|
begin
|
begin
|
$display("\nRunning Random Lg. Num Test ...\n");
|
$display("\nRunning Random Lg. Num Test ...\n");
|
$readmemh ("test_vectors/rup/i2f_lg.hex", tmem);
|
$readmemh ("test_vectors/rup/i2f_lg.hex", tmem);
|
run_test;
|
run_test;
|
end
|
end
|
|
|
if(test_sel[4])
|
if(test_sel[4])
|
begin
|
begin
|
$display("\nRunning Random Sm. Num Test ...\n");
|
$display("\nRunning Random Sm. Num Test ...\n");
|
$readmemh ("test_vectors/rup/i2f_sm.hex", tmem);
|
$readmemh ("test_vectors/rup/i2f_sm.hex", tmem);
|
run_test;
|
run_test;
|
end
|
end
|
|
|
end
|
end
|
|
|
if(test_rmode[3])
|
if(test_rmode[3])
|
begin
|
begin
|
$display("\n\n+++++ ROUNDING MODE: Towards INF- (DOWN)\n\n");
|
$display("\n\n+++++ ROUNDING MODE: Towards INF- (DOWN)\n\n");
|
|
|
if(test_sel[0])
|
if(test_sel[0])
|
begin
|
begin
|
$display("\nRunning Pat 0 Test ...\n");
|
$display("\nRunning Pat 0 Test ...\n");
|
$readmemh ("test_vectors/rdown/i2f_pat0.hex", tmem);
|
$readmemh ("test_vectors/rdown/i2f_pat0.hex", tmem);
|
run_test;
|
run_test;
|
end
|
end
|
|
|
if(test_sel[1])
|
if(test_sel[1])
|
begin
|
begin
|
$display("\nRunning Pat 1 Test ...\n");
|
$display("\nRunning Pat 1 Test ...\n");
|
$readmemh ("test_vectors/rdown/i2f_pat1.hex", tmem);
|
$readmemh ("test_vectors/rdown/i2f_pat1.hex", tmem);
|
run_test;
|
run_test;
|
end
|
end
|
|
|
if(test_sel[2])
|
if(test_sel[2])
|
begin
|
begin
|
$display("\nRunning Pat 2 Test ...\n");
|
$display("\nRunning Pat 2 Test ...\n");
|
$readmemh ("test_vectors/rdown/i2f_pat2.hex", tmem);
|
$readmemh ("test_vectors/rdown/i2f_pat2.hex", tmem);
|
run_test;
|
run_test;
|
end
|
end
|
|
|
if(test_sel[3])
|
if(test_sel[3])
|
begin
|
begin
|
$display("\nRunning Random Lg. Num Test ...\n");
|
$display("\nRunning Random Lg. Num Test ...\n");
|
$readmemh ("test_vectors/rdown/i2f_lg.hex", tmem);
|
$readmemh ("test_vectors/rdown/i2f_lg.hex", tmem);
|
run_test;
|
run_test;
|
end
|
end
|
|
|
if(test_sel[4])
|
if(test_sel[4])
|
begin
|
begin
|
$display("\nRunning Random Sm. Num Test ...\n");
|
$display("\nRunning Random Sm. Num Test ...\n");
|
$readmemh ("test_vectors/rdown/i2f_sm.hex", tmem);
|
$readmemh ("test_vectors/rdown/i2f_sm.hex", tmem);
|
run_test;
|
run_test;
|
end
|
end
|
end
|
end
|
end
|
end
|
|
|
|
|
if(fp_f2i)
|
if(fp_f2i)
|
begin
|
begin
|
|
|
$display("\n\nTesting FP F2I Unit\n");
|
$display("\n\nTesting FP F2I Unit\n");
|
|
|
if(test_rmode[0])
|
if(test_rmode[0])
|
begin
|
begin
|
$display("\n+++++ ROUNDING MODE: Nearest Even\n\n");
|
$display("\n+++++ ROUNDING MODE: Nearest Even\n\n");
|
|
|
if(test_sel[0])
|
if(test_sel[0])
|
begin
|
begin
|
$display("\nRunning Pat 0 Test ...\n");
|
$display("\nRunning Pat 0 Test ...\n");
|
$readmemh ("test_vectors/rtne/f2i_pat0.hex", tmem);
|
$readmemh ("test_vectors/rtne/f2i_pat0.hex", tmem);
|
run_test;
|
run_test;
|
end
|
end
|
|
|
if(test_sel[1])
|
if(test_sel[1])
|
begin
|
begin
|
$display("\nRunning Pat 1 Test ...\n");
|
$display("\nRunning Pat 1 Test ...\n");
|
$readmemh ("test_vectors/rtne/f2i_pat1.hex", tmem);
|
$readmemh ("test_vectors/rtne/f2i_pat1.hex", tmem);
|
run_test;
|
run_test;
|
end
|
end
|
|
|
if(test_sel[2])
|
if(test_sel[2])
|
begin
|
begin
|
$display("\nRunning Pat 2 Test ...\n");
|
$display("\nRunning Pat 2 Test ...\n");
|
$readmemh ("test_vectors/rtne/f2i_pat2.hex", tmem);
|
$readmemh ("test_vectors/rtne/f2i_pat2.hex", tmem);
|
run_test;
|
run_test;
|
end
|
end
|
|
|
if(test_sel[3])
|
if(test_sel[3])
|
begin
|
begin
|
$display("\nRunning Random Lg. Num Test ...\n");
|
$display("\nRunning Random Lg. Num Test ...\n");
|
$readmemh ("test_vectors/rtne/f2i_lg.hex", tmem);
|
$readmemh ("test_vectors/rtne/f2i_lg.hex", tmem);
|
run_test;
|
run_test;
|
end
|
end
|
|
|
if(test_sel[4])
|
if(test_sel[4])
|
begin
|
begin
|
$display("\nRunning Random Sm. Num Test ...\n");
|
$display("\nRunning Random Sm. Num Test ...\n");
|
$readmemh ("test_vectors/rtne/f2i_sm.hex", tmem);
|
$readmemh ("test_vectors/rtne/f2i_sm.hex", tmem);
|
run_test;
|
run_test;
|
end
|
end
|
end
|
end
|
|
|
if(test_rmode[1])
|
if(test_rmode[1])
|
begin
|
begin
|
$display("\n\n+++++ ROUNDING MODE: Towards Zero\n\n");
|
$display("\n\n+++++ ROUNDING MODE: Towards Zero\n\n");
|
|
|
if(test_sel[0])
|
if(test_sel[0])
|
begin
|
begin
|
$display("\nRunning Pat 0 Test ...\n");
|
$display("\nRunning Pat 0 Test ...\n");
|
$readmemh ("test_vectors/rtzero/f2i_pat0.hex", tmem);
|
$readmemh ("test_vectors/rtzero/f2i_pat0.hex", tmem);
|
run_test;
|
run_test;
|
end
|
end
|
|
|
if(test_sel[1])
|
if(test_sel[1])
|
begin
|
begin
|
$display("\nRunning Pat 1 Test ...\n");
|
$display("\nRunning Pat 1 Test ...\n");
|
$readmemh ("test_vectors/rtzero/f2i_pat1.hex", tmem);
|
$readmemh ("test_vectors/rtzero/f2i_pat1.hex", tmem);
|
run_test;
|
run_test;
|
end
|
end
|
|
|
if(test_sel[2])
|
if(test_sel[2])
|
begin
|
begin
|
$display("\nRunning Pat 2 Test ...\n");
|
$display("\nRunning Pat 2 Test ...\n");
|
$readmemh ("test_vectors/rtzero/f2i_pat2.hex", tmem);
|
$readmemh ("test_vectors/rtzero/f2i_pat2.hex", tmem);
|
run_test;
|
run_test;
|
end
|
end
|
|
|
if(test_sel[3])
|
if(test_sel[3])
|
begin
|
begin
|
$display("\nRunning Random Lg. Num Test ...\n");
|
$display("\nRunning Random Lg. Num Test ...\n");
|
$readmemh ("test_vectors/rtzero/f2i_lg.hex", tmem);
|
$readmemh ("test_vectors/rtzero/f2i_lg.hex", tmem);
|
run_test;
|
run_test;
|
end
|
end
|
|
|
if(test_sel[4])
|
if(test_sel[4])
|
begin
|
begin
|
$display("\nRunning Random Sm. Num Test ...\n");
|
$display("\nRunning Random Sm. Num Test ...\n");
|
$readmemh ("test_vectors/rtzero/f2i_sm.hex", tmem);
|
$readmemh ("test_vectors/rtzero/f2i_sm.hex", tmem);
|
run_test;
|
run_test;
|
end
|
end
|
end
|
end
|
|
|
if(test_rmode[2])
|
if(test_rmode[2])
|
begin
|
begin
|
$display("\n\n+++++ ROUNDING MODE: Towards INF+ (UP)\n\n");
|
$display("\n\n+++++ ROUNDING MODE: Towards INF+ (UP)\n\n");
|
|
|
if(test_sel[0])
|
if(test_sel[0])
|
begin
|
begin
|
$display("\nRunning Pat 0 Test ...\n");
|
$display("\nRunning Pat 0 Test ...\n");
|
$readmemh ("test_vectors/rup/f2i_pat0.hex", tmem);
|
$readmemh ("test_vectors/rup/f2i_pat0.hex", tmem);
|
run_test;
|
run_test;
|
end
|
end
|
|
|
if(test_sel[1])
|
if(test_sel[1])
|
begin
|
begin
|
$display("\nRunning Pat 1 Test ...\n");
|
$display("\nRunning Pat 1 Test ...\n");
|
$readmemh ("test_vectors/rup/f2i_pat1.hex", tmem);
|
$readmemh ("test_vectors/rup/f2i_pat1.hex", tmem);
|
run_test;
|
run_test;
|
end
|
end
|
|
|
if(test_sel[2])
|
if(test_sel[2])
|
begin
|
begin
|
$display("\nRunning Pat 2 Test ...\n");
|
$display("\nRunning Pat 2 Test ...\n");
|
$readmemh ("test_vectors/rup/f2i_pat2.hex", tmem);
|
$readmemh ("test_vectors/rup/f2i_pat2.hex", tmem);
|
run_test;
|
run_test;
|
end
|
end
|
|
|
if(test_sel[3])
|
if(test_sel[3])
|
begin
|
begin
|
$display("\nRunning Random Lg. Num Test ...\n");
|
$display("\nRunning Random Lg. Num Test ...\n");
|
$readmemh ("test_vectors/rup/f2i_lg.hex", tmem);
|
$readmemh ("test_vectors/rup/f2i_lg.hex", tmem);
|
run_test;
|
run_test;
|
end
|
end
|
|
|
if(test_sel[4])
|
if(test_sel[4])
|
begin
|
begin
|
$display("\nRunning Random Sm. Num Test ...\n");
|
$display("\nRunning Random Sm. Num Test ...\n");
|
$readmemh ("test_vectors/rup/f2i_sm.hex", tmem);
|
$readmemh ("test_vectors/rup/f2i_sm.hex", tmem);
|
run_test;
|
run_test;
|
end
|
end
|
|
|
end
|
end
|
|
|
if(test_rmode[3])
|
if(test_rmode[3])
|
begin
|
begin
|
$display("\n\n+++++ ROUNDING MODE: Towards INF- (DOWN)\n\n");
|
$display("\n\n+++++ ROUNDING MODE: Towards INF- (DOWN)\n\n");
|
|
|
if(test_sel[0])
|
if(test_sel[0])
|
begin
|
begin
|
$display("\nRunning Pat 0 Test ...\n");
|
$display("\nRunning Pat 0 Test ...\n");
|
$readmemh ("test_vectors/rdown/f2i_pat0.hex", tmem);
|
$readmemh ("test_vectors/rdown/f2i_pat0.hex", tmem);
|
run_test;
|
run_test;
|
end
|
end
|
|
|
if(test_sel[1])
|
if(test_sel[1])
|
begin
|
begin
|
$display("\nRunning Pat 1 Test ...\n");
|
$display("\nRunning Pat 1 Test ...\n");
|
$readmemh ("test_vectors/rdown/f2i_pat1.hex", tmem);
|
$readmemh ("test_vectors/rdown/f2i_pat1.hex", tmem);
|
run_test;
|
run_test;
|
end
|
end
|
|
|
if(test_sel[2])
|
if(test_sel[2])
|
begin
|
begin
|
$display("\nRunning Pat 2 Test ...\n");
|
$display("\nRunning Pat 2 Test ...\n");
|
$readmemh ("test_vectors/rdown/f2i_pat2.hex", tmem);
|
$readmemh ("test_vectors/rdown/f2i_pat2.hex", tmem);
|
run_test;
|
run_test;
|
end
|
end
|
|
|
if(test_sel[3])
|
if(test_sel[3])
|
begin
|
begin
|
$display("\nRunning Random Lg. Num Test ...\n");
|
$display("\nRunning Random Lg. Num Test ...\n");
|
$readmemh ("test_vectors/rdown/f2i_lg.hex", tmem);
|
$readmemh ("test_vectors/rdown/f2i_lg.hex", tmem);
|
run_test;
|
run_test;
|
end
|
end
|
|
|
if(test_sel[4])
|
if(test_sel[4])
|
begin
|
begin
|
$display("\nRunning Random Sm. Num Test ...\n");
|
$display("\nRunning Random Sm. Num Test ...\n");
|
$readmemh ("test_vectors/rdown/f2i_sm.hex", tmem);
|
$readmemh ("test_vectors/rdown/f2i_sm.hex", tmem);
|
run_test;
|
run_test;
|
end
|
end
|
end
|
end
|
end
|
end
|
|
|