deleted extra files
diff --git "a/verilog/rtl/attachments\0501\051/add_sub.sv" "b/verilog/rtl/attachments\0501\051/add_sub.sv"
deleted file mode 100644
index 1c159f4..0000000
--- "a/verilog/rtl/attachments\0501\051/add_sub.sv"
+++ /dev/null
@@ -1,171 +0,0 @@
-//`include "fpu_lib.sv"
-
-module add_sub( 
-  input  wire [31:0] in_x,
-  input  wire [31:0] in_y,
-  input  wire        operation,
-  input  wire [2:0]  round_mode,
-  output wire [31:0] out_z,
-  output wire [4:0]  exceptions);
-
-  wire        sign_x, sign_y;
-  wire [7:0]  exp_x, exp_y, exp_a, exp_b, subnorm_exp, norm_exp;
-  wire [22:0] mant_x, mant_y, mant_a, mant_b;
-
-  wire        x_is_zero, x_is_inf, x_is_qNaN, x_is_sNaN;
-  wire        y_is_zero, y_is_inf, y_is_qNaN, y_is_sNaN;
-  wire        a_is_subnorm, b_is_subnorm;
-  wire        hd_bit_a, hd_bit_b;
-
-  wire [26:0] arg1, arg2;
-  wire [26:0] rt_shift_mant;
-  wire [26:0] lt_shft_mant, norm_sum;
-  wire [26:0] mant_sum;
-  wire [23:0] rounded_mant;
-  wire [31:0] inter_result, of_result;
-
-  wire        comp, exp_shft_comp;
-  wire        operator_y, subtract;
-  wire        cout, cout_check;
-
-  wire [7:0]  exp_diff;
-  wire [4:0]  ld_zero_cnt, inc_dec_exp_amt;
-  wire [7:0]  inter_shft_amt, shft_amt;
-  wire        round_of;
-
-  wire        sign_z;
-  wire [7:0]  exp_z;
-  wire [22:0] mant_z;
-	
-  wire        invalid_operation;
-  wire        divide_by_zero;
-  wire        overflow;
-  wire        underflow;
-  wire        inexact;
-  wire [9:0]  x_check_res, y_check_res;
-
-  // checking inputs for special values
-  special_check #(8, 24) check_x (.in(in_x), .result(x_check_res));
-  special_check #(8, 24) check_y (.in(in_y), .result(y_check_res));
-
-  assign x_is_zero = x_check_res[3] | x_check_res[4];
-  assign x_is_inf  = x_check_res[0] | x_check_res[7];
-  assign x_is_qNaN = x_check_res[9];
-  assign x_is_sNaN = x_check_res[8];
-
-  assign y_is_zero = y_check_res[3] | y_check_res[4];
-  assign y_is_inf  = y_check_res[0] | y_check_res[7];
-  assign y_is_qNaN = y_check_res[9];
-  assign y_is_sNaN = y_check_res[8];
-
-  // unpacking inputs
-  assign sign_x = in_x[31];
-  assign sign_y = in_y[31];
-  assign exp_x  = in_x[30:23];
-  assign exp_y  = in_y[30:23];
-  assign mant_x = in_x[22:0];
-  assign mant_y = in_y[22:0];
-
-  // comparing both numbers
-  assign comp = (exp_y > exp_x) ? 1'b1 : (exp_y != exp_x) ? 1'b0 : (mant_y > mant_x);
-
-  // determining operation to be performed
-  assign operator_y = sign_y ^ operation;
-  assign subtract   = sign_x ^ operator_y;
-
-  // determining output sign
-  assign sign_z = x_is_zero ? (operator_y) : (y_is_zero ? sign_x : 
-                  (subtract ? (comp ? operator_y : sign_x) : sign_x));
-	
-  // swapping operands
-  assign {exp_a, mant_a} = comp ? {exp_y, mant_y} : {exp_x, mant_x};
-  assign {exp_b, mant_b} = comp ? {exp_x, mant_x} : {exp_y, mant_y};
-
-  // checking for subnormal numbers
-  assign a_is_subnorm = (|exp_a == 0);
-  assign b_is_subnorm = (|exp_b == 0);
-
-  // checking difference in exponents
-  assign exp_diff = (a_is_subnorm | b_is_subnorm) & (exp_a != exp_b) ? (exp_a - exp_b - 1) 
-                    : (exp_a - exp_b);
-
-  // generating hidden bits
-  assign hd_bit_a = !a_is_subnorm;
-  assign hd_bit_b = !b_is_subnorm;
-	
-  // right shifting mantissa to make exponents equal
-  right_shifter exp_equalizer (.mantisa({hd_bit_b, mant_b, 3'b000}), .shift_amount(exp_diff), 
-                               .out(rt_shift_mant));
-	
-  // computing sum of the mantissas
-  assign arg1 = {hd_bit_a, mant_a, 3'b0};
-  assign arg2 = subtract ? (~rt_shift_mant + 27'b1) : rt_shift_mant;
-
-  assign {cout, mant_sum} = {1'b0,arg1} + {1'b0,arg2};
-  assign cout_check       = cout & ~subtract;
-
-  leading_zero norm_dist_checker (.in(mant_sum[26:3]), .out(ld_zero_cnt));
-	
-  // computing the shift amount
-  assign inter_shft_amt = a_is_subnorm ? 8'b0 : {3'b0, ld_zero_cnt};
-  assign exp_shft_comp  = (exp_a <= inter_shft_amt);
-  assign shft_amt       = exp_shft_comp ? (exp_a - |exp_a) : inter_shft_amt;
-
-  left_shifter #(27) norm_shifter (.mantisa(mant_sum), .shift_amount(shft_amt), 
-                             .out(lt_shft_mant));
-
-  // determining the exponent increment/decrement
-  assign norm_sum        = cout_check ? {cout, mant_sum[26:2], |mant_sum[1:0]} : lt_shft_mant;
-  assign inc_dec_exp_amt = a_is_subnorm ? 5'b0 : cout_check ? 5'b1 : shft_amt;
-	
-  rounding add_sub_rounder (.sign(sign_z), .mantisa(norm_sum), .round_mode(round_mode), 
-                            .rounded_mantisa(rounded_mant), .rounding_overflow(round_of));
-
-  // determine exponent in case of normal numbers
-  assign norm_exp = cout_check ? (exp_a + inc_dec_exp_amt + round_of) : 
-                    (exp_a - inc_dec_exp_amt + round_of);
-
-  // determine exponent in case of subnormal numbers
-  assign subnorm_exp = (rounded_mant[23] & !(|norm_exp)) ? 8'b1 : 
-                       (norm_exp - ((hd_bit_a | hd_bit_b) & exp_shft_comp & !rounded_mant[23]));
-	
-  assign {exp_z, mant_z} = x_is_zero ? {exp_y, mant_y} : (y_is_zero ? {exp_x, mant_x} : 
-                           ((mant_x == mant_y) & (exp_x == exp_y) & subtract ? 'd0 : 
-                           {subnorm_exp, rounded_mant[22:0]}));
-
-  // result check for special numbers
-  assign inter_result = (x_is_qNaN | y_is_qNaN) ? {1'h0, 8'hff, 23'h400000} : 
-                        ((x_is_inf | y_is_inf) ? {sign_z, 8'hff, 23'h0} : ((exp_z == 8'hff) ? 
-                        {sign_z, exp_z, 23'd0} : {sign_z, exp_z, mant_z}));
-
-  assign invalid_operation = !(x_is_qNaN | y_is_qNaN) & (x_is_inf & y_is_inf & subtract) | 
-                               x_is_sNaN | y_is_sNaN;
-
-  // does not occur in addition subtraction
-  assign divide_by_zero = 0;
-
-  assign overflow = !(x_is_qNaN | y_is_qNaN) & &exp_z & !(x_is_inf | y_is_inf | x_is_qNaN | 
-                      y_is_qNaN | x_is_sNaN | y_is_sNaN);
-	
-  // determining result in case of overflow
-  assign of_result = ({32{(round_mode == 3'h0) | (round_mode == 3'h4)}} & {sign_z, 8'hff, 23'h0}) |
-                     ({32{round_mode == 3'h1}} & {sign_z, 8'hfe, 23'h7fffff}) |
-                     ({32{round_mode == 3'h2}} & (sign_z ? {1'h1, 8'hff, 23'h0} : 
-                                                 {1'h0, 8'hfe, 23'h7fffff})) |
-                     ({32{round_mode == 3'h3}} & (sign_z ? {1'h1, 8'hfe, 23'h7fffff} : 
-                                                 {1'h0, 8'hff, 23'h0}));
-
-  // does not occur in addition subtraction
-  assign underflow = 0;
-
-  assign inexact = !(x_is_qNaN | y_is_qNaN) & (|norm_sum[2:0] | overflow | underflow) & 
-                   !(x_is_zero | y_is_zero | x_is_qNaN | y_is_qNaN | x_is_sNaN | y_is_sNaN | 
-                     x_is_inf  | y_is_inf);
-
-  assign exceptions = {invalid_operation, divide_by_zero, overflow, underflow, inexact};
-
-  // assign output
-  assign out_z = overflow ? of_result : underflow ? 32'd0 : invalid_operation ? 
-                 {1'h0, 8'hff, 23'h400000} : inter_result;
-
-endmodule
diff --git "a/verilog/rtl/attachments\0501\051/compare.sv" "b/verilog/rtl/attachments\0501\051/compare.sv"
deleted file mode 100644
index 3c74700..0000000
--- "a/verilog/rtl/attachments\0501\051/compare.sv"
+++ /dev/null
@@ -1,87 +0,0 @@
-//`include "fpu_lib.sv"
-
-module compare#(parameter exp_width = 8, parameter mant_width = 24)
-(
-  input  wire [(exp_width + mant_width)-1:0]  a,
-  input  wire [(exp_width + mant_width)-1:0]  b,
-  input  wire [1:0]                           op, 
-
-  output wire [(exp_width + mant_width)-1:0]  out,
-  output wire [4:0]                           exceptions 
-);
-  wire lt, gt, eq, unordered;
-  wire                    sign_a, sign_b;
-  wire [exp_width-1:0]    exp_a, exp_b;
-  wire [mant_width-2:0]   mant_a, mant_b;
-
-  wire is_a_zero, is_a_inf, is_a_qNaN, is_a_sNaN;
-  wire is_b_zero, is_b_inf, is_b_qNaN, is_b_sNaN;
-  wire both_inf, both_zero;
-  wire ordered, exp_equal;
-  wire lt_mag, eq_mag, ordered_eq, ordered_lt;
-  wire invalid, div_by_zero, overflow, underflow, inexact;
-  wire [9:0] spec_value_chk_a, spec_value_chk_b;
-
-
-// extracting sign,exponent and mantissa of numbers
-  assign {sign_a,exp_a,mant_a} = a;
-  assign {sign_b,exp_b,mant_b} = b;
-
-// module to check for special values
-  special_check #(exp_width,mant_width) special_check_a (.in (a), .result(spec_value_chk_a));
-  special_check #(exp_width,mant_width) special_check_b (.in (b), .result(spec_value_chk_b));
-
-  assign is_a_zero = spec_value_chk_a[3] | spec_value_chk_a[4];
-  assign is_a_inf  = spec_value_chk_a[0] | spec_value_chk_a[7];
-  assign is_a_qNaN = spec_value_chk_a[9];
-  assign is_a_sNaN = spec_value_chk_a[8];
-
-  assign is_b_zero = spec_value_chk_b[3] | spec_value_chk_b[4];
-  assign is_b_inf  = spec_value_chk_b[0] | spec_value_chk_b[7];
-  assign is_b_qNaN = spec_value_chk_b[9];
-  assign is_b_sNaN = spec_value_chk_b[8];
-
-// check if inputs are valid or not
-  assign ordered     = !(is_a_qNaN || is_b_qNaN) && !(is_a_sNaN || is_b_sNaN);  
-  assign both_inf    = is_a_inf  && is_b_inf;
-  assign both_zero   = is_a_zero && is_b_zero;
-
-// comparison of exponents
-  assign exp_equal   = (exp_a == exp_b);
-
-// comparison of mantissas
-  assign lt_mag      = (exp_a < exp_b) || (exp_equal && (mant_a < mant_b));
-  assign eq_mag      = exp_equal && (mant_a == mant_b);
-
-// valid inputs and equal
-  assign ordered_eq  = both_zero  || (sign_a == sign_b)   && (both_inf || eq_mag);
-
-// valid inputs and a is less than b  
-  assign ordered_lt  = !both_zero && ((sign_a && !sign_b) || (!both_inf && ((sign_a && !lt_mag && ! eq_mag) 
-                       || (!sign_b && lt_mag))));
-
-  assign lt          = ordered && ordered_lt;
-  assign eq          = ordered && ordered_eq;
-  assign gt          = ordered && !ordered_eq && !ordered_lt;
-
-// invalid exception would be generated if any or both numbers are NaN  
-  assign invalid     = is_a_sNaN || is_b_sNaN || ((is_a_qNaN || is_b_qNaN) && !(op == 3'b010));
-
-
-// unordered flag is set to high if any or both inputs are NaN  
-  assign unordered   = !ordered;
-
-// hardwired exceptions that cannot be flagged in comparator
-  assign div_by_zero = 1'b0;
-  assign overflow    = 1'b0;
-  assign underflow   = 1'b0;
-  assign inexact     = 1'b0;
-
-  assign exceptions  = {invalid, div_by_zero, overflow, underflow, inexact};    
-
-
-  assign out         = ({32{op == 3'b10}} & {31'b0,eq})                              |
-                       ({32{op == 3'b01}} & {31'b0,lt})                              |
-                       ({32{op == 3'b00}} & ({31'b0,lt} | {31'b0,eq}));
-
-endmodule
diff --git "a/verilog/rtl/attachments\0501\051/config.tcl" "b/verilog/rtl/attachments\0501\051/config.tcl"
deleted file mode 100644
index 80904ef..0000000
--- "a/verilog/rtl/attachments\0501\051/config.tcl"
+++ /dev/null
@@ -1,69 +0,0 @@
-# SPDX-FileCopyrightText: 2020 Efabless Corporation
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-# SPDX-License-Identifier: Apache-2.0
-
-# Base Configurations. Don't Touch
-# section begin
-set script_dir [file dirname [file normalize [info script]]]
-
-source $script_dir/../../caravel/openlane/user_project_wrapper_empty/fixed_wrapper_cfgs.tcl
-
-set ::env(DESIGN_NAME) user_project_wrapper
-#section end
-
-# User Configurations
-
-## Source Verilog Files
-set ::env(VERILOG_FILES) "\
-	$script_dir/../../caravel/verilog/rtl/defines.v \
-	$script_dir/../../verilog/rtl/user_project_wrapper.v"
-
-## Clock configurations
-set ::env(CLOCK_PORT) "user_clock2"
-set ::env(CLOCK_NET) "mprj.clk"
-
-set ::env(CLOCK_PERIOD) "20"
-
-## Internal Macros
-### Macro Placement
-set ::env(MACRO_PLACEMENT_CFG) $script_dir/macro.cfg
-
-### Black-box verilog and views
-set ::env(VERILOG_FILES_BLACKBOX) "\
-	$script_dir/../../caravel/verilog/rtl/defines.v \
-	$script_dir/../../verilog/rtl/user_project_example.sv"
-
-set ::env(EXTRA_LEFS) "\
-	$script_dir/../../lef/user_proj_example.lef"
-
-set ::env(EXTRA_GDS_FILES) "\
-	$script_dir/../../gds/user_proj_example.gds"
-
-set ::env(GLB_RT_MAXLAYER) 5
-
-set ::env(FP_PDN_CHECK_NODES) 0
-
-# The following is because there are no std cells in the example wrapper project.
-set ::env(SYNTH_TOP_LEVEL) 1
-set ::env(PL_RANDOM_GLB_PLACEMENT) 1
-
-set ::env(PL_RESIZER_DESIGN_OPTIMIZATIONS) 0
-set ::env(PL_RESIZER_TIMING_OPTIMIZATIONS) 0
-set ::env(PL_RESIZER_BUFFER_INPUT_PORTS) 0
-set ::env(PL_RESIZER_BUFFER_OUTPUT_PORTS) 0
-
-set ::env(DIODE_INSERTION_STRATEGY) 0
-set ::env(FILL_INSERTION) 0
-set ::env(TAP_DECAP_INSERTION) 0
-set ::env(CLOCK_TREE_SYNTH) 0
diff --git "a/verilog/rtl/attachments\0501\051/config_1.tcl" "b/verilog/rtl/attachments\0501\051/config_1.tcl"
deleted file mode 100644
index 12f5d47..0000000
--- "a/verilog/rtl/attachments\0501\051/config_1.tcl"
+++ /dev/null
@@ -1,42 +0,0 @@
-# SPDX-FileCopyrightText: 2020 Efabless Corporation
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-# SPDX-License-Identifier: Apache-2.0
-
-set script_dir [file dirname [file normalize [info script]]]
-
-set ::env(DESIGN_NAME) user_proj_example
-
-set ::env(VERILOG_FILES) "\
-	$script_dir/../../caravel/verilog/rtl/defines.v \
-	$script_dir/../../verilog/rtl/user_project_example.sv"
-
-set ::env(CLOCK_PORT) ""
-set ::env(CLOCK_NET) "seq_det.clk"
-set ::env(CLOCK_PERIOD) "10"
-
-set ::env(FP_SIZING) absolute
-set ::env(DIE_AREA) "0 0 900 600"
-set ::env(DESIGN_IS_CORE) 0
-
-set ::env(VDD_NETS) [list {vccd1} {vccd2} {vdda1} {vdda2}]
-set ::env(GND_NETS) [list {vssd1} {vssd2} {vssa1} {vssa2}]
-
-set ::env(FP_PIN_ORDER_CFG) $script_dir/pin_order.cfg
-
-set ::env(PL_BASIC_PLACEMENT) 1
-set ::env(PL_TARGET_DENSITY) 0.1
-set ::env(CLOCK_TREE_SYNTH) 0
-
-# If you're going to use multiple power domains, then keep this disabled.
-set ::env(RUN_CVC) 1
diff --git "a/verilog/rtl/attachments\0501\051/defines.v" "b/verilog/rtl/attachments\0501\051/defines.v"
deleted file mode 100644
index 3c9e595..0000000
--- "a/verilog/rtl/attachments\0501\051/defines.v"
+++ /dev/null
@@ -1,43 +0,0 @@
-// SPDX-FileCopyrightText: 2020 Efabless Corporation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//      http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-// SPDX-License-Identifier: Apache-2.0
-
-`default_nettype none
-// Global parameters
-
-`define MPRJ_IO_PADS 38
-`define MPRJ_PWR_PADS 4		/* vdda1, vccd1, vdda2, vccd2 */
-
-// Size of soc_mem_synth
-
-// Type and size of soc_mem
-// `define USE_OPENRAM
-`define USE_CUSTOM_DFFRAM
-// don't change the following without double checking addr widths
-`define MEM_WORDS 256
-
-// Number of columns in the custom memory; takes one of three values:
-// 1 column : 1 KB, 2 column: 2 KB, 4 column: 4KB
-`define COLS 1
-
-// not really parameterized but just to easily keep track of the number
-// of ram_block across different modules
-`define RAM_BLOCKS 2
-
-// Clock divisor default value
-`define CLK_DIV 3'b010
-
-// GPIO conrol default mode and enable
-`define DM_INIT 3'b110
-`define OENB_INIT 1'b1
\ No newline at end of file
diff --git "a/verilog/rtl/attachments\0501\051/defs.vi" "b/verilog/rtl/attachments\0501\051/defs.vi"
deleted file mode 100644
index 0d545af..0000000
--- "a/verilog/rtl/attachments\0501\051/defs.vi"
+++ /dev/null
@@ -1,23 +0,0 @@
-

-`define flControl_default `flControl_tininessAfterRounding

-

-`define HardFloat_propagateNaNPayloads

-

-`define HardFloat_signDefaultNaN 0

-`define HardFloat_fractDefaultNaN(sigWidth) {1'b1, {((sigWidth) - 2){1'b0}}}

-

-`define round_near_even   3'b000

-`define round_minMag      3'b001

-`define round_min         3'b010

-`define round_max         3'b011

-`define round_near_maxMag 3'b100

-`define round_odd         3'b110

-

-`define floatControlWidth 1

-`define flControl_tininessBeforeRounding 1'b0

-`define flControl_tininessAfterRounding  1'b1

-

-`define flRoundOpt_sigMSBitAlwaysZero  1

-`define flRoundOpt_subnormsAlwaysExact 2

-`define flRoundOpt_neverUnderflows     4

-`define flRoundOpt_neverOverflows      8

diff --git "a/verilog/rtl/attachments\0501\051/divider.sv" "b/verilog/rtl/attachments\0501\051/divider.sv"
deleted file mode 100644
index 75871d6..0000000
--- "a/verilog/rtl/attachments\0501\051/divider.sv"
+++ /dev/null
@@ -1,166 +0,0 @@
-//`include "fpu_lib.sv" 
-
-module divider#( parameter exp_width = 8, parameter mant_width = 24, parameter options = 0) 
-(
-  input wire rst_l,
-  input wire clk,  
-  input wire in_valid,
-  input wire [(exp_width + mant_width)-1:0] a,
-  input wire [(exp_width + mant_width)-1:0] b,
-  input wire [2:0] round_mode,
-  input wire cancel,
-
-  output wire in_ready,
-  output wire out_valid,
-  output wire [(exp_width + mant_width)-1:0] out,
-  output wire [4:0] exceptions
-);
-
-function integer clog2;
-  input integer a;
-  
-  begin
-      a = a - 1;
-      for (clog2 = 0; a > 0; clog2 = clog2 + 1) a = a>>1;
-  end
-
-endfunction
-  
-  wire is_a_qNaN, is_a_inf, is_a_zero, is_a_sNaN, sign_a;
-	wire signed [(exp_width+1):0] sexp_a;
-	wire [mant_width:0] mant_a;
-  
-  wire is_b_qNaN, is_b_inf, is_b_zero, is_b_sNaN, sign_b;
-	wire signed [(exp_width+1):0] sexp_b;
-	wire [mant_width:0] mant_b;
-  wire [(exp_width + mant_width):0] oper1, oper2;
-	
-  wire [2:0] roundingModeOut;
-  wire invalid_excep;
-  wire infinite_excep;
-  wire is_out_NaN;
-  wire is_out_inf;
-  wire is_out_zero;
-  wire out_sign;
-  wire signed [(exp_width + 1):0] out_sexp;
-  wire [(mant_width + 2):0] out_mant;
-
-  wire not_sNaN_invalid_exc ;
-  wire major_excep;
-  wire is_res_NaN;
-  wire is_res_inf;
-  wire is_res_zero;
-  wire sign_res;
-  wire spec_case_a;
-  wire spec_case_b;
-  wire norm_case;
-  wire signed [(exp_width + 2):0] sexp_quot; 
-  wire signed [(exp_width + 1):0] s_sat_exp_quot;
-
-  wire [(clog2(mant_width + 3) - 1):0] cycle_num, cycle_num_in;
-  wire major_exc_z;
-  wire is_NaN_z, is_inf_z, is_zero_z, sign_z;
-  wire signed [(exp_width + 1):0] sexp_z;
-  wire [(mant_width - 2):0] mant_b_z;
-  wire [2:0] round_mode_z;
-  
-  wire [(mant_width + 1):0] rem_z, rem_z_in;
-  wire not_zero_rem_z;
-  wire [(mant_width + 1):0] mantx_z, mantx_z_in;
-  wire idle;
-  wire entering; 
-  wire entering_norm_case;
-  wire skipCycle2; 
-
-  wire [1:0] dec_hi_mant_a;
-  wire [(mant_width + 2):0] rem;
-  wire [mant_width:0] bit_mask;
-  wire [(mant_width + 1):0] trail_term;
-  wire signed [(mant_width + 3):0] trail_rem;
-  wire new_bit;
-  wire cancel_reset;
-
-  assign cancel_reset = rst_l & !cancel;
-  
-  exponent   #(exp_width, mant_width) exp_a   (.in(a), .out(oper1));
-  exponent   #(exp_width, mant_width) exp_b   (.in(b), .out(oper2));
-
-  mac_spec_check #(exp_width,mant_width ) mac_spec_check_a (.in(oper1), .is_qNaN (is_a_qNaN), .is_inf(is_a_inf), .is_zero(is_a_zero), 
-                                                          .is_sNaN(is_a_sNaN),.sign(sign_a), .s_exp(sexp_a), .sig(mant_a) );
-  
-
-  mac_spec_check #(exp_width,mant_width ) mac_spec_check_b (.in(oper2), .is_qNaN (is_b_qNaN), .is_inf(is_b_inf), .is_zero(is_b_zero), 
-                                                          .is_sNaN(is_b_sNaN),.sign(sign_b), .s_exp(sexp_b), .sig(mant_b) );
-
-  assign not_sNaN_invalid_exc = (is_a_zero && is_b_zero) || (is_a_inf && is_b_inf);
-  assign major_excep          = is_a_sNaN || is_b_sNaN || not_sNaN_invalid_exc || (!is_a_qNaN && !is_a_inf && is_b_zero);
-  assign is_res_NaN           = is_a_qNaN || is_b_qNaN || not_sNaN_invalid_exc;
-
-  assign is_res_inf           = is_a_inf  || is_b_zero;
-  assign is_res_zero          = is_a_zero || is_b_inf;
-  assign sign_res             = sign_a ^ sign_b;
-
-  assign spec_case_a          = is_a_qNaN || is_a_inf || is_a_zero;
-  assign spec_case_b          = is_b_qNaN || is_b_inf || is_b_zero;
-  assign norm_case            = !spec_case_a && !spec_case_b;
-  
-  assign sexp_quot            = sexp_a + {{3{sexp_b[exp_width]}}, ~sexp_b[(exp_width - 1):0]};
-  assign s_sat_exp_quot       = {(7<<(exp_width - 2) <= sexp_quot) ? 4'b0110 : 
-                                sexp_quot[(exp_width + 1):(exp_width - 2)], sexp_quot[(exp_width - 3): 0]};
-
-  assign idle                = (cycle_num == 0);
-  assign in_ready            = (cycle_num <= 1);
-  assign entering            = in_ready && in_valid;
-  assign entering_norm_case  = entering && norm_case;
-  assign skipCycle2          = (cycle_num == 3) && mantx_z[mant_width + 1];
-  
-  assign cycle_num_in = (entering && !norm_case ? 1 : 0)  
-                      | (entering_norm_case   ?  (mant_width + 2) : 0)
-                      | (!idle && !skipCycle2  ? cycle_num - 1 : 0)
-                      | (!idle &&  skipCycle2  ? 1            : 0);
-
-  rvdffe #(clog2(mant_width + 3)) cycle_num_ff (.clk(clk), .rst_l(cancel_reset), .din(cycle_num_in), .en(!idle || in_valid), .dout(cycle_num));
- 
-  rvdffe #(1) major_exc_z_ff (.clk(clk), .rst_l(cancel_reset), .din(major_excep), .en(entering), .dout(major_exc_z));
-  rvdffe #(1) is_NaN_z_ff (.clk(clk), .rst_l(cancel_reset), .din(is_res_NaN), .en(entering), .dout(is_NaN_z));
-  rvdffe #(1) is_inf_z_ff (.clk(clk), .rst_l(cancel_reset), .din(is_res_inf), .en(entering), .dout(is_inf_z));
-  rvdffe #(1) is_zero_z_ff (.clk(clk), .rst_l(cancel_reset), .din(is_res_zero), .en(entering), .dout(is_zero_z));
-  rvdffe #(1) sign_z_ff (.clk(clk), .rst_l(cancel_reset), .din(sign_res), .en(entering), .dout(sign_z));
-
-  rvdffe #((exp_width + 2)) sexp_z_ff (.clk(clk), .rst_l(cancel_reset), .din(s_sat_exp_quot), .en(entering_norm_case), .dout(sexp_z));
-  rvdffe #(3) round_mode_z_ff (.clk(clk), .rst_l(cancel_reset), .din(round_mode), .en(entering_norm_case), .dout(round_mode_z));
-  rvdffe #((mant_width - 1)) mant_b_z_ff (.clk(clk), .rst_l(cancel_reset), .din(mant_b[(mant_width - 2):0]), .en(entering_norm_case), .dout(mant_b_z));
-
-  assign dec_hi_mant_a        = mant_a[(mant_width - 1):(mant_width - 2)] - 1;
-  assign rem                  = (in_ready ? mant_a<<1 : 0) | (!in_ready ? rem_z<<1 : 0);
-  assign bit_mask             = ({{(mant_width + 2){1'b0}}, 1'b1}<<cycle_num)>>2;
-  assign trail_term           = ( in_ready ? mant_b<<1           : 0)
-                               |(!in_ready ? {1'b1, mant_b_z}<<1 : 0);
-  assign trail_rem            = rem - trail_term;
-  assign new_bit              = (0 <= trail_rem);
-  
-  assign rem_z_in = new_bit ? trail_rem : rem;
-  rvdffe #((mant_width + 2)) rem_z_ff (.clk(clk), .rst_l(cancel_reset), .din(rem_z_in), .en(entering_norm_case || (cycle_num > 2)), .dout(rem_z));
-  rvdffe #(1) not_zero_rem_z_ff (.clk(clk), .rst_l(cancel_reset), .din((trail_rem != 0)), .en(entering_norm_case || (!in_ready && new_bit)), .dout(not_zero_rem_z));
-
-  assign mantx_z_in = ( in_ready ? new_bit<<(mant_width + 1) : 0)
-                      | (!in_ready ? mantx_z | bit_mask       : 0);
-  rvdffe #((mant_width + 2)) mantx_z_ff (.clk(clk), .rst_l(cancel_reset), .din(mantx_z_in), .en(entering_norm_case || (!in_ready && new_bit)), .dout(mantx_z));
-
-  assign out_valid        = (cycle_num == 1);
-  assign roundingModeOut  = round_mode_z;
-  assign invalid_excep    = major_exc_z &&  is_NaN_z;
-  assign infinite_excep   = major_exc_z && !is_NaN_z;
-  assign is_out_NaN       = is_NaN_z;
-  assign is_out_inf       = is_inf_z;
-  assign is_out_zero      = is_zero_z;
-  assign out_sign         = sign_z;
-  assign out_sexp         = sexp_z;
-  assign out_mant         = {mantx_z, not_zero_rem_z};
-
-  round_excep #(exp_width, mant_width+2, exp_width,mant_width,0) round_exception 
-																							( .invalid_excep(invalid_excep), .infinite_excep(infinite_excep), .in_is_NaN(is_out_NaN), 
-																								.in_is_inf(is_out_inf), .in_is_zero(is_out_zero),.in_sign(out_sign),.in_sexp(out_sexp), 
-																								.in_mant(out_mant),.round_mode(round_mode), .result(out), .exceptions(exceptions));
-
-endmodule
diff --git "a/verilog/rtl/attachments\0501\051/f_class.sv" "b/verilog/rtl/attachments\0501\051/f_class.sv"
deleted file mode 100644
index 75a8fd4..0000000
--- "a/verilog/rtl/attachments\0501\051/f_class.sv"
+++ /dev/null
@@ -1,15 +0,0 @@
-// `include "fpu_lib.sv"
-
-module f_class #(parameter  exp_width = 8, parameter mant_width = 24) 
-(
-  input  wire [(exp_width + mant_width)-1:0] in,
-
-  output wire [31:0] result
-);
-  wire [9:0] value_check;
-
-  special_check special_chk (.in(in), .result(value_check));
-
-  assign result = {22'b0, value_check};
-  
-endmodule
diff --git "a/verilog/rtl/attachments\0501\051/float_to_int.sv" "b/verilog/rtl/attachments\0501\051/float_to_int.sv"
deleted file mode 100644
index 2766deb..0000000
--- "a/verilog/rtl/attachments\0501\051/float_to_int.sv"
+++ /dev/null
@@ -1,125 +0,0 @@
-//`include "fpu_lib.sv"
-
-module float_to_int#(   parameter exp_width = 8, parameter mant_width = 24, parameter int_width = 32)
-(
-  input  wire [(exp_width + mant_width)-1:0] num,
-  input  wire [2:0] round_mode,
-  input  wire signed_out,
-  output wire [(int_width - 1):0] out,
-  output wire [4:0] int_exceptions
-);
-
-function integer clog2;
-  input integer a;
-  
-  begin
-      a = a - 1;
-      for (clog2 = 0; a > 0; clog2 = clog2 + 1) a = a>>1;
-  end
-
-endfunction
-
-  localparam int_exp_width        = clog2(int_width);
-  localparam norm_dist_width      = clog2(mant_width);
-  localparam bound_exp_width      = (exp_width <= int_exp_width) ? exp_width - 1 : int_exp_width;
-  
-  wire sign_num;
-  wire [exp_width-1:0]  exp_num;
-  wire [mant_width-2:0] mant_num;
-
-  wire is_num_zero, is_num_inf, is_num_qNaN, is_num_sNaN, exp_zero, mant_zero;
-
-  wire [(norm_dist_width-1):0] norm_dist;
-
-  wire [exp_width:0] adjusted_exp, exp_final;
-  wire is_special, mag_one, mag_below_one;
-  wire signed [(exp_width):0] signed_exp;
-  wire [(exp_width-1):0] pos_exp; 
-
-  wire round_mode_near_even, round_mode_min_mag, round_mode_min;
-  wire round_mode_max,round_mode_near_max_mag; 
-
-  wire [(int_width + mant_width)-2:0] shifted_sig;
-  wire [int_width+1:0] aligned_sig;
-  wire [int_width-1:0] unrounded_int, comp_unrounded_int, rounded_int;
-
-  wire common_inexact, round_incr_near_even, round_incr_near_max_mag, round_incr;
-  wire mag_one_overflow, common_overflow;
-
-  wire invalid, overflow, inexact;
-  wire [(int_width-1):0] exc_out;
-  wire [9:0]  num_check_res;
-  
-  
-  assign {sign_num, exp_num, mant_num} = num;
-
-  special_check #(exp_width,mant_width) special_check_in (.in (num), .result(num_check_res));
-
-  assign is_num_zero = num_check_res[3] | num_check_res[4];
-  assign is_num_inf  = num_check_res[0] | num_check_res[7];
-  assign is_num_qNaN = num_check_res[9];
-  assign is_num_sNaN = num_check_res[8];
-
-// check exponent and mantissa is zero (needs to be a better way)
-  assign exp_zero   = (exp_num == 0);
-  assign mant_zero  = (mant_num == 0);
-
-// computing location of first one 
-  lead_zero_param#(mant_width-1, norm_dist_width) countLeadingZeros(mant_num, norm_dist);
-
-  assign adjusted_exp  = (exp_zero ? norm_dist ^ ((1 << (exp_width+1))-1) : exp_num)
-                       + ((1<<(exp_width-1)) | (exp_zero ? 2:1));
-  
-  assign is_special = (adjusted_exp[exp_width:(exp_width - 1)] == 'b11);
-  assign exp_final[exp_width:(exp_width - 2)] = is_special ? {2'b11, !mant_zero} :is_num_zero ? 3'b000 :
-                                                adjusted_exp[exp_width:(exp_width - 2)];
-  assign exp_final[(exp_width - 3):0]         = adjusted_exp;
-  
-  assign signed_exp              = exp_final;
-  assign mag_one                 = signed_exp[exp_width];
-  assign pos_exp                 = signed_exp[(exp_width-1):0];
-  assign mag_below_one           = !mag_one && (&pos_exp);
-
-  assign round_mode_near_even    = (round_mode == `round_near_even);
-  assign round_mode_min_mag      = (round_mode == `round_minMag);
-  assign round_mode_min          = (round_mode == `round_min);
-  assign round_mode_max          = (round_mode == `round_max);
-  assign round_mode_near_max_mag = (round_mode == `round_near_maxMag);
-  
-  assign shifted_sig             = {mag_one,mant_num[(mant_width-2):0]} << 
-                                   (mag_one ? signed_exp[(bound_exp_width - 1):0] : 0);
-  assign aligned_sig             = {shifted_sig>>(mant_width-2), |shifted_sig[(mant_width-3):0]};
-  assign unrounded_int           = aligned_sig >> 2; 
-
-  assign common_inexact          = mag_one ? |aligned_sig[1:0] : !is_num_zero;
-  
-  assign round_incr_near_even    = (mag_one && ((&aligned_sig[2:1]) || (&aligned_sig[1:0])))  
-                                   || (mag_below_one && (|aligned_sig[1:0]) );
-  assign round_incr_near_max_mag = (mag_one && aligned_sig[1]) || mag_below_one ;
-
-  assign round_incr              = (round_mode_near_even     && round_incr_near_even)    ||
-                                   (round_mode_near_max_mag  && round_incr_near_max_mag) ||
-                                   ((round_mode_min       )) && (sign_num && common_inexact) ||
-                                   (round_mode_max           && (!sign_num && common_inexact));
-  
-     
-  assign comp_unrounded_int      = sign_num ? ~unrounded_int : unrounded_int;
-  assign rounded_int             = ((round_incr ^ sign_num) ? comp_unrounded_int+1 : comp_unrounded_int) ;
-                                   
-  assign mag_one_overflow        = (pos_exp == int_width-1);
-  assign common_overflow         =  mag_one ? (pos_exp >= int_width) || (signed_out ? (sign_num ? mag_one_overflow
-                                    && ((|unrounded_int[(int_width-2):0]) ||round_incr)
-                                    : mag_one_overflow) : sign_num) : !signed_out && sign_num && round_incr;
-
-  assign invalid                = is_num_qNaN || is_num_sNaN || is_num_inf;
-  assign overflow               = !invalid   && common_overflow;
-  assign inexact                = !invalid && !common_overflow && common_inexact;
-
-  int_excep #(int_width) integer_exception (.signed_out(signed_out), .is_qNaN(is_num_qNaN), .is_sNaN(is_num_sNaN), 
-                                            .sign(sign_num) , .execp_out(exc_out));
-  
-  assign out                   = (invalid || common_overflow) ? exc_out : rounded_int;
-
-  assign int_exceptions        = {invalid,1'b0, overflow, 1'b0, inexact};
-
-endmodule
diff --git "a/verilog/rtl/attachments\0501\051/fpu.sv" "b/verilog/rtl/attachments\0501\051/fpu.sv"
deleted file mode 100644
index c6c5b01..0000000
--- "a/verilog/rtl/attachments\0501\051/fpu.sv"
+++ /dev/null
@@ -1,210 +0,0 @@
-`include "compare.sv"
-`include "add_sub.sv"
-`include "fpu_lib.sv"
-`include "float_to_int.sv"
-`include "f_class.sv"
-`include "divider.sv"
-`include "min_max.sv"
-`include "multiplier.sv"
-`include "sign_inject.sv"
-`include "int_to_float.sv"
-`include "fused_mul.sv"
-`include "sqrt_fpu.sv"
-`include "registers.sv"
-
-module fpu_top
-(
-  input  wire            clk,                    
-  input  wire            rst_l,                  // active low reset       
-  
-  input  wire            wb_valid,               // valid signal from wb
-  input  wire [31:0]     rdwraddr,               // read/write address from wb
-  input  wire [31:0]     wrdata,                 // write data received from wb
-
-  input  wire [31:0]     la_write,               // wire analyzer write enable
-  input  wire [31:0]     la_data,                // wire analyzer write data
-  input  wire [31:0]     la_addr,                // wire analyzer address
-//outputs
-  output wire            illegal_op,
-  output wire            inter_gen,
-
-  output wire [31:0]     rddata,                 // read  data sent to wb
-  output wire [31:0]     out,                    // to GPIO
-  output wire [4:0]      exceptions              // on hold for now 
-);
-  wire la_write_en;
-
-  wire [31:0] a;                  
-  wire [31:0] b;                       	
-  wire [31:0] c; 	
-
-  wire [1:0]  op_in;
-  wire [1:0]  op_out;	
-
-  wire [2:0]  round_mode;
-
-  wire [10:0] valid_in;                          // (sqrt, div, fma, multi, add-sub, f2i, i2f, min-max, comp, sign_inj, f-class)
-  wire [10:0] valid_out;	
-  
-  wire [31:0] fclass_out;
-
-  wire [4:0]  cmp_exceptions;
-  wire [31:0] cmp_out;
-
-  wire [4:0]  min_max_exceptions;
-  wire [31:0] min_max_out;
-
-  wire [4:0]  itof_exceptions;
-  wire [31:0] itof_out;
-
-  wire [4:0]  ftoi_exceptions;
-  wire [31:0] ftoi_out;
-
-  wire [31:0] sinj_out;
-
-  wire [4:0]  add_sub_exceptions;
-  wire [31:0] add_sub_out;
-
-  wire [4:0]  mul_exceptions;
-  wire [31:0] mul_out;
-
-  wire [4:0]  mac_exceptions;
-  wire [31:0] mac_out;
-
-  wire [4:0]  sqrt_exceptions;
-  wire [31:0] sqrt_out;    
-     		      	       		
-  wire [4:0]  div_exceptions;       		      		
-  wire [31:0] div_out;         
-  wire        div_valid_out;    
-  wire        sqrt_valid_out;   
-  
-  wire [4:0]  excep_temp;   
-  wire [31:0] out_temp;
-
-  wire [31:0] int_rddata;
-  wire [31:0] addr;        
-
-  assign la_write_en              = |la_write;
-  assign addr                     = la_write_en ? la_addr : rdwraddr;
-             		    		
-  fpu_registers csrs             ( .clk             (clk                      ),
-                                   .rst_l           (rst_l                    ),
-                                   .fpu_result      (out                      ),
-                                   .fpu_valids      ({valid_out, op_out}      ),
-                                   .addr            (addr                     ),
-                                   .wren            (wb_valid                 ),
-                                   .wrdata          (wrdata                   ),
-                                   .exceptions      (exceptions               ),
-                                   .rddata          (int_rddata               ),
-                                   .opA             (a                        ),
-                                   .opB             (b                        ),
-                                   .opC             (c                        ),
-                                   .frm             (round_mode               ),
-                                   .op_valids       ({valid_in, op_in}        ),
-                                   .inter_gen       (inter_gen                ));  
-
-  f_class #(8,24) fpu_fclass      ( .in             (a                        ),
-                                    .result         (fclass_out               ) );
-
-  sign_inject #(8,24) fpu_sgn_inj ( .a              (a                        ),
-                                    .b              (b                        ),
-                                    .op             (op_in                    ),
-                                    .out            (sinj_out                 ) );
-
-  compare #(8,24) fpu_comp        ( .a              (a                        ),
-                                    .b              (b                        ),
-                                    .op             (op_in                    ),
-                                    .out            (cmp_out                  ),
-                                    .exceptions     (cmp_exceptions           ) );
-
-  min_max #(8,24) fpu_min_max     ( .a              (a                        ),
-                                    .b              (b                        ),
-                                    .op             (op_in[0]                 ),
-                                    .out            (min_max_out              ), 
-                                    .exceptions     (min_max_exceptions       ) );
-
-  int_to_float #(32,8,24) fpu_i2f ( .signed_in      (op_in[0]                 ),
-                                    .num            (a                        ),
-                                    .round_mode     (round_mode               ),
-                                    .out            (itof_out                 ),
-                                    .exceptions     (itof_exceptions          ) );
-
-  float_to_int #(8,24) fpu_f2i    ( .num            (a                        ),
-                                    .round_mode     (round_mode               ),
-                                    .signed_out     (op_in[0]                 ),
-                                    .out            (ftoi_out                 ),
-                                    .int_exceptions (ftoi_exceptions          ) );
-
-  add_sub fpu_add_sub             ( .in_x           (a                        ),
-                                    .in_y           (b                        ),
-                                    .operation      (op_in[0]                 ),
-                                    .round_mode     (round_mode               ),
-                                    .out_z          (add_sub_out              ),
-                                    .exceptions     (add_sub_exceptions       ) );
-
-  multiplier #(8,24) fpu_mult     ( .a              (a                        ),
-                                    .b              (b                        ),
-                                    .round_mode     (round_mode               ),
-                                    .exceptions     (mul_exceptions           ),
-                                    .out            (mul_out                  ) );
-
-  fused_multiply #(8,24) fpu_fma ( .a               (a                        ),
-                                   .b               (b                        ),
-                                   .c               (c                        ),
-                                   .op              (op_in                    ),
-                                   .round_mode      (round_mode               ),
-                                   .out             (mac_out                  ),          
-                                   .exceptions      (mac_exceptions           ) );
-
-  divider #(8,24) fpu_divider    ( .rst_l           (rst_l                    ),
-                                   .clk             (clk                      ),
-                                   .in_valid        (valid_in[9]              ),
-                                   .a               (a                        ),
-                                   .b               (b                        ),
-                                   .round_mode      (round_mode               ),
-                                   .cancel          (1'b0                     ),
-                                   .in_ready        (in_ready                 ),
-                                   .out_valid       (div_valid_out            ),
-                                   .out             (div_out                  ),
-                                   .exceptions      (div_exceptions           ) );
-
-  sqrt #(8,24) fpu_sqrt          ( .clk             (clk                      ),
-                                   .rst_l           (rst_l                    ),
-                                   .in_valid        (valid_in[10]             ),
-                                   .a               (a                        ),
-                                   .round_mode      (round_mode               ),
-                                   .cancel          (1'b0                     ),
-                                   .in_ready        (in_ready                 ),
-                                   .out_valid       (sqrt_valid_out           ),
-                                   .out             (sqrt_out                 ),
-                                   .exceptions      (sqrt_exceptions          ) );
-
-// check for illegal op in case of sign inject and compare result
-  assign illegal_op               = ((valid_in[1] || valid_in[2]) && (op_in == 2'b11)) ? 1'b1 : 1'b0;
-
-// output operation performed
-  assign op_out                   = ({valid_in[1] || valid_in[2] || valid_in[3] || valid_in[6] || valid_in[8]}) ? op_in : 2'b0;
-  
-  assign valid_out                = {sqrt_valid_out,div_valid_out,valid_in[8:0]};
-
-// return output data according to module enable
-  assign {out, exceptions}        = ({37{illegal_op}}              & {32'b0      ,5'b0              })  |
-                                    ({37{valid_in[10 & wb_valid]}} & {sqrt_out   ,sqrt_exceptions   })  |
-                                    ({37{valid_in[9] & wb_valid}}  & {div_out    ,div_exceptions    })  |
-                                    ({37{valid_in[8] & wb_valid}}  & {mac_out    ,mac_exceptions    })  |
-                                    ({37{valid_in[7] & wb_valid}}  & {mul_out    ,mul_exceptions    })  |
-                                    ({37{valid_in[6] & wb_valid}}  & {add_sub_out,add_sub_exceptions})  |
-                                    ({37{valid_in[5] & wb_valid}}  & {ftoi_out   ,ftoi_exceptions   })  |
-                                    ({37{valid_in[4] & wb_valid}}  & {itof_out   ,ftoi_exceptions   })  |
-                                    ({37{valid_in[3] & wb_valid}}  & {min_max_out,min_max_exceptions})  |
-                                    ({37{valid_in[2] & wb_valid}}  & {cmp_out    ,cmp_exceptions    })  |
-                                    ({37{valid_in[1] & wb_valid}}  & {sinj_out   ,5'b0              })  |
-                                    ({37{valid_in[0] & wb_valid}}  & {fclass_out ,5'b0              }); 
-
-// data to be read from memory
-  assign rddata                  =  wb_valid ? 32'b0 : la_write_en ? (la_write & la_data) : int_rddata;
-
-endmodule
-	
-	
diff --git "a/verilog/rtl/attachments\0501\051/fpu_lib.sv" "b/verilog/rtl/attachments\0501\051/fpu_lib.sv"
deleted file mode 100644
index 92cffb2..0000000
--- "a/verilog/rtl/attachments\0501\051/fpu_lib.sv"
+++ /dev/null
@@ -1,658 +0,0 @@
-`include "defs.vi"
-
-module special_check #(parameter  exp_width = 8, parameter mant_width = 24) 
-(
-  input  wire [(exp_width + mant_width-1):0] in,
-
-  output wire [9:0] result
-);
-
-  wire is_pos_zero;
-  wire is_neg_zero;
-  wire is_pos_inf;
-  wire is_neg_inf;
-  wire is_pos_subnorm;
-  wire is_neg_subnorm;
-  wire is_pos_norm;
-  wire is_neg_norm;
-  wire is_qNaN;
-  wire is_sNaN;
-
-  wire                    sign;
-  wire [exp_width-1:0]    exp;
-  wire [(mant_width-2):0] sig;
-
-  wire exp_zero, exp_one, sig_zero; 
-
-
-  assign {sign, exp, sig} = in;
-
-  assign exp_zero         = |exp ? 1'b0 : 1'b1;
-  assign sig_zero         = |sig ? 1'b0 : 1'b1;     
-  assign exp_one          = &exp ? 1'b1 : 1'b0;
-
-  assign is_pos_zero      = !sign & exp_zero & sig_zero;
-  assign is_neg_zero      = sign & exp_zero & sig_zero;
-  assign is_pos_subnorm   = !sign & exp_zero;
-  assign is_neg_subnorm   =  sign & exp_zero;
-  assign is_pos_inf       = !sign & exp_one  & sig_zero; 
-  assign is_neg_inf       = sign & exp_one  & sig_zero; 
-  assign is_qNaN          = exp_one  & !sig_zero & sig[22];
-  assign is_sNaN          = exp_one  & !sig_zero & !sig[22];
-
-  assign is_pos_norm      = (is_pos_zero | is_neg_zero | is_pos_subnorm | is_neg_subnorm | is_pos_inf | is_neg_inf | 
-			                      is_qNaN | is_sNaN) ? 1'b0 : ~sign ? 1'b1 : 1'b0;
- 
-  assign is_neg_norm      = (is_pos_zero | is_neg_zero | is_pos_subnorm | is_neg_subnorm | is_pos_inf | is_neg_inf | 
-			                      is_qNaN | is_sNaN) ? 1'b0 : sign ? 1'b1 : 1'b0; 
-
-  assign result           = {is_qNaN, is_sNaN, is_pos_inf, is_pos_norm, is_pos_subnorm, is_pos_zero, is_neg_zero, 
-                            is_neg_subnorm, is_neg_norm, is_neg_inf};
-endmodule
-
-module mac_spec_check #(parameter exp_width = 3, parameter mant_width = 3)
-(
-	input  wire [(exp_width + mant_width):0] in,
-	
-	output wire is_qNaN,
-	output wire is_inf,
-	output wire is_zero,
-	output wire is_sNaN,
-	output wire sign,
-	output wire signed [(exp_width+1):0] s_exp,
-	output wire [mant_width:0] sig
-);
-
-	wire [exp_width:0] 			 exp;
-	wire [(mant_width - 2):0] mant;
-	wire is_ssNaN;
-	wire is_spec;
-
-	assign {sign, exp, mant} = in;
-	
-	assign is_ssNaN          = (in[(exp_width + mant_width - 1):(exp_width + mant_width - 3)] == 'b111);
-	assign is_spec           = (exp>>(exp_width - 1) == 'b11);
-	assign is_qNaN           = is_spec &&  exp[exp_width - 2];
-	assign is_inf            = is_spec && !exp[exp_width - 2];
-	assign is_zero           = (exp>>(exp_width - 2) == 'b000);
-	assign is_sNaN           = is_ssNaN && !in[mant_width - 2];
-	
-  assign s_exp 	           = exp;
-	assign sig 		           = {1'b0, !is_zero, mant};
-
-endmodule
-
-module rounding
-(
-  input  wire sign,
-  input  wire [26:0] mantisa,
-  input  wire [2:0] round_mode,
-
-  output wire [23:0] rounded_mantisa,
-  output wire rounding_overflow
-);
-  
-  wire [23:0] rne, rtz, rdn, rup, rmm;
-  wire rne_overflow, rtz_overflow, rdn_overflow, rup_overflow, rmm_overflow;
-
-  assign {rne_overflow, rne} = mantisa[2] ? (|mantisa[1:0] ? ({1'b0, mantisa[26:3]} + 1'b1) 
-                               : ({1'b0, mantisa[26:3]} + mantisa[3])) : {1'b0, mantisa[26:3]};
-
-  assign {rtz_overflow, rtz} = {1'b0, mantisa[26:3]};
-
-  assign {rdn_overflow, rdn} = |mantisa[2:0] ? (sign ? ({1'b0, mantisa[26:3]} + 1'b1) 
-                                : {1'b0, mantisa[26:3]}) : {1'b0, mantisa[26:3]};
-
-  assign {rup_overflow, rup} = |mantisa[2:0] ? (sign ? {1'b0, mantisa[26:3]} 
-                                  : ({1'b0, mantisa[26:3]} + 1'b1)) : {1'b0, mantisa[26:3]};
-  assign {rmm_overflow, rmm} = mantisa[2] ? ({1'b0, mantisa[26:3]} + 1'b1) : {1'b0, mantisa[26:3]};
-
-  assign rounded_mantisa     = ({24{round_mode == 3'b000}} & rne) |
-                               ({24{round_mode == 3'b001}} & rtz) |
-                               ({24{round_mode == 3'b010}} & rdn) |
-                               ({24{round_mode == 3'b011}} & rup) |
-                               ({24{round_mode == 3'b100}} & rmm);
-
-  assign rounding_overflow   = ((round_mode == 3'b000) & rne_overflow) |
-                               ((round_mode == 3'b001) & rtz_overflow) |
-                               ((round_mode == 3'b010) & rdn_overflow) |
-                               ((round_mode == 3'b011) & rup_overflow) |
-                               ((round_mode == 3'b100) & rmm_overflow);
-
-endmodule
-
-
-module leading_zero
-(
-  input  wire [23:0] in,
-
-  output wire [4:0] out
-);
-  assign out[4:0]       = ({5{(in[22]  & (&(~(in[23]))))}}    & 5'd1)  |			 
- 		                      ({5{(in[21]  & (&(~(in[23:22]))))}} & 5'd2)  |
- 		                      ({5{(in[20]  & (&(~(in[23:21]))))}} & 5'd3)  |
- 		                      ({5{(in[19]  & (&(~(in[23:20]))))}} & 5'd4)  |
- 		                      ({5{(in[18]  & (&(~(in[23:19]))))}} & 5'd5)  |
- 		                      ({5{(in[17]  & (&(~(in[23:18]))))}} & 5'd6)  |
- 		                      ({5{(in[16]  & (&(~(in[23:17]))))}} & 5'd7)  |
- 		                      ({5{(in[15]  & (&(~(in[23:16]))))}} & 5'd8)  |
- 		                      ({5{(in[14]  & (&(~(in[23:15]))))}} & 5'd9)  |
- 		                      ({5{(in[13]  & (&(~(in[23:14]))))}} & 5'd10) |
- 		                      ({5{(in[12]  & (&(~(in[23:13]))))}} & 5'd11) |
- 		                      ({5{(in[11]  & (&(~(in[23:12]))))}} & 5'd12) |
- 		                      ({5{(in[10]  & (&(~(in[23:11]))))}} & 5'd13) |
- 		                      ({5{(in[9]   & (&(~(in[23:10]))))}} & 5'd14) |
- 		                      ({5{(in[8]   & (&(~(in[23: 9]))))}} & 5'd15) |
- 		                      ({5{(in[7]   & (&(~(in[23: 8]))))}} & 5'd16) |
- 		                      ({5{(in[6]   & (&(~(in[23: 7]))))}} & 5'd17) |
- 		                      ({5{(in[5]   & (&(~(in[23: 6]))))}} & 5'd18) |
- 		                      ({5{(in[4]   & (&(~(in[23: 5]))))}} & 5'd19) |
- 		                      ({5{(in[3]   & (&(~(in[23: 4]))))}} & 5'd20) |
- 		                      ({5{(in[2]   & (&(~(in[23: 3]))))}} & 5'd21) |
- 		                      ({5{(in[1]   & (&(~(in[23: 2]))))}} & 5'd22) |
- 		                      ({5{(in[0]   & (&(~(in[23: 1]))))}} & 5'd23);
-
-endmodule
-
-
-module leading_ones 
-(
-  input  wire [31:0] in,
-  output wire [4:0] out
-);
-
-assign out [4:0]        = ({5{(in[31])}}    				         & 5'd31) |
-                          ({5{(in[30] & (&(~(in[31]))))}}    & 5'd30) |
-                          ({5{(in[29] & (&(~(in[31:30]))))}} & 5'd29) |
-                          ({5{(in[28] & (&(~(in[31:29]))))}} & 5'd28) |
-                          ({5{(in[27] & (&(~(in[31:28]))))}} & 5'd27) |
-                          ({5{(in[26] & (&(~(in[31:27]))))}} & 5'd26) |
-                          ({5{(in[25] & (&(~(in[31:26]))))}} & 5'd25) |
-                          ({5{(in[24] & (&(~(in[31:25]))))}} & 5'd24) |
-                          ({5{(in[23] & (&(~(in[31:24]))))}} & 5'd23) |
-                          ({5{(in[22] & (&(~(in[31:23]))))}} & 5'd22) |
-                          ({5{(in[21] & (&(~(in[31:22]))))}} & 5'd21) |
-                          ({5{(in[20] & (&(~(in[31:21]))))}} & 5'd20) |
-                          ({5{(in[19] & (&(~(in[31:20]))))}} & 5'd19) |
-                          ({5{(in[18] & (&(~(in[31:19]))))}} & 5'd18) |
-                          ({5{(in[17] & (&(~(in[31:18]))))}} & 5'd17) |
-                          ({5{(in[16] & (&(~(in[31:17]))))}} & 5'd16) |
-                          ({5{(in[15] & (&(~(in[31:16]))))}} & 5'd15) |
-                          ({5{(in[14] & (&(~(in[31:15]))))}} & 5'd14) |
-                          ({5{(in[13] & (&(~(in[31:14]))))}} & 5'd13) |
-                          ({5{(in[12] & (&(~(in[31:13]))))}} & 5'd12) |
-                          ({5{(in[11] & (&(~(in[31:12]))))}} & 5'd11) |
-                          ({5{(in[10] & (&(~(in[31:11]))))}} & 5'd10) |
-                          ({5{(in[9]  & (&(~(in[31:10]))))}} & 5'd9)  |
-                          ({5{(in[8]  & (&(~(in[31:9]))))}} & 5'd8)   |
-                          ({5{(in[7]  & (&(~(in[31:8]))))}} & 5'd7)   |
-                          ({5{(in[6]  & (&(~(in[31:7]))))}} & 5'd6)   |
-                          ({5{(in[5]  & (&(~(in[31:6]))))}} & 5'd5)   |
-                          ({5{(in[4]  & (&(~(in[31:5]))))}} & 5'd4)   |
-                          ({5{(in[3]  & (&(~(in[31:4]))))}} & 5'd3)   |
-                          ({5{(in[2]  & (&(~(in[31:3]))))}} & 5'd2)   |
-                          ({5{(in[1]  & (&(~(in[31:2]))))}} & 5'd1)   |
-                          ({5{(in[0]  & (&(~(in[31:1]))))}} & 5'd0);          
-endmodule       
-
-module left_shifter #(parameter mant = 24) 
-(
-	input  wire [mant-1:0] mantisa,
-	input  wire [7:0] shift_amount,
-
-	output wire [mant-1:0] out
-);
-
-	wire [mant-1:0] temp;
-
-	assign temp  = mantisa << shift_amount;
-	assign out   = {temp[mant-1:1], mantisa[0]};
-
-endmodule
-
-module right_shifter 
-(
-  input  wire [26:0] mantisa,
-  input  wire [7:0] shift_amount,
-
-  output wire [26:0] out
-);
-
-  assign out = ({27{(shift_amount[7:0]==8'd0)}}  &         mantisa)                          |
-              ({27{(shift_amount[7:0]==8'd1)}}  & {1'd0,  mantisa[26:2],   |mantisa[1:0]})  |
-              ({27{(shift_amount[7:0]==8'd2)}}  & {2'd0,  mantisa[26:3],   |mantisa[2:0]})  |
-              ({27{(shift_amount[7:0]==8'd3)}}  & {3'd0,  mantisa[26:4],   |mantisa[3:0]})  |
-              ({27{(shift_amount[7:0]==8'd4)}}  & {4'd0,  mantisa[26:5],   |mantisa[4:0]})  |
-              ({27{(shift_amount[7:0]==8'd5)}}  & {5'd0,  mantisa[26:6],   |mantisa[5:0]})  |
-              ({27{(shift_amount[7:0]==8'd6)}}  & {6'd0,  mantisa[26:7],   |mantisa[6:0]})  |
-              ({27{(shift_amount[7:0]==8'd7)}}  & {7'd0,  mantisa[26:8],   |mantisa[7:0]})  |
-              ({27{(shift_amount[7:0]==8'd8)}}  & {8'd0,  mantisa[26:9],   |mantisa[8:0]})  |
-              ({27{(shift_amount[7:0]==8'd9)}}  & {9'd0,  mantisa[26:10],  |mantisa[9:0]})  |
-              ({27{(shift_amount[7:0]==8'd10)}} & {10'd0, mantisa[26:11],  |mantisa[10:0]}) |
-              ({27{(shift_amount[7:0]==8'd11)}} & {11'd0, mantisa[26:12],  |mantisa[11:0]}) |
-              ({27{(shift_amount[7:0]==8'd12)}} & {12'd0, mantisa[26:13],  |mantisa[12:0]}) |
-              ({27{(shift_amount[7:0]==8'd13)}} & {13'd0, mantisa[26:14],  |mantisa[13:0]}) |
-              ({27{(shift_amount[7:0]==8'd14)}} & {14'd0, mantisa[26:15],  |mantisa[14:0]}) |
-              ({27{(shift_amount[7:0]==8'd15)}} & {15'd0, mantisa[26:16],  |mantisa[15:0]}) |
-              ({27{(shift_amount[7:0]==8'd16)}} & {16'd0, mantisa[26:17],  |mantisa[16:0]}) |
-              ({27{(shift_amount[7:0]==8'd17)}} & {17'd0, mantisa[26:18],  |mantisa[17:0]}) |
-              ({27{(shift_amount[7:0]==8'd18)}} & {18'd0, mantisa[26:19],  |mantisa[18:0]}) |
-              ({27{(shift_amount[7:0]==8'd19)}} & {19'd0, mantisa[26:20],  |mantisa[19:0]}) |
-              ({27{(shift_amount[7:0]==8'd20)}} & {20'd0, mantisa[26:21],  |mantisa[20:0]}) |
-              ({27{(shift_amount[7:0]==8'd21)}} & {21'd0, mantisa[26:22],  |mantisa[21:0]}) |
-              ({27{(shift_amount[7:0]==8'd22)}} & {22'd0, mantisa[26:23],  |mantisa[22:0]}) |
-              ({27{(shift_amount[7:0]==8'd23)}} & {23'd0, mantisa[26:24],  |mantisa[23:0]}) |
-              ({27{(shift_amount[7:0]==8'd24)}} & {24'd0, mantisa[26:25],  |mantisa[24:0]}) |
-              ({27{(shift_amount[7:0]==8'd25)}} & {25'd0, mantisa[26],     |mantisa[25:0]}) |
-              ({27{(shift_amount[7:0]>=8'd26)}} & {26'd0,                  |mantisa[26:0]});
-endmodule
-
-module int_excep #(parameter width = 1)
-(
-  input  wire signed_out,
-  input  wire is_qNaN,
-  input  wire is_sNaN,
-  input  wire sign,
-  
-  output wire [(width - 1):0] execp_out
-);
-  wire  max_int;
-  
-  assign max_int      = is_qNaN || is_sNaN || !sign;
-  assign execp_out    = {signed_out ^ max_int, {(width - 1){max_int}}};
-
-endmodule
-
-module rvdff #( parameter WIDTH=1, SHORT=0 )
-   ( input wire [(WIDTH-1):0] din,
-     input wire           clk,
-     input wire                   rst_l,
-
-     output reg [(WIDTH-1):0] dout
-     );
-
-if (SHORT == 1) begin
-   assign dout = din;
-end
-else begin
-`ifdef RV_CLOCKGATE
-   always @(posedge tb_top.clk) begin
-      #0 $strobe("CG: %0t %m din %x dout %x clk %b width %d",$time,din,dout,clk,WIDTH);
-   end
-`endif
-
-   always @(posedge clk or negedge rst_l) begin
-      if (rst_l == 0)
-        dout[WIDTH-1:0] <= 0;
-      else
-        dout[WIDTH-1:0] <= din[WIDTH-1:0];
-   end
-
-end
-endmodule
-
-module rvdffe #( parameter WIDTH=1, SHORT=0, OVERRIDE=0 )
-   (
-     input  wire [WIDTH-1:0] din,
-     input  wire           en,
-     input  wire           clk,
-     input  wire           rst_l,
-     output wire [WIDTH-1:0] dout
-     );
-
-   wire                      l1clk;
-
-if (SHORT == 1) begin : genblock
-   if (1) begin : genblock
-      assign dout = din;
-   end
-end
-else begin : genblock
-
-// `ifndef RV_PHYSICAL
-//    if (WIDTH >= 8 || OVERRIDE==1) begin: genblock
-// `endif
-
-      rvdff #(WIDTH) dff (.din(din), .dout(dout), .rst_l(rst_l), .clk(l1clk));
-
-// `ifndef RV_PHYSICAL
-//    end
-//    // else
-//    //    $error("%m: rvdffe must be WIDTH >= 8");
-// `endif
-end // else: !if(SHORT == 1)
-
-endmodule // rvdffe
-
-module exponent #(parameter exp_width = 8, parameter mant_width = 24) 
-(
-  input  wire [(exp_width + mant_width - 1):0] in,
-  output wire [(exp_width + mant_width):0] out
-);
-
-function integer clog2;
-  input integer a;
-  
-  begin
-      a = a - 1;
-      for (clog2 = 0; a > 0; clog2 = clog2 + 1) a = a>>1;
-  end
-
-endfunction
-
-  localparam norm_dist_width = clog2(mant_width);
-
-  wire sign;
-  wire exp_in_zero, is_special, mant_in_zero, is_zero;
-  wire [(exp_width - 1):0] exp_in;
-  wire [(mant_width - 2):0] mant_in, sbnorm_mant;
-  wire [exp_width:0] exp_adjusted, exp;
-  wire [(norm_dist_width - 1):0] norm_dist;
-
-  assign {sign, exp_in, mant_in} = in;
-  assign exp_in_zero = (exp_in == 0);
-  assign mant_in_zero = (mant_in == 0);
-
-  lead_zero_param#(mant_width - 1, norm_dist_width) countLeadingZeros(mant_in, norm_dist);
-
-  assign sbnorm_mant  = (mant_in<<norm_dist)<<1;
-  assign exp_adjusted = (exp_in_zero ? norm_dist ^ ((1<<(exp_width + 1)) - 1) : exp_in) + ((1<<(exp_width - 1)) | (exp_in_zero ? 2 : 1));
-  assign is_zero      = exp_in_zero && mant_in_zero;
-  assign is_special   = (exp_adjusted[exp_width:(exp_width - 1)] == 'b11);
-
-  assign exp[exp_width:(exp_width - 2)] = is_special ? {2'b11, !mant_in_zero} : is_zero ? 3'b000 : exp_adjusted[exp_width:(exp_width - 2)];
-  assign exp[(exp_width - 3):0]         = exp_adjusted;
-  assign out                            = {sign, exp, exp_in_zero ? sbnorm_mant : mant_in};
-
-endmodule
-
-module invert#(parameter width = 1) 
-(
-  input  wire [(width - 1):0] in, 
-  output wire [(width - 1):0] out
-);
-  genvar ix;
-  generate
-    for (ix = 0; ix < width; ix = ix + 1) begin :bt
-      assign out[ix] = in[width - 1 - ix];
-    end
-  endgenerate
-
-endmodule
-
-module low_mask_hi_lo#( parameter in_width = 1, parameter top_bound = 1, parameter bottom_bound = 0 ) 
-(
-  input  wire [(in_width - 1):0] in,
-  output wire [(top_bound - bottom_bound - 1):0] out
-);
-	localparam num_in_vals = 1<<in_width;
-	wire signed [num_in_vals:0] c;
-	wire [(top_bound - bottom_bound - 1):0] reverse_out;
-	
-	assign c[num_in_vals]         = 1;
-	assign c[(num_in_vals - 1):0] = 0;
-	assign reverse_out            = (c>>>in)>>(num_in_vals - top_bound);
-	invert #(top_bound - bottom_bound) reverse_hi(reverse_out, out);
-endmodule
-
-module low_mask_lo_hi#( parameter in_width = 1, parameter top_bound = 0, parameter bottom_bound = 1) 
-(
-  input  wire [(in_width - 1):0] in,
-  output wire [(bottom_bound - top_bound - 1):0] out
-);
-
-  localparam num_in_vals = 1<<in_width;
-  wire signed [num_in_vals:0] c;
-  wire [(bottom_bound - top_bound - 1):0] reverse_out;
-
-  assign c[num_in_vals]         = 1;
-  assign c[(num_in_vals - 1):0] = 0;
-  assign reverse_out            = (c>>>~in)>>(top_bound + 1);
-  invert #(bottom_bound - top_bound) reverse_lo(reverse_out, out);
-
-endmodule
-
-module compress_by2#(parameter in_width = 1) 
-(
-  input  wire [(in_width - 1):0]     in, 
-  output wire [((in_width - 1)/2):0] out
-);
-
-	localparam bit_num_reduced = (in_width - 1)/2;
-	
-  genvar ix;
-	generate
-	  for (ix = 0; ix < bit_num_reduced; ix = ix + 1) begin :bt
-	  	assign out[ix] = |in[(ix*2 + 1):ix*2];
-	  end
-	endgenerate
-
-	assign out[bit_num_reduced] = |in[(in_width - 1):bit_num_reduced*2];
-endmodule
-
-module compress_by4#(parameter in_width = 1) 
-(
-  input  wire [(in_width - 1):0]     in, 
-  output wire [(in_width - 1)/4:0]   out
-);
-
-  localparam bit_num_reduced = (in_width - 1)/4;
-  genvar ix;
-  generate
-	for (ix = 0; ix < bit_num_reduced; ix = ix + 1) begin :bt
-		assign out[ix] = |in[(ix*4 + 3):ix*4];
-	end
-	endgenerate
-	
-  assign out[bit_num_reduced] = |in[(in_width - 1):bit_num_reduced*4];
-endmodule
-
-module lead_zero_param#(parameter in_width = 1, parameter count_width = 1) 
-(
-  input  wire [(in_width - 1):0] in, 
-  output wire [(count_width - 1):0] count
-);
-
-  wire [(in_width - 1):0] reverse_in;
-  wire [in_width:0] one_least_reverse_in;
-  
-  invert #(in_width) reverse_num(in, reverse_in);
-  assign one_least_reverse_in = {1'b1, reverse_in} & ({1'b0, ~reverse_in} + 1);
-
-  genvar ix;
-  generate
-    for (ix = 0; ix <= in_width; ix = ix + 1) begin :bt
-      wire  [(count_width - 1):0] count_so_far;
-      if (ix == 0) begin
-        assign count_so_far = 0;
-      end 
-      else begin
-        assign count_so_far = bt[ix - 1].count_so_far | (one_least_reverse_in[ix] ? ix : 0);
-      if (ix == in_width) 
-      assign count = count_so_far;
-      end
-  end
-  endgenerate
-endmodule
-
-module round_excep#( parameter in_exp_width = 8, parameter in_mant_width = 24, parameter out_exp_width = 8, 
-															 parameter out_mant_width = 24, parameter options = 0 ) 
-(
-	input  wire invalid_excep,     
-	input  wire infinite_excep,    
-	input  wire in_is_NaN,
-	input  wire in_is_inf,
-	input  wire in_is_zero,
-	input  wire in_sign,
-	input  wire signed [(in_exp_width + 1):0] in_sexp,   
-	input  wire [in_mant_width:0] in_mant,
-	input  wire [2:0] round_mode,
-
-	output wire [(out_exp_width + out_mant_width)-1:0] result,
-	output wire [4:0] exceptions
-);
-
-function integer clog2;
-  input integer a;
-  
-  begin
-      a = a - 1;
-      for (clog2 = 0; a > 0; clog2 = clog2 + 1) a = a>>1;
-  end
-
-endfunction
-
-	localparam sigMSBitAlwaysZero 	= ((options & `flRoundOpt_sigMSBitAlwaysZero) != 0);
-	localparam effectiveInSigWidth 	= sigMSBitAlwaysZero ? in_mant_width : in_mant_width + 1;
-	localparam neverUnderflows 			= ((options & (`flRoundOpt_neverUnderflows | `flRoundOpt_subnormsAlwaysExact))!= 0) 
-																		|| (in_exp_width < out_exp_width);
-	localparam neverOverflows 			= ((options & `flRoundOpt_neverOverflows) != 0) || (in_exp_width < out_exp_width);
-	localparam adjustedExpWidth 		= (in_exp_width < out_exp_width) ? out_exp_width + 1 : (in_exp_width == out_exp_width)? 
-																		in_exp_width + 2 : in_exp_width + 3;
-	localparam outNaNExp 						= 7<<(out_exp_width - 2);
-	localparam outInfExp 						= 6<<(out_exp_width - 2);
-	localparam outMaxFiniteExp 			= outInfExp - 1;
-	localparam outMinNormExp 				= (1<<(out_exp_width - 1)) + 2;
-	localparam outMinNonzeroExp 		= outMinNormExp - out_mant_width + 1;
-	localparam [out_exp_width:0] min_norm_exp = (1<<(out_exp_width - 1)) + 2;
-	localparam norm_dist_width 			= clog2(in_mant_width);
-
-	wire roundmode_near_even, roundmode_min_mag, roundmode_min, roundmode_max, roundmode_max_mag, round_mag_up;
-	wire is_out_NaN;
-	wire signed [(adjustedExpWidth - 1):0] adjusted_sexp;
-	wire [(out_mant_width + 2):0] adjusted_mant;
-	wire notNaN_is_special_inf_out, common_case, overflow, underflow, inexact, sign_out;	
-	wire overflow_round_magup, peg_min_nonzero_mag_out, peg_max_finite_mag_out, notNaN_is_inf_out;
-	wire [out_exp_width:0] exp_out;	
-	wire [(out_mant_width - 2):0] mant_out;
-	wire [(out_exp_width+out_mant_width):0] out;
-	wire is_NaN, is_inf, is_zero, sign_res, is_subnorm;
-	wire signed [(out_exp_width+1):0] s_exp;
-	wire [out_mant_width:0] mant;
-	wire [(norm_dist_width - 1):0] subnorm_shift_dist;
-	wire [(out_exp_width   - 1):0] exp_res;
-	wire [(out_mant_width  - 2):0] mant_res;
-	wire [out_exp_width:0] common_exp_out;
-	wire [(out_mant_width - 2):0] common_mant_out;
-	wire common_overflow, common_total_underflow, common_underflow;
-	wire common_inexact;
-	wire do_shift_mant_down1;
-
-	assign roundmode_near_even = (round_mode == `round_near_even);
-	assign roundmode_min_mag   = (round_mode == `round_minMag);
-	assign roundmode_min       = (round_mode == `round_min);
-	assign roundmode_max       = (round_mode == `round_max);
-	assign roundmode_max_mag 	 = (round_mode == `round_near_maxMag);
-	assign round_mag_up        = (roundmode_min && in_sign) || (roundmode_max && !in_sign);
-
-	assign is_out_NaN 				 = invalid_excep || (!infinite_excep && in_is_NaN);
-  assign adjusted_sexp 			 = in_sexp + ((1<<out_exp_width) - (1<<in_exp_width));
-
-	assign adjusted_mant 	 = in_mant;
-	
-	assign do_shift_mant_down1 = sigMSBitAlwaysZero ? 0 : adjusted_mant[out_mant_width + 2];
- 	
-	generate
-		if ( neverOverflows && neverUnderflows && (effectiveInSigWidth <= out_mant_width) )  begin
-			assign common_exp_out 				= adjusted_sexp + do_shift_mant_down1;
-			assign common_mant_out 				= do_shift_mant_down1 ? adjusted_mant>>3 : adjusted_mant>>2;
-		end 
-	else begin
-	
-	wire [(out_mant_width + 2):0] roundMask;
-	
-	if (neverUnderflows) begin
-		assign roundMask = {do_shift_mant_down1, 2'b11};
-	end 
-	else begin
-	wire [out_mant_width:0] roundMask_main;
-	
-	low_mask_lo_hi#(out_exp_width + 1,outMinNormExp-out_mant_width-1,outMinNormExp) lowmask_roundmask
-																											( adjusted_sexp[out_exp_width:0], roundMask_main );
-	assign roundMask = {roundMask_main | do_shift_mant_down1, 2'b11};
-	end
-
-	wire [(out_mant_width + 2):0] shifted_round_mask, round_pos_mask;
-	wire round_pos_bit , any_round_extra, any_round, round_incr;
-	
-	assign shifted_round_mask = roundMask>>1;
-	assign round_pos_mask     = ~shifted_round_mask & roundMask;
-	assign round_pos_bit      = (|(adjusted_mant[(out_mant_width + 2):3] & round_pos_mask[(out_mant_width + 2):3])) || ((|(adjusted_mant[2:0] & round_pos_mask[2:0])));
-	assign any_round_extra    = (|(adjusted_mant[(out_mant_width + 2):3] & shifted_round_mask[(out_mant_width + 2):3])) || ((|(adjusted_mant[2:0] & shifted_round_mask[2:0])));
-	assign any_round          = round_pos_bit || any_round_extra;
-
-	wire [(out_mant_width + 1):0] rounded_mant;
-	wire signed [adjustedExpWidth:0] sext_adjusted_exp,s_rounded_exp;
-	
-	assign round_incr 			 = ((roundmode_near_even || roundmode_max_mag) && round_pos_bit) || (round_mag_up && any_round);
-	assign rounded_mant      = round_incr ? (((adjusted_mant | roundMask)>>2) + 1) & ~(roundmode_near_even && round_pos_bit && !any_round_extra
-														 ? roundMask>>1 : 0) : (adjusted_mant & ~roundMask)>>2;
-	assign sext_adjusted_exp = adjusted_sexp;
-	assign s_rounded_exp     = sext_adjusted_exp + (rounded_mant>>out_mant_width);
-
-
-	assign common_exp_out 	      = s_rounded_exp;
-	assign common_mant_out 	      = do_shift_mant_down1 ? rounded_mant>>1 : rounded_mant;
-	assign common_overflow 	      = neverOverflows ? 0 : (s_rounded_exp>>>(out_exp_width - 1) >= 3);
-	assign common_total_underflow = neverUnderflows ? 0 : (s_rounded_exp < outMinNonzeroExp);
-
-	wire unbound_range_round_posbit, unbound_range_any_round, unbound_range_round_incr, round_carry ;           
-
-	assign unbound_range_round_posbit = do_shift_mant_down1 ? adjusted_mant[2] : adjusted_mant[1];
-	assign unbound_range_any_round    = (do_shift_mant_down1 && adjusted_mant[2]) || (|adjusted_mant[1:0]);
-	assign unbound_range_round_incr   = ((roundmode_near_even || roundmode_max_mag) && unbound_range_round_posbit) 
-																			|| (round_mag_up && unbound_range_any_round);
-
-	assign round_carry                = do_shift_mant_down1 ? rounded_mant[out_mant_width + 1] : rounded_mant[out_mant_width];
-	assign common_underflow 					= neverUnderflows ? 0 : common_total_underflow || (any_round && (adjusted_sexp>>>out_exp_width <= 0) 
-																			&& (do_shift_mant_down1 ? roundMask[3] : roundMask[2]) && !(((`flControl_tininessAfterRounding) != 0) 
-																			&& !(do_shift_mant_down1 ? roundMask[4] : roundMask[3]) && round_carry && round_pos_bit 
-																			&& unbound_range_round_incr));
-	assign common_inexact 						= common_total_underflow || any_round;
-	end
-	endgenerate   
-	
-	assign notNaN_is_special_inf_out = infinite_excep || in_is_inf;
-	assign common_case               = !is_out_NaN && !notNaN_is_special_inf_out && !in_is_zero;
-	assign overflow                  = common_case && common_overflow;
-	assign underflow                 = common_case && common_underflow;
-	assign inexact                   = overflow || (common_case && common_inexact);
-
-	assign overflow_round_magup 		 = roundmode_near_even || roundmode_max_mag || round_mag_up;
-	assign peg_min_nonzero_mag_out   = common_case && common_total_underflow && (round_mag_up);
-	assign peg_max_finite_mag_out  	 = overflow && !overflow_round_magup;
-	assign notNaN_is_inf_out     		 = notNaN_is_special_inf_out || (overflow && overflow_round_magup);
-
-	assign sign_out 								 = is_out_NaN ? `HardFloat_signDefaultNaN : in_sign;
-
-	assign exp_out 	= (common_exp_out & ~(in_is_zero || common_total_underflow ? 7<<(out_exp_width - 2) : 0)
-									   & ~(peg_min_nonzero_mag_out ? ~outMinNonzeroExp    : 0)
-									   & ~(peg_max_finite_mag_out  ? 1<<(out_exp_width - 1) : 0)
-									   & ~(notNaN_is_inf_out       ? 1<<(out_exp_width - 2) : 0))
-									   | (peg_min_nonzero_mag_out  ? outMinNonzeroExp : 0)
-									   | (peg_max_finite_mag_out   ? outMaxFiniteExp  : 0)
-									   | (notNaN_is_inf_out        ? outInfExp        : 0)
-									   | (is_out_NaN               ? outNaNExp        : 0);
-
-
-	assign mant_out = (is_out_NaN ? `HardFloat_fractDefaultNaN(out_mant_width) : 0) 
-										| (!in_is_zero && !common_total_underflow 
-										? common_mant_out & `HardFloat_fractDefaultNaN(out_mant_width) : 0)
-										| (!is_out_NaN && !in_is_zero && !common_total_underflow
-										? common_mant_out & ~`HardFloat_fractDefaultNaN(out_mant_width): 0)
-										| {(out_mant_width - 1){peg_max_finite_mag_out}};
-
-
-	assign out 				= {sign_out, exp_out, mant_out};
-	assign exceptions = {invalid_excep, infinite_excep, overflow, underflow, inexact};
-
-	mac_spec_check #(out_exp_width, out_mant_width) mac_spec_check_out(.in(out), .is_qNaN(is_NaN), .is_inf(is_inf), .is_zero(is_zero), 
-																																	   .is_sNaN(), .sign(sign_res), .s_exp(s_exp), .sig(mant));
-	assign is_subnorm = (s_exp < min_norm_exp);
-
- 	assign subnorm_shift_dist = min_norm_exp - 1 - s_exp;
- 	assign exp_res  					= (is_subnorm ? 0 : s_exp - min_norm_exp + 1) | (is_NaN || is_inf ? {out_exp_width{1'b1}} : 0);
- 	assign mant_res 					= is_subnorm ? (mant>>1)>>subnorm_shift_dist : is_inf ? 0 : mant;
- 	assign result 						= {sign_res, exp_res, mant_res};
-
-endmodule
diff --git "a/verilog/rtl/attachments\0501\051/fused_mul.sv" "b/verilog/rtl/attachments\0501\051/fused_mul.sv"
deleted file mode 100644
index 5329299..0000000
--- "a/verilog/rtl/attachments\0501\051/fused_mul.sv"
+++ /dev/null
@@ -1,346 +0,0 @@
-//`include "fpu_lib.sv"
-
-module fused_multiply #(parameter exp_width = 8, parameter mant_width = 24) 
-(
-	input  wire [(exp_width + mant_width)-1:0] a,
-	input  wire [(exp_width + mant_width)-1:0] b,
-	input  wire [(exp_width + mant_width)-1:0] c,
-	input  wire [1:0] op,
-	input  wire [2:0] round_mode,
-
-	output wire [(exp_width + mant_width)-1:0] out,
-	output wire [4:0] exceptions
-);
-
-function integer clog2;
-  input integer a;
-  
-  begin
-      a = a - 1;
-      for (clog2 = 0; a > 0; clog2 = clog2 + 1) a = a>>1;
-  end
-
-endfunction
-
-	wire invalid_excep, out_is_NaN, out_is_inf, out_is_zero, out_sign;
-	wire signed [(exp_width + 1):0] out_s_exp;
-	wire [(mant_width + 2):0] out_mant;
-	wire [(exp_width + mant_width):0] oper1, oper2, oper3;
-
-	exponent   #(exp_width, mant_width) exp_a   (.in(a), .out(oper1));
-	exponent   #(exp_width, mant_width) exp_b   (.in(b), .out(oper2));
-	exponent   #(exp_width, mant_width) exp_c   (.in(c), .out(oper3));
-    
-  mul_add    #(exp_width, mant_width) mul_add (.op(op), .a(oper1), .b(oper2), .c(oper3), .round_mode(round_mode), .invalid_excep(invalid_excep), 
-                                                .out_is_NaN(out_is_NaN), .out_is_inf(out_is_inf), .out_is_zero(out_is_zero), .out_sign(out_sign), 
-                                                .out_s_exp(out_s_exp), .out_mant(out_mant) );
-    
-  round_excep #(exp_width, mant_width+2, exp_width,mant_width,0) round_exception 
-																							( .invalid_excep(invalid_excep), .infinite_excep(1'b0), .in_is_NaN(out_is_NaN), 
-																								.in_is_inf(out_is_inf), .in_is_zero(out_is_zero),.in_sign(out_sign),.in_sexp(out_s_exp), 
-																								.in_mant(out_mant),.round_mode(round_mode), .result(out), .exceptions(exceptions));
-
-endmodule
-
-module mul_add#(parameter exp_width = 8, parameter mant_width = 24) 
-(
-	input  wire [(exp_width + mant_width):0] a,
-	input  wire [(exp_width + mant_width):0] b,
-	input  wire [(exp_width + mant_width):0] c,
-	input  wire [2:0] round_mode,
-	input  wire [1:0] op, 
-
-	output wire invalid_excep,
-	output wire out_is_NaN,
-	output wire out_is_inf,
-	output wire out_is_zero,
-	output wire out_sign,
-	output wire signed [(exp_width + 1):0] out_s_exp,
-	output wire [(mant_width + 2):0] out_mant
-);
-
-function integer clog2;
-  input integer a;
-  
-  begin
-      a = a - 1;
-      for (clog2 = 0; a > 0; clog2 = clog2 + 1) a = a>>1;
-  end
-
-endfunction
-
-  wire [(mant_width - 1):0] mul_add_a, mul_add_b;
-  wire [(mant_width*2 - 1):0] mul_add_c;
-  wire [5:0] intermed_compact_state;
-  wire signed [(exp_width + 1):0] intermed_sexp;
-  wire [(clog2(mant_width + 1) - 1):0] inter_c_dom_calign_dist;
-  wire [(mant_width + 1):0] inter_high_align_sig_c;
-  wire  [mant_width*2:0] mul_add_res;
-
-  mul_add_pre_mul#(exp_width, mant_width) pre_mul(.op(op), .a(a), .b(b), .c(c), .round_mode(round_mode), .mul_add_a(mul_add_a), 
-																									 .mul_add_b(mul_add_b), .mul_add_c(mul_add_c), .intermed_compact_state(intermed_compact_state), 
-																									 .intermed_sexp(intermed_sexp), .inter_c_dom_calign_dist(inter_c_dom_calign_dist), 
-																									 .inter_high_align_sig_c(inter_high_align_sig_c) );
-
-  assign mul_add_res = mul_add_a * mul_add_b + mul_add_c;
-  
-  mul_add_post_mul#(exp_width, mant_width)post_mul(.intermed_compact_state(intermed_compact_state), .intermed_sexp(intermed_sexp), 
-																										.inter_c_dom_calign_dist(inter_c_dom_calign_dist), .inter_high_align_sig_c(inter_high_align_sig_c),
-																										.mul_add_res(mul_add_res), .round_mode(round_mode), .invalid_excep(invalid_excep), 
-																										.out_is_NaN(out_is_NaN), .out_is_inf(out_is_inf), .out_is_zero(out_is_zero), 
-																										.out_sign(out_sign), .out_s_exp(out_s_exp), .out_mant(out_mant));
-
-endmodule
-
-module mul_add_pre_mul#(parameter exp_width = 8, parameter mant_width = 24) 
-	(op, a, b, c, round_mode, mul_add_a, 
-	mul_add_b, mul_add_c, intermed_compact_state, 
-	intermed_sexp, inter_c_dom_calign_dist, 
-	inter_high_align_sig_c);
-	
-function integer clog2;
-  input integer a;
-  
-  begin
-      a = a - 1;
-      for (clog2 = 0; a > 0; clog2 = clog2 + 1) a = a>>1;
-  end
-
-endfunction
-
-	input  wire [1:0] op;
-	input  wire [(exp_width + mant_width):0] a;
-	input  wire [(exp_width + mant_width):0] b;
-	input  wire [(exp_width + mant_width):0] c;
-	input  wire [2:0] round_mode;
-
-	output wire [(mant_width - 1):0] mul_add_a;
-	output wire [(mant_width - 1):0] mul_add_b;
-	output wire [(mant_width*2 - 1):0] mul_add_c;
-	output wire [5:0] intermed_compact_state;
-	output wire signed [(exp_width + 1):0] intermed_sexp;
-	output wire [(clog2(mant_width + 1) - 1):0] inter_c_dom_calign_dist;
-	output wire [(mant_width + 1):0] inter_high_align_sig_c;
-
-  localparam prod_width 		    	 = mant_width*2;
-  localparam mant_sum_width     	 = mant_width + prod_width + 3;
-	localparam c_grain_align         = (mant_sum_width - mant_width - 1) & 3;
-  localparam c_extra_mask_hi_bound = (mant_sum_width - 1)/4;
-  localparam c_extra_mask_lo_bound = (mant_sum_width - mant_width - 1)/4;
-
-	wire is_a_qNaN, is_a_inf, is_a_zero, is_a_sNaN, sign_a;
-	wire is_b_qNaN, is_b_inf, is_b_zero, is_b_sNaN, sign_b;
-	wire is_c_qNaN, is_c_inf, is_c_zero, is_c_sNaN, sign_c;  
-
-  wire [mant_width:0] mant_a, mant_b, mant_c;
-	wire signed [(exp_width + 1):0] sexp_a, sexp_b, sexp_c, sexp_sum;
-	wire signed [(exp_width + 2):0] exp_prod_aligned, s_natc_align_dist;
-  
-	wire sign_prod, sub_mags, op_sign_c, round_mode_min;
-	wire is_min_c_align, is_c_dominant, special_sign_out;
-	wire reduced_4_c_extra, is_a_orb_NaN, is_any_NaN, is_aorb_inf;
-	wire invalid_prod, not_sNaN_invalid_excep, invalid_excep;
-	wire not_NaN_add_zeros, special_case, special_notNaN_sign_out ;
-
-	wire [(mant_sum_width - 1):0] aligned_mant_c;
-  wire [(exp_width + 1):0] pos_nat_c_align_dist;
-  wire [(clog2(mant_sum_width) - 1):0] c_align_dist;
-  wire signed [(mant_sum_width + 2):0] ext_comp_mant_c;
-  wire [(mant_sum_width + 1):0] main_aligned_mant_c;
-  wire [(mant_width + c_grain_align):0] grain_aligned_mant_c;
-  wire [(mant_width + c_grain_align)/4:0] reduced_4_mant_c;
-	wire [(c_extra_mask_hi_bound - c_extra_mask_lo_bound - 1):0] c_extra_mask;
-
-	mac_spec_check #(exp_width,mant_width ) mac_spec_check_a (.in (a), .is_qNaN (is_a_qNaN), .is_inf(is_a_inf), .is_zero(is_a_zero), 
-                                                            .is_sNaN(is_a_sNaN),.sign(sign_a), .s_exp(sexp_a), .sig(mant_a) );
-
-  mac_spec_check #(exp_width,mant_width ) mac_spec_check_b (.in (b), .is_qNaN (is_b_qNaN), .is_inf(is_b_inf), .is_zero(is_b_zero), 
-                                                            .is_sNaN(is_b_sNaN),.sign(sign_b), .s_exp(sexp_b), .sig(mant_b) );
-  
-	mac_spec_check #(exp_width,mant_width ) mac_spec_check_c (.in(c), .is_qNaN (is_c_qNaN), .is_inf(is_c_inf), .is_zero(is_c_zero), 
-  	                                                        .is_sNaN(is_c_sNaN),.sign(sign_c), .s_exp(sexp_c), .sig(mant_c) );    
-
-  assign sign_prod          	= sign_a ^ sign_b ^ op[1];
-  assign exp_prod_aligned   	= sexp_a + sexp_b + (-(1<<exp_width) + mant_width + 3);
-  assign sub_mags           	= sign_prod ^ sign_c ^ op[0];
-  assign op_sign_c          	= sign_prod ^ sub_mags;
-  assign round_mode_min 	  	= (round_mode == `round_min);
-
-  assign s_natc_align_dist   	= exp_prod_aligned - sexp_c;
-  assign pos_nat_c_align_dist = s_natc_align_dist[(exp_width + 1):0];
-  assign is_min_c_align      	= is_a_zero || is_b_zero || (s_natc_align_dist < 0);
-  assign is_c_dominant      	= !is_c_zero && (is_min_c_align || (pos_nat_c_align_dist <= mant_width));
-  assign sexp_sum          		= is_c_dominant ? sexp_c : exp_prod_aligned - mant_width;
-  assign c_align_dist       	= is_min_c_align ? 0 : (pos_nat_c_align_dist < mant_sum_width - 1) ? 
-																pos_nat_c_align_dist[(clog2(mant_sum_width) - 1):0] : mant_sum_width - 1;
-  assign ext_comp_mant_c     	= {sub_mags ? ~mant_c : mant_c, {(mant_sum_width - mant_width + 2){sub_mags}}};
-  assign main_aligned_mant_c  = ext_comp_mant_c>>>c_align_dist;
-  assign grain_aligned_mant_c = mant_c<<c_grain_align;
-  
-  compress_by4#(mant_width + 1 + c_grain_align) mantc_comp (grain_aligned_mant_c, reduced_4_mant_c);
-  
-  low_mask_hi_lo#(clog2(mant_sum_width) - 2, c_extra_mask_hi_bound, c_extra_mask_lo_bound) 
-                                extra_mask_c(c_align_dist[(clog2(mant_sum_width) - 1):2], c_extra_mask);
-
-	assign reduced_4_c_extra 		  = |(reduced_4_mant_c & c_extra_mask);
-	assign aligned_mant_c 			  = {main_aligned_mant_c>>3, sub_mags ? (&main_aligned_mant_c[2:0]) 
-																	&& !reduced_4_c_extra : (|main_aligned_mant_c[2:0]) || reduced_4_c_extra};
-	
-	assign is_a_orb_NaN  			 		= is_a_qNaN || is_b_qNaN;
-	assign is_any_NaN    			 		= is_a_orb_NaN || is_c_qNaN;
-	assign is_aorb_inf   			 		= is_a_inf || is_b_inf;
-	assign invalid_prod 			 		= (is_a_inf && is_b_zero) || (is_a_zero && is_b_inf);
-	assign not_sNaN_invalid_excep = invalid_prod || (!is_a_orb_NaN && is_aorb_inf && is_c_inf && sub_mags);
-	assign invalid_excep          = is_a_sNaN || is_b_sNaN || is_c_sNaN || not_sNaN_invalid_excep;
-	assign not_NaN_add_zeros      = (is_a_zero || is_b_zero) && is_c_zero;
-	assign special_case           = is_any_NaN || is_aorb_inf || is_c_inf || not_NaN_add_zeros;
-	assign special_notNaN_sign_out= (is_aorb_inf && sign_prod) || (is_c_inf && op_sign_c) || (not_NaN_add_zeros && 
-																	!round_mode_min && sign_prod && op_sign_c) || (not_NaN_add_zeros 
-																	&& round_mode_min && (sign_prod || op_sign_c));
-
-	assign special_sign_out 			= special_notNaN_sign_out;
-	assign mul_add_a 							= mant_a;
-	assign mul_add_b 							= mant_b;
-	assign mul_add_c 							= aligned_mant_c[prod_width:1];
-	assign intermed_compact_state = {special_case, invalid_excep || (!special_case && sign_prod        ),
-													         is_any_NaN            			 || (!special_case && sub_mags         ),
-         													 is_aorb_inf || is_c_inf     || (!special_case && is_c_dominant    ),
-         													 not_NaN_add_zeros     			 || (!special_case && aligned_mant_c[0]),
-         													 special_sign_out};
-	assign intermed_sexp 					= sexp_sum;
-	assign inter_c_dom_calign_dist= c_align_dist[(clog2(mant_width + 1) - 1):0];
-	assign inter_high_align_sig_c = aligned_mant_c[(mant_sum_width - 1):(prod_width + 1)];
-
-endmodule
-
-module mul_add_post_mul#(parameter exp_width = 8, parameter mant_width = 24) 
-( intermed_compact_state, intermed_sexp, inter_c_dom_calign_dist, 
-	inter_high_align_sig_c, mul_add_res, round_mode, invalid_excep, 
-	out_is_NaN, out_is_inf, out_is_zero, out_sign, out_s_exp, out_mant);
-
-function integer clog2;
-  input integer a;
-  
-  begin
-      a = a - 1;
-      for (clog2 = 0; a > 0; clog2 = clog2 + 1) a = a>>1;
-  end
-
-endfunction
-
-	input wire [5:0] intermed_compact_state;
-	input wire signed [(exp_width + 1):0] intermed_sexp;
-	input wire [(clog2(mant_width + 1) - 1):0] inter_c_dom_calign_dist;
-	input wire [(mant_width + 1):0] inter_high_align_sig_c;
-	input wire [mant_width*2:0] mul_add_res;
-	input wire [2:0] round_mode;
-
-	output wire invalid_excep;
-	output wire out_is_NaN;
-	output wire out_is_inf;
-	output wire out_is_zero;
-	output wire out_sign;
-	output wire signed [(exp_width + 1):0] out_s_exp;
-	output wire [(mant_width + 2):0] out_mant;
-
-	localparam prod_width 		= mant_width*2;
-	localparam mant_sum_width = mant_width + prod_width + 3;
-	
-	wire special_case, special_sign_out;
-	wire not_NaN_add_zeros, bit0AlignedSigC;
-	wire sign_prod, sub_mags, is_c_dominant;
-	wire op_sign_c, round_mode_min, c_dom_sign;
-	wire [(mant_width + 1):0] inc_high_aligned_mant_c;
-	wire [(mant_sum_width - 1):0] mant_sum;
-	wire signed [(exp_width + 1):0] c_dom_sexp;
-	wire [(mant_width*2 + 1):0] c_dom_abs_mant_sum;
-	wire c_dom_abs_mant_sum_extra;
-	wire [(mant_width + 4):0] c_dom_main_mant;
-	wire [((mant_width | 3) - 1):0] c_dom_grain_align_low_mant;
-	wire [mant_width/4:0] c_dom_reduce_4_low_mant;
-	wire [(mant_width/4 - 1):0] cdom_mant_extra_mask;
-	wire cdom_reduced_4_mant_extra;
-  wire [(mant_width + 2):0] cdom_mant;
-	wire not_cdom_mant_sum_sign;
-	wire [(prod_width + 2):0] not_cdom_abs_mant_sum;
-	wire [(prod_width + 2)/2:0] not_cdom_reduced2_abs_mant_sum;
-	wire [(clog2(prod_width + 4) - 2):0] not_cdom_norm_dist_reduced2;
-	wire [(clog2(prod_width + 4) - 1):0] not_cdom_near_norm_dist;                
-	wire signed [(exp_width + 1):0] not_cdom_sexp;                         
-	wire [(mant_width + 4):0] not_cdom_main_mant;                        
-	wire [(((mant_width/2 + 1) | 1) - 1):0] cdom_grain_aligned_low_reduced2_mant;
-	wire [(mant_width + 2)/4:0] not_cdom_reduced4_abs_mant_sum;
-	wire [((mant_width + 2)/4 - 1):0] not_cdom_mant_extra_mask;
-	wire not_cdom_reduced4_mant_extra;                                                                                           
-	wire [(mant_width + 2):0] not_cdom_mant;
-	wire not_cdom_complete_cancel,not_cdom_sign;
-	
-	assign special_case  					 = intermed_compact_state[5];
-	assign invalid_excep 					 = special_case && intermed_compact_state[4];
-	assign out_is_NaN    					 = special_case && intermed_compact_state[3];
-	assign out_is_inf    					 = special_case && intermed_compact_state[2];
-	assign not_NaN_add_zeros			 = special_case && intermed_compact_state[1];
-	assign sign_prod        			 = intermed_compact_state[4];
-	assign sub_mags       				 = intermed_compact_state[3];
-	assign is_c_dominant     			 = intermed_compact_state[2];
-	assign bit0AlignedSigC 				 = intermed_compact_state[1];
-	assign special_sign_out 			 = intermed_compact_state[0];
-	assign op_sign_c 				  		 = sign_prod ^ sub_mags;
-	
-	assign inc_high_aligned_mant_c = inter_high_align_sig_c + 1;
-	assign mant_sum 							 = {mul_add_res[prod_width] ? inc_high_aligned_mant_c : inter_high_align_sig_c, 
-																	  mul_add_res[(prod_width - 1):0], bit0AlignedSigC};
-	assign round_mode_min 				 = (round_mode == `round_min);
-  assign c_dom_sign 						 = op_sign_c;
-  assign c_dom_sexp 						 = intermed_sexp - sub_mags;
-  assign c_dom_abs_mant_sum 		 = sub_mags ? ~mant_sum[(mant_sum_width - 1):(mant_width + 1)] : 
-                          				 {1'b0, inter_high_align_sig_c[(mant_width + 1):mant_width], 
-																	 	mant_sum[(mant_sum_width - 3):(mant_width + 2)]};
-
-	assign c_dom_abs_mant_sum_extra   = sub_mags ? !(&mant_sum[mant_width:1]) : |mant_sum[(mant_width + 1):1];
-	assign c_dom_main_mant 					  = (c_dom_abs_mant_sum<<inter_c_dom_calign_dist)>>(mant_width - 3);
-	assign c_dom_grain_align_low_mant = c_dom_abs_mant_sum[(mant_width - 1):0]<<(~mant_width & 3);
-	
-	compress_by4#(mant_width | 3) cdom_abs_mant_sum( c_dom_grain_align_low_mant, c_dom_reduce_4_low_mant);
-
-  low_mask_lo_hi#(clog2(mant_width + 1) - 2, 0, mant_width/4) lowMask_CDom_sigExtraMask
-																	(inter_c_dom_calign_dist[(clog2(mant_width + 1) - 1):2], cdom_mant_extra_mask );
-
-	assign cdom_reduced_4_mant_extra = |(c_dom_reduce_4_low_mant & cdom_mant_extra_mask);
-	assign cdom_mant 								 = {c_dom_main_mant>>3, (|c_dom_main_mant[2:0]) || cdom_reduced_4_mant_extra 
-																		 || c_dom_abs_mant_sum_extra};
-
-	assign not_cdom_mant_sum_sign 	 = mant_sum[prod_width + 3];
-	assign not_cdom_abs_mant_sum 		 = not_cdom_mant_sum_sign ? ~mant_sum[(prod_width + 2):0] : 
-																		 mant_sum[(prod_width + 2):0] + sub_mags;
-    
-  compress_by2#(prod_width + 3) not_cdom_mant_sum( not_cdom_abs_mant_sum, not_cdom_reduced2_abs_mant_sum);
-    
-  lead_zero_param#((prod_width + 2)/2 + 1, clog2(prod_width + 4) - 1) leading_zeros
-																												(not_cdom_reduced2_abs_mant_sum, not_cdom_norm_dist_reduced2);
-    
-	assign not_cdom_near_norm_dist              =  not_cdom_norm_dist_reduced2<<1;
-	assign not_cdom_sexp                        = intermed_sexp - not_cdom_near_norm_dist;
-	assign not_cdom_main_mant                   = ({1'b0, not_cdom_abs_mant_sum}<<not_cdom_near_norm_dist)>>(mant_width-1);
-	assign cdom_grain_aligned_low_reduced2_mant = not_cdom_reduced2_abs_mant_sum[mant_width/2:0]<<((mant_width/2) & 1);
-
-	
-	compress_by2#((mant_width/2 + 1) | 1) not_cdom_reduced2_absmantsum
-																									(cdom_grain_aligned_low_reduced2_mant, not_cdom_reduced4_abs_mant_sum);
-	
-	low_mask_lo_hi#(clog2(prod_width + 4)-2,0,(mant_width + 2)/4) not_cdom_mant_mask
-																 (not_cdom_norm_dist_reduced2[(clog2(prod_width + 4) - 2):1], not_cdom_mant_extra_mask );
-	
-	assign not_cdom_reduced4_mant_extra = |(not_cdom_reduced4_abs_mant_sum & not_cdom_mant_extra_mask);
-	assign not_cdom_mant 								= {not_cdom_main_mant>>3, (|not_cdom_main_mant[2:0]) || not_cdom_reduced4_mant_extra};
-	assign not_cdom_complete_cancel 		= (not_cdom_mant[(mant_width + 2):(mant_width + 1)] == 0);
-	assign not_cdom_sign 							  = not_cdom_complete_cancel ? round_mode_min : sign_prod ^ not_cdom_mant_sum_sign;
-	
-	assign out_is_zero 									= not_NaN_add_zeros || (!is_c_dominant && not_cdom_complete_cancel);
-	assign out_sign 										= (special_case && special_sign_out) || (!special_case &&  is_c_dominant && c_dom_sign) 
-																				|| (!special_case && !is_c_dominant && not_cdom_sign   );
-	assign out_s_exp 										= is_c_dominant ? c_dom_sexp : not_cdom_sexp;
-
-	assign out_mant 										= is_c_dominant ? cdom_mant : not_cdom_mant;
-
-endmodule
diff --git "a/verilog/rtl/attachments\0501\051/int_to_float.sv" "b/verilog/rtl/attachments\0501\051/int_to_float.sv"
deleted file mode 100644
index 5b7153d..0000000
--- "a/verilog/rtl/attachments\0501\051/int_to_float.sv"
+++ /dev/null
@@ -1,65 +0,0 @@
-//`include "fpu_lib.sv"
-
-module int_to_float #(parameter int_width = 32, parameter exp_width = 8, parameter sig_width = 24)
-(
-// if number is negative signed_in should be 1  
-  input  wire                    signed_in,
-  input  wire [(int_width-1):0]  num,
-  input  wire [2:0]              round_mode,
-
-  output wire [(exp_width+sig_width)-1:0] out,
-  output wire [4:0]              exceptions
-);
-  wire        sign;
-  wire        is_zero,rounding_overflow;
-
-  wire [4:0]  index, shift_amount;
-  wire [22:0] mantissa;
-  wire [7:0]  exp;
-  wire [31:0] shifted_num;
-  wire [26:0] mant;
-  wire [23:0] rounded_mantissa;
-  wire [31:0] new_num;
-  wire invalid;
-  wire div_by_zero;
-  wire overflow;
-  wire underflow;
-  wire inexact;
-
-// check if input number is zero
-  assign is_zero          = !(|num);
-// determining sign of result  
-  assign sign             = signed_in && num[int_width-1];
-  assign new_num          = sign ? -num : num;
-
-// position of leading one  
-  leading_ones lead_one ( .in  (new_num), .out (index));
-
-// calculating shift amount of the basis of leading one
-  assign shift_amount = 5'd31 - index;
-// shifting number 
-  assign shifted_num = new_num << shift_amount;
-
-// compress number to 27 bits
-  assign mant = {shifted_num[31:6], |shifted_num[5:0]};
-  
-// rounding the number  
-  rounding rounder(.sign(sign), .mantisa(mant), .round_mode(round_mode), .rounded_mantisa(rounded_mantissa), .rounding_overflow(rounding_overflow));
-
-// exponent of the result  
-  assign exp              = index + 8'd127 + rounding_overflow;
-// mantissa of the result  
-  assign mantissa         = rounded_mantissa[22:0];
-// final result  
-  assign out              = is_zero ? {32'd0} : {sign, exp, mantissa};
-
-// redundant exceptions
-  assign invalid          = 1'b0; 
-  assign div_by_zero      = 1'b0;
-  assign overflow         = 1'b0;
-  assign underflow        = 1'b0;
-// inexact result flag  
-  assign inexact          = |mant[2:0];
-  assign exceptions       = {invalid, div_by_zero, overflow, underflow, inexact}; 
-
-endmodule
diff --git "a/verilog/rtl/attachments\0501\051/macro.cfg" "b/verilog/rtl/attachments\0501\051/macro.cfg"
deleted file mode 100644
index 7e0ebba..0000000
--- "a/verilog/rtl/attachments\0501\051/macro.cfg"
+++ /dev/null
@@ -1 +0,0 @@
-mprj 1085 1435 N
diff --git "a/verilog/rtl/attachments\0501\051/min_max.sv" "b/verilog/rtl/attachments\0501\051/min_max.sv"
deleted file mode 100644
index 5c10b41..0000000
--- "a/verilog/rtl/attachments\0501\051/min_max.sv"
+++ /dev/null
@@ -1,48 +0,0 @@
-module min_max#(parameter exp_width = 8, parameter mant_width = 24)
-(
-  input wire [(exp_width + mant_width)-1:0]  a,
-  input wire [(exp_width + mant_width)-1:0]  b,
-  input wire                                 op, // 1 will return max, 0 will return min
-
-  output wire [(exp_width + mant_width)-1:0] out,
-  output wire [4:0]                          exceptions 
-);
-
-  wire [(exp_width + mant_width)-1:0] max, min, qnan, snan;
-  wire [9:0] check_a, check_b;
-  wire comp, both_zero, a_nan, b_nan;
-  wire pos_comp;
-  wire invalid;
-
-  special_check #(exp_width, mant_width) spec_check_a (.in(a), .result(check_a));
-  special_check #(exp_width, mant_width) spec_check_b (.in(b), .result(check_b));
-
-  assign both_zero    = (check_a [3] | check_a [4]) & (check_b [3] | check_b [4]) ;
-
-  assign pos_comp     = (a[(exp_width + mant_width)-2:mant_width-1] == b[(exp_width + mant_width)-2:mant_width-1]) ? 
-                        (a[mant_width-2:0] < b[mant_width-2:0]) : (a[(exp_width + mant_width)-2:mant_width-1] < 
-                         b[(exp_width + mant_width)-2:mant_width-1]);
-
-  assign comp         = (check_a[1] | check_a[2] | check_a[3]) & (check_b[5] | check_b[6] | check_b[4]) ? 1'b1 : 
-                        (check_b[1] | check_b[2] | check_b[3]) & (check_a[5] | check_a[6] | check_a[4]) ? 1'b0 : 
-                        (check_a[1] | check_a[2] | check_a[3]) & (check_b[1] | check_b[2] | check_b[3]) ? !pos_comp : pos_comp;
-  
-
-  assign max          = (both_zero & check_a[4]) ? a : (both_zero & check_a[3]) ? b : check_a[7] ? a : check_a[0] ? 
-                         b : check_b[0] ? a : comp ? b : a;
-
-  assign min          = (both_zero & check_a[4]) ? b : (both_zero & check_a[3]) ? a : check_a[7] ? b : check_a[0] ?
-                         a : check_b[0] ? b : comp ? a : b;
-  
-  assign qnan         = 32'h7fc00000;
-  
-  assign invalid      = check_a[8] || check_b[8];
-
-  assign out          = (((check_a[9] && check_b[9]) | (check_a[8] && check_b[8]) | (check_a[8] & check_b[9]) | (check_a[9] & check_b[8]))
-                         ? qnan :((check_a[9] | check_a[8]) ? b : ((check_b[9] | check_b[8]) ? a : (op ? max : min))));
-  
-  assign exceptions   = {invalid, 4'b0};
-
-endmodule 
-
-  
diff --git "a/verilog/rtl/attachments\0501\051/multiplier.sv" "b/verilog/rtl/attachments\0501\051/multiplier.sv"
deleted file mode 100644
index b4a6e5f..0000000
--- "a/verilog/rtl/attachments\0501\051/multiplier.sv"
+++ /dev/null
@@ -1,98 +0,0 @@
-//`include "fpu_lib.sv"
-module multiplier #(parameter exp_width = 8, parameter mant_width = 24) 
-(
-  input  wire [(exp_width + mant_width-1):0] a,  
-  input  wire [(exp_width + mant_width-1):0] b,  
-  input  wire [2:0]                          round_mode,
-
-  output wire [4:0]                          exceptions,
-  output wire [(exp_width + mant_width)-1:0] out
-);
-  
-  localparam norm_dis_width = 5;
-
-  wire sign_a, sign_b, sign_res;
-  wire exp_a_zero, mant_a_zero, exp_b_zero, mant_b_zero;
-  wire is_a_zero , is_a_special,is_b_zero , is_b_special;    
-  wire is_out_inf, is_out_zero, is_out_NaN;   
-  wire invalid_excep, infinite_excep;
-
-  wire [9:0]                    check_a, check_b;
-  wire [exp_width:0]            adj_exp_a, adj_exp_b;          
-  wire [exp_width:0]            expa, expb;
-  wire [(exp_width-1):0]        exp_a, exp_b;
-  wire [(mant_width-2):0]       mant_a, mant_b;
-  wire [(mant_width-2):0]       subnorm_mant_a, subnorm_mant_b;
-  wire [(norm_dis_width - 1):0] norm_dist_a, norm_dist_b;
-  wire [(exp_width+mant_width):0] oper1, oper2;
-
-  wire                          sign_oper1, sign_oper2;
-  wire [exp_width:0]            exp_oper1, exp_oper2;
-  wire [(mant_width-2):0]       mant_oper1, mant_oper2;
-  wire [mant_width:0]           mant_1, mant_2;
-  wire signed [(exp_width+1):0] sexp_1, sexp_2;
-  wire signed [(exp_width+1):0] exp_unbais;
-  wire [(mant_width*2-1):0]     mant_prod;
-  wire [(mant_width+2):0]       prod_comp;
-  wire is_zero_oper1, is_zero_oper2;
-  
-
-  assign {sign_a, exp_a, mant_a}       = a;
-  assign {sign_b, exp_b, mant_b}       = b;
-
-  special_check #(exp_width, mant_width) spec_check_a (.in(a), .result(check_a));
-  special_check #(exp_width, mant_width) spec_check_b (.in(b), .result(check_b));
-
-  assign exp_a_zero                    = (exp_a == 0);
-  assign exp_b_zero                    = (exp_b == 0);
-  assign mant_a_zero                   = (mant_a == 0);
-  assign mant_b_zero                   = (mant_b == 0);
-  
-  lead_zero_param #(mant_width-1, norm_dis_width) norm_a (mant_a, norm_dist_a);
-  lead_zero_param #(mant_width-1, norm_dis_width) norm_b (mant_b, norm_dist_b);
-  
-  assign subnorm_mant_a                = (mant_a<<norm_dist_a)<<1;
-  assign subnorm_mant_b                = (mant_b<<norm_dist_b)<<1;
-  assign adj_exp_a                     = (exp_a_zero ? norm_dist_a ^ ((1<<(exp_width + 1)) - 1) : exp_a) 
-                                          + ((1<<(exp_width - 1)) | (exp_a_zero ? 2 : 1));
-  assign adj_exp_b                     = (exp_b_zero ? norm_dist_b ^ ((1<<(exp_width + 1)) - 1) : exp_b) 
-                                          + ((1<<(exp_width - 1)) | (exp_b_zero ? 2 : 1));
-  assign is_a_zero                     = exp_a_zero && mant_a_zero;
-  assign is_b_zero                     = exp_b_zero && mant_b_zero;
-  assign is_a_special                  = (adj_exp_a[exp_width:(exp_width - 1)] == 'b11);
-  assign is_b_special                  = (adj_exp_b[exp_width:(exp_width - 1)] == 'b11);
-  assign expa[exp_width:(exp_width-2)] = is_a_special ? {2'b11, !mant_a_zero} : is_a_zero ? 3'b000 
-                                         : adj_exp_a[exp_width:(exp_width - 2)];
-  assign expa[(exp_width - 3):0]       = adj_exp_a;
-  assign expb[exp_width:(exp_width-2)] = is_b_special ? {2'b11, !mant_b_zero} : is_b_zero ? 3'b000
-                                         : adj_exp_b[exp_width:(exp_width - 2)];
-  assign expb[(exp_width - 3):0]       = adj_exp_b;
-  assign oper1                         = {sign_a, expa, exp_a_zero ? subnorm_mant_a : mant_a};
-  assign oper2                         = {sign_b, expb, exp_b_zero ? subnorm_mant_b : mant_b};
-  
-  assign {sign_oper1, exp_oper1, mant_oper1} = oper1;
-  assign {sign_oper2, exp_oper2, mant_oper2} = oper2;
-  assign is_zero_oper1                 = (exp_oper1>>(exp_width - 2) == 'b000);
-  assign is_zero_oper2                 = (exp_oper2>>(exp_width - 2) == 'b000);
-  assign sexp_1                        = exp_oper1;
-  assign sexp_2                        = exp_oper2;
-  assign mant_1                        = {1'b0, !is_zero_oper1, mant_oper1};
-  assign mant_2                        = {1'b0, !is_zero_oper2, mant_oper2};
-  
-  assign infinite_excep                = 1'b0;
-  assign invalid_excep                 = check_a[8] || check_b [8] || ((check_a[7] || check_a[0]) 
-                                         && (check_b[4] || check_b [3])) || ((check_b[7] || check_b[0]) 
-                                         && (check_a[4] || check_a[3]));
-  assign is_out_inf                    = check_a[7] || check_a[0] || check_b[7] || check_b [0];
-  assign is_out_zero                   = check_a[4] || check_a[3] || check_b[4] || check_b [3];
-  assign is_out_NaN                    = check_a[9] || check_b[9];
-  assign sign_res                      = sign_a ^ sign_b;
-  assign exp_unbais                    = sexp_1 + sexp_2 - (1<<exp_width);
-  assign mant_prod                     = mant_1 * mant_2;
-  assign prod_comp                     = {mant_prod[(mant_width*2 - 1):(mant_width - 2)], |mant_prod[(mant_width - 3):0]};
-  
-  round_excep #(exp_width, mant_width+2, exp_width,mant_width,0) round_exception 
-                                          ( .invalid_excep(invalid_excep), .infinite_excep(infinite_excep), .in_is_NaN(is_out_NaN), 
-                                            .in_is_inf(is_out_inf), .in_is_zero(is_out_zero),.in_sign(sign_res),.in_sexp(exp_unbais), 
-                                            .in_mant(prod_comp),.round_mode(round_mode), .result(out), .exceptions(exceptions));
-endmodule
diff --git "a/verilog/rtl/attachments\0501\051/registers.sv" "b/verilog/rtl/attachments\0501\051/registers.sv"
deleted file mode 100644
index f460269..0000000
--- "a/verilog/rtl/attachments\0501\051/registers.sv"
+++ /dev/null
@@ -1,192 +0,0 @@
-module fpu_registers(
-    input  wire        clk,
-    input  wire        rst_l,
-    input  wire [31:0] fpu_result,
-    input  wire [12:0] fpu_valids,
-    input  wire [31:0] addr,
-    input  wire        wren,
-    input  wire [31:0] wrdata,
-    input  wire [4:0]  exceptions,
-
-    output wire        inter_gen,
-    output wire  [31:0] rddata,
-    output wire  [31:0] opA,
-    output wire  [31:0] opB,
-    output wire  [31:0] opC,
-    output wire  [2:0]  frm,
-
-    output  wire [12:0] op_valids
-);
-
-   localparam base_addr = 32'h3000_0000;
-
-   wire fpu_result_valid;
-
-   assign fpu_result_valid = |fpu_valids[12:2];
-    
-   // ----------------------------------------------------------------------
-   // OPERAND_A (RW)
-   //  [31:0]   OPERAND_A
-   localparam OPERAND_A = base_addr + 8'h00;
-
-   wire        addr_A;
-   wire        wr_opA;
-   wire [31:0] opA_ns;
-
-   assign addr_A = (addr[31:0] == OPERAND_A);
-   assign wr_opA = wren && addr_A;
-   assign opA_ns = wrdata;
-
-   rvdffe #(32) opA_ff (.clk(clk), .en(wr_opA), .din(opA_ns), .dout(opA));
-
-
-   // ----------------------------------------------------------------------
-   // OPERAND_B (RW)
-   //  [31:0]   OPERAND_B
-   localparam OPERAND_B = base_addr + 8'h04;
-
-   wire        addr_B;
-   wire        wr_opB;
-   wire [31:0] opB_ns;
-
-   assign addr_B = (addr[31:0] == OPERAND_B);
-   assign wr_opB = wren && addr_B;
-   assign opB_ns = wrdata;
-
-   rvdffe #(32) opB_ff (.clk(clk), .en(wr_opB), .din(opB_ns), .dout(opB));
-
-
-   // ----------------------------------------------------------------------
-   // OPERAND_C (RW)
-   //  [31:0]   OPERAND_C
-   localparam OPERAND_C = base_addr + 8'h08;
-
-   wire        addr_C;
-   wire        wr_opC;
-   wire [31:0] opC_ns;
-
-   assign addr_C = (addr[31:0] == OPERAND_C);
-   assign wr_opC = wren && addr_C;
-   assign opC_ns = wrdata;
-
-   rvdffe #(32) opC_ff (.clk(clk), .en(wr_opC), .din(opC_ns), .dout(opC));
-
-
-   // ----------------------------------------------------------------------
-   // RESULT (RW)
-   //  [31:0]   RESULT
-   localparam RESULT = base_addr + 8'h0C;
-
-   wire        addr_result;
-   wire        wr_result;
-   wire [31:0] result_ns;
-   wire [31:0] result;
-
-   assign addr_result = (addr[31:0] == RESULT);
-   assign wr_result   = fpu_result_valid;
-   assign result_ns   = fpu_result;
-
-   rvdffe #(32) result_ff (.clk(clk), .en(wr_result), .din(result_ns), .dout(result));
-
-
-   // ----------------------------------------------------------------------
-   // OPERATION_COMPLETED (RW)
-   //  [1:0]   op
-   //  [14:2]  operation_in_flight
-   //  [31:15] reserved
-   localparam OPERATION_COMPLETED = base_addr + 8'h10;
-
-   wire        addr_op_comp;
-   wire        wr_op_comp;
-   wire [12:0] op_comp_ns;
-   wire [12:0] op_comp;
-
-   assign addr_op_comp = (addr[31:0] == OPERATION_COMPLETED);
-   assign wr_op_comp   = fpu_result_valid;
-   assign op_comp_ns   = fpu_valids;
-
-   rvdffe #(13) op_comp_ff (.clk(clk), .en(wr_op_comp), .din(op_comp_ns), .dout(op_comp));
-
-
-   // ----------------------------------------------------------------------
-   // INTERRUPT_GENERATION (RC)
-   //  [0]     operation done
-   //  [31:1]  reserved
-   localparam INTERRUPT_GENERATION = base_addr + 8'h14;
-
-   wire        addr_intr_gen;
-   wire        wr_intr_gen;
-   wire        intr_gen_ns;
-   //wire        inter_gen;
-
-   assign addr_intr_gen = (addr[31:0] == INTERRUPT_GENERATION);
-   assign wr_intr_gen   = (addr_intr_gen && !wren) || fpu_result_valid;
-   assign intr_gen_ns   = (addr_intr_gen && !wren) ? 1'b0 : (fpu_result_valid ? 1'b1 : inter_gen);
-
-   rvdffe #(1) intr_gen_ff (.clk(clk), .en(wr_intr_gen), .din(intr_gen_ns), .dout(inter_gen));
-   
-
-   // ----------------------------------------------------------------------
-   // OPERATION (RW)
-   //  [1:0]   op
-   //  [14:2]  operation_in_flight
-   //  [31:15] reserved
-   localparam OPERATION = base_addr + 8'h1C;
-
-   wire        addr_op;
-   wire        wr_op;
-   wire [12:0] op_ns;
-
-   assign addr_op = (addr[31:0] == OPERATION);
-   assign wr_op   = addr_op && wren;
-   assign op_ns   = wrdata;
-
-   rvdffe #(13) op_ff (.clk(clk), .en(wr_op), .din(op_ns), .dout(op_valids));
-
-
-   // ----------------------------------------------------------------------
-   // FCSR (RW)
-   //  [7:5]   frm     - rounding mode
-   //  [4:0]   fflags  - accrued exceptions
-   localparam FFLAGS = base_addr + 8'h20;
-   localparam FRM    = base_addr + 8'h24;
-   localparam FCSR   = base_addr + 8'h28;
-
-   wire  [4:0] fflags;
-   wire  [4:0] fflags_ns;
-   wire  [2:0] frm_ns;
-   wire  [7:0] fcsr_read;
-   wire        frm_addr;
-   wire        fflags_addr;
-   wire        fcsr_addr;
-   wire				 wr_fflags_r;
-   wire				 wr_frm_r;
-   wire				 wr_fcsr_r;   
-
-   assign frm_addr    = (addr == FRM);
-   assign fflags_addr = (addr == FFLAGS);
-   assign fcsr_addr   = (addr == FCSR);
-   assign wr_fflags_r = wren && fflags_addr;
-   assign wr_frm_r    = wren && frm_addr;
-   assign wr_fcsr_r   = wren && fcsr_addr;
-
-   assign fflags_ns   = fpu_result_valid ? exceptions[4:0] : wrdata;
-   assign frm_ns      = frm_addr ? wrdata[2:0] : wrdata[7:5];
-
-   rvdffe #(5)  fflags_ff (.clk(clk), .en(wr_fflags_r | wr_fcsr_r), .din(fflags_ns[4:0]), .dout(fflags[4:0]));
-   rvdffe #(3)  frm_ff    (.clk(clk), .en(wr_frm_r    | wr_fcsr_r), .din(frm_ns[2:0]),    .dout(frm[2:0]));
-
-   assign fcsr_read = {frm, fflags};
-
-   assign rddata    = ({32{addr_A}}        & opA)                |
-                      ({32{addr_B}}        & opB)                |
-                      ({32{addr_C}}        & opC)                |
-                      ({32{addr_result}}   & result)             |
-                      ({32{addr_op_comp}}  & {19'b0, op_comp})   |
-                      ({32{addr_intr_gen}} & {31'b0, inter_gen}) |
-                      ({32{addr_op}}       & {19'b0, op_valids}) |
-                      ({32{frm_addr}}      & {29'b0, frm})       |
-                      ({32{fflags_addr}}   & {27'b0, fflags})    |
-                      ({32{fcsr_addr}}     & {24'b0, fcsr_read});
-
-endmodule
diff --git "a/verilog/rtl/attachments\0501\051/sign_inject.sv" "b/verilog/rtl/attachments\0501\051/sign_inject.sv"
deleted file mode 100644
index 86f4475..0000000
--- "a/verilog/rtl/attachments\0501\051/sign_inject.sv"
+++ /dev/null
@@ -1,23 +0,0 @@
-module sign_inject#(parameter exp_width = 8, parameter mant_width = 24)
-(
-  input  wire [(exp_width + mant_width)-1:0] a,  
-  input  wire [(exp_width + mant_width)-1:0] b,
-  input  wire [1:0] op,
-
-  output wire [(exp_width + mant_width)-1:0] out
-);
-
-  wire                    sign_a, sign_b;
-  wire [exp_width-1:0]    exp_a , exp_b;
-  wire [mant_width-2:0]   mant_a, mant_b;
-
-  assign {sign_a, exp_a, mant_a} = a;
-  assign {sign_b, exp_b, mant_b} = b;
-
-  assign out = ({32{op == 2'b00}} & {sign_b, exp_a, mant_a})      |
-               ({32{op == 2'b01}} & {!sign_b, exp_a, mant_a})     |
-               ({32{op == 2'b10}} & {sign_a^sign_b, exp_a, mant_a});
-
-
-endmodule
-
diff --git "a/verilog/rtl/attachments\0501\051/sqrt_fpu.sv" "b/verilog/rtl/attachments\0501\051/sqrt_fpu.sv"
deleted file mode 100644
index b511f33..0000000
--- "a/verilog/rtl/attachments\0501\051/sqrt_fpu.sv"
+++ /dev/null
@@ -1,140 +0,0 @@
-//`include "fpu_lib.sv"

-

-module sqrt #( parameter exp_width = 8, parameter mant_width = 24, parameter options = 0)

-(

-	input wire clk,

-	input wire rst_l,

-	input wire in_valid,

-	input wire [(exp_width + mant_width)-1:0] a,

-	input wire [2:0] round_mode,

-	input wire cancel,

-

-	output wire in_ready,

-	output wire out_valid,

-	output wire [(exp_width + mant_width)-1:0] out,

-	output wire [4:0] exceptions

-);

-

-function integer clog2;

-  input integer a;

-  

-  begin

-      a = a - 1;

-      for (clog2 = 0; a > 0; clog2 = clog2 + 1) a = a>>1;

-  end

-

-endfunction

-

-	wire is_a_qNaN, is_a_inf, is_a_zero, is_a_sNaN, sign_a;

-	wire signed [(exp_width + 1):0] sexp_a;

-	wire [mant_width:0] mant_a;

-	wire not_sNaN_inval_excep, major_excep;

-	wire is_res_NaN, is_res_inf, is_res_zero, sign_res;

-	wire special_case_a, normal_case_sqrt, normal_case_s;

-	wire even_sqrt, odd_sqrt;

-	wire   [(clog2(mant_width + 3) - 1):0] cycle_num, cycle_num_in;

-	wire   major_exc_z, not_zero_rem_z;

-	wire   is_NaN_z, is_inf_z, is_zero_z, sign_z;

-	wire   signed [(exp_width + 1):0] sexp_z, sexp_z_in;

-	wire   [(mant_width - 2):0] mant_b_z;

-	wire   [2:0] round_mode_z;

-	wire   [(mant_width + 1):0] rem_z, rem_z_in;

-	wire   [(mant_width + 1):0] mantx_z, mantx_z_in;

-	wire idle, entering, entering_norm_case, skip_cycle_2;

-	

-	wire [1:0] dec_hi_mant_a;

-	wire [(mant_width + 2):0] rem; 

-	wire [mant_width:0] bit_mask;

-	wire [(mant_width + 1):0] trail_term;

-	wire signed [(mant_width + 3):0] trail_rem;

-	wire new_bit;

-	wire [2:0] round_mode_out;

-	wire invalid_excep;

-	wire infinite_excep;

-	wire is_out_NaN;

-	wire is_out_inf;

-	wire is_out_zero;

-	wire out_sign;

-	wire signed [(exp_width + 1):0] out_sexp;

-	wire [(mant_width + 2):0] out_mant;

-	wire [(exp_width + mant_width):0] num;

-	wire cancel_reset;

-

-	assign cancel_reset = rst_l & !cancel;

-

-	exponent   #(exp_width, mant_width) exp_a   (.in(a), .out(num));

-

-	mac_spec_check #(exp_width,mant_width ) mac_spec_check (.in(num), .is_qNaN (is_a_qNaN), .is_inf(is_a_inf), .is_zero(is_a_zero), 

-                                                          .is_sNaN(is_a_sNaN),.sign(sign_a), .s_exp(sexp_a), .sig(mant_a) );

-  

-	assign not_sNaN_inval_excep = !is_a_qNaN && !is_a_zero && sign_a;

-	assign major_excep          = is_a_sNaN || not_sNaN_inval_excep;

-	assign is_res_NaN           =  is_a_qNaN || not_sNaN_inval_excep; 

-

-	assign is_res_inf  			    = is_a_inf;  

-	assign is_res_zero 			    = is_a_zero; 

-	assign sign_res    			    = sign_a; 

-	assign special_case_a 	    = is_a_qNaN || is_a_inf || is_a_zero;

-	assign normal_case_sqrt     = !special_case_a && !sign_a;

-	assign normal_case_s 		    = normal_case_sqrt; 	

-	assign even_sqrt            = !sexp_a[0];

-	assign odd_sqrt             =  sexp_a[0];

-	assign idle 							  = (cycle_num == 0);

-	assign in_ready 					  = (cycle_num <= 1);

-	assign entering 					  = in_ready && in_valid;

-	assign entering_norm_case   = entering && normal_case_s;

-	assign skip_cycle_2 			  = (cycle_num == 3) && mantx_z[mant_width + 1];

-    

-	assign cycle_num_in = (entering && !normal_case_s ? 1 : 0) 

-						| (entering_norm_case ? ((sexp_a[0] ? mant_width : mant_width + 1)) : 0)

-						| (!idle && !skip_cycle_2 ? cycle_num - 1 : 0)

-						| (!idle &&  skip_cycle_2 ? 1            : 0);

-

-	rvdffe #(clog2(mant_width + 3)) cycle_num_ff (.clk(clk), .rst_l(cancel_reset), .din(cycle_num_in), .en(!idle || in_valid), .dout(cycle_num));

-

-	rvdffe #(1) major_exc_z_ff (.clk(clk), .rst_l(cancel_reset), .din(major_excep), .en(entering), .dout(major_exc_z));

-	rvdffe #(1) is_NaN_z_ff (.clk(clk), .rst_l(cancel_reset), .din(is_res_NaN), .en(entering), .dout(is_NaN_z));

-	rvdffe #(1) is_inf_z_ff (.clk(clk), .rst_l(cancel_reset), .din(is_res_inf), .en(entering), .dout(is_inf_z));

-	rvdffe #(1) is_zero_z_ff (.clk(clk), .rst_l(cancel_reset), .din(is_res_zero), .en(entering), .dout(is_zero_z));

-	rvdffe #(1) sign_z_ff (.clk(clk), .rst_l(cancel_reset), .din(sign_res), .en(entering), .dout(sign_z));

-

-	assign sexp_z_in = (sexp_a>>>1) + (1<<(exp_width - 1));

-	rvdffe #((exp_width + 2)) sexp_z_ff (.clk(clk), .rst_l(cancel_reset), .din(sexp_z_in), .en(entering_norm_case), .dout(sexp_z));

-	rvdffe #(3) round_mode_z_ff (.clk(clk), .rst_l(cancel_reset), .din(round_mode), .en(entering_norm_case), .dout(round_mode_z));

-

-	assign dec_hi_mant_a 	= mant_a[(mant_width - 1):(mant_width - 2)] - 1;

-	assign rem = (in_ready && !odd_sqrt ? mant_a<<1 : 0) | (in_ready &&  odd_sqrt

-			   ? {dec_hi_mant_a, mant_a[(mant_width - 3):0], 3'b0} : 0) | (!in_ready ? rem_z<<1 : 0);

-	assign bit_mask   = ({{(mant_width + 2){1'b0}}, 1'b1}<<cycle_num)>>2;

-	assign trail_term = (in_ready && even_sqrt ? 1<<mant_width         : 0)

-					  | (in_ready && odd_sqrt  ? 5<<(mant_width - 1)   : 0)

-					  | (!in_ready  ? mantx_z<<1 | bit_mask : 0);

-	assign trail_rem = rem - trail_term;

-	assign new_bit = (0 <= trail_rem);

-	

-	assign rem_z_in = new_bit ? trail_rem : rem;

-	rvdffe #((mant_width + 2)) rem_z_ff (.clk(clk), .rst_l(cancel_reset), .din(rem_z_in), .en(entering_norm_case || (cycle_num > 2)), .dout(rem_z));

-	rvdffe #(1) not_zero_rem_z_ff (.clk(clk), .rst_l(cancel_reset), .din((trail_rem != 0)), .en(entering_norm_case || (!in_ready && new_bit)), .dout(not_zero_rem_z));

-

-	assign mantx_z_in = ( in_ready              ? 1<<mant_width             : 0)

-                          |( in_ready && odd_sqrt  ? new_bit<<(mant_width - 1) : 0)

-                          |(!in_ready              ? mantx_z | bit_mask        : 0);

-	rvdffe #((mant_width + 2)) mantx_z_ff (.clk(clk), .rst_l(cancel_reset), .din(mantx_z_in), .en(entering_norm_case || (!in_ready && new_bit)), .dout(mantx_z));

-

-	assign out_valid      = (cycle_num == 1);

-	assign round_mode_out = round_mode_z;

-	assign invalid_excep  = major_exc_z &&  is_NaN_z;

-	assign infinite_excep = 1'b0;

-	assign is_out_NaN     = is_NaN_z;

-	assign is_out_inf     = is_inf_z;

-	assign is_out_zero    = is_zero_z;

-	assign out_sign       = sign_z;

-	assign out_sexp       = sexp_z;

-	assign out_mant       = {mantx_z, not_zero_rem_z};

-  

-	round_excep #(exp_width, mant_width+2, exp_width,mant_width,0) round_exception 

-																							( .invalid_excep(invalid_excep), .infinite_excep(infinite_excep), .in_is_NaN(is_out_NaN), 

-																								.in_is_inf(is_out_inf), .in_is_zero(is_out_zero),.in_sign(out_sign),.in_sexp(out_sexp), 

-																								.in_mant(out_mant),.round_mode(round_mode), .result(out), .exceptions(exceptions));

-

-endmodule

diff --git "a/verilog/rtl/attachments\0501\051/uprj_netlists.v" "b/verilog/rtl/attachments\0501\051/uprj_netlists.v"
deleted file mode 100644
index 556d924..0000000
--- "a/verilog/rtl/attachments\0501\051/uprj_netlists.v"
+++ /dev/null
@@ -1,28 +0,0 @@
-// SPDX-FileCopyrightText: 2020 Efabless Corporation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//      http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-// SPDX-License-Identifier: Apache-2.0
-
-// Include caravel global defines for the number of the user project IO pads 
-`include "defines.v"
-`define USE_POWER_PINS
-
-`ifdef GL
-    // Assume default net type to be wire because GL netlists don't have the wire definitions
-    `default_nettype wire
-    `include "gl/user_project_wrapper.v"
-    `include "gl/user_proj_example.sv"
-`else
-    `include "user_project_wrapper.v"
-    `include "user_project_example.sv"
-`endif
diff --git "a/verilog/rtl/attachments\0501\051/user_project_example.sv" "b/verilog/rtl/attachments\0501\051/user_project_example.sv"
deleted file mode 100644
index a85198d..0000000
--- "a/verilog/rtl/attachments\0501\051/user_project_example.sv"
+++ /dev/null
@@ -1,342 +0,0 @@
-`include "compare.sv"
-`include "add_sub.sv"
-`include "fpu_lib.sv"
-`include "float_to_int.sv"
-`include "f_class.sv"
-`include "divider.sv"
-`include "min_max.sv"
-`include "multiplier.sv"
-`include "sign_inject.sv"
-`include "int_to_float.sv"
-`include "fused_mul.sv"
-`include "sqrt_fpu.sv"
-`include "registers.sv"
-
-module fpu_top
-(
-  input  wire            clk,                    
-  input  wire            rst_l,                  // active low reset       
-  
-  input  wire            wb_valid,               // valid signal from wb
-  input  wire [31:0]     rdwraddr,               // read/write address from wb
-  input  wire [31:0]     wrdata,                 // write data received from wb
-
-  input  wire [31:0]     la_write,               // wire analyzer write enable
-  input  wire [31:0]     la_data,                // wire analyzer write data
-  input  wire [31:0]     la_addr,                // wire analyzer address
-//outputs
-  output wire            illegal_op,
-  output wire            inter_gen,
-
-  output wire [31:0]     rddata,                 // read  data sent to wb
-  output wire [31:0]     out,                    // to GPIO
-  output wire [4:0]      exceptions              // on hold for now 
-);
-  wire la_write_en;
-
-  wire [31:0] a;                  
-  wire [31:0] b;                       	
-  wire [31:0] c; 	
-
-  wire [1:0]  op_in;
-  wire [1:0]  op_out;	
-
-  wire [2:0]  round_mode;
-
-  wire [10:0] valid_in;                          // (sqrt, div, fma, multi, add-sub, f2i, i2f, min-max, comp, sign_inj, f-class)
-  wire [10:0] valid_out;	
-  
-  wire [31:0] fclass_out;
-
-  wire [4:0]  cmp_exceptions;
-  wire [31:0] cmp_out;
-
-  wire [4:0]  min_max_exceptions;
-  wire [31:0] min_max_out;
-
-  wire [4:0]  itof_exceptions;
-  wire [31:0] itof_out;
-
-  wire [4:0]  ftoi_exceptions;
-  wire [31:0] ftoi_out;
-
-  wire [31:0] sinj_out;
-
-  wire [4:0]  add_sub_exceptions;
-  wire [31:0] add_sub_out;
-
-  wire [4:0]  mul_exceptions;
-  wire [31:0] mul_out;
-
-  wire [4:0]  mac_exceptions;
-  wire [31:0] mac_out;
-
-  wire [4:0]  sqrt_exceptions;
-  wire [31:0] sqrt_out;    
-     		      	       		
-  wire [4:0]  div_exceptions;       		      		
-  wire [31:0] div_out;         
-  wire        div_valid_out;    
-  wire        sqrt_valid_out;   
-  
-  wire [4:0]  excep_temp;   
-  wire [31:0] out_temp;
-
-  wire [31:0] int_rddata;
-  wire [31:0] addr;        
-
-  assign la_write_en              = |la_write;
-  assign addr                     = la_write_en ? la_addr : rdwraddr;
-             		    		
-  fpu_registers csrs             ( .clk             (clk                      ),
-                                   .rst_l           (rst_l                    ),
-                                   .fpu_result      (out                      ),
-                                   .fpu_valids      ({valid_out, op_out}      ),
-                                   .addr            (addr                     ),
-                                   .wren            (wb_valid                 ),
-                                   .wrdata          (wrdata                   ),
-                                   .exceptions      (exceptions               ),
-                                   .rddata          (int_rddata               ),
-                                   .opA             (a                        ),
-                                   .opB             (b                        ),
-                                   .opC             (c                        ),
-                                   .frm             (round_mode               ),
-                                   .op_valids       ({valid_in, op_in}        ),
-                                   .inter_gen       (inter_gen                ));  
-
-  f_class #(8,24) fpu_fclass      ( .in             (a                        ),
-                                    .result         (fclass_out               ) );
-
-  sign_inject #(8,24) fpu_sgn_inj ( .a              (a                        ),
-                                    .b              (b                        ),
-                                    .op             (op_in                    ),
-                                    .out            (sinj_out                 ) );
-
-  compare #(8,24) fpu_comp        ( .a              (a                        ),
-                                    .b              (b                        ),
-                                    .op             (op_in                    ),
-                                    .out            (cmp_out                  ),
-                                    .exceptions     (cmp_exceptions           ) );
-
-  min_max #(8,24) fpu_min_max     ( .a              (a                        ),
-                                    .b              (b                        ),
-                                    .op             (op_in[0]                 ),
-                                    .out            (min_max_out              ), 
-                                    .exceptions     (min_max_exceptions       ) );
-
-  int_to_float #(32,8,24) fpu_i2f ( .signed_in      (op_in[0]                 ),
-                                    .num            (a                        ),
-                                    .round_mode     (round_mode               ),
-                                    .out            (itof_out                 ),
-                                    .exceptions     (itof_exceptions          ) );
-
-  float_to_int #(8,24) fpu_f2i    ( .num            (a                        ),
-                                    .round_mode     (round_mode               ),
-                                    .signed_out     (op_in[0]                 ),
-                                    .out            (ftoi_out                 ),
-                                    .int_exceptions (ftoi_exceptions          ) );
-
-  add_sub fpu_add_sub             ( .in_x           (a                        ),
-                                    .in_y           (b                        ),
-                                    .operation      (op_in[0]                 ),
-                                    .round_mode     (round_mode               ),
-                                    .out_z          (add_sub_out              ),
-                                    .exceptions     (add_sub_exceptions       ) );
-
-  multiplier #(8,24) fpu_mult     ( .a              (a                        ),
-                                    .b              (b                        ),
-                                    .round_mode     (round_mode               ),
-                                    .exceptions     (mul_exceptions           ),
-                                    .out            (mul_out                  ) );
-
-  fused_multiply #(8,24) fpu_fma ( .a               (a                        ),
-                                   .b               (b                        ),
-                                   .c               (c                        ),
-                                   .op              (op_in                    ),
-                                   .round_mode      (round_mode               ),
-                                   .out             (mac_out                  ),          
-                                   .exceptions      (mac_exceptions           ) );
-
-  divider #(8,24) fpu_divider    ( .rst_l           (rst_l                    ),
-                                   .clk             (clk                      ),
-                                   .in_valid        (valid_in[9]              ),
-                                   .a               (a                        ),
-                                   .b               (b                        ),
-                                   .round_mode      (round_mode               ),
-                                   .cancel          (1'b0                     ),
-                                   .in_ready        (                         ),
-                                   .out_valid       (div_valid_out            ),
-                                   .out             (div_out                  ),
-                                   .exceptions      (div_exceptions           ) );
-
-  sqrt #(8,24) fpu_sqrt          ( .clk             (clk                      ),
-                                   .rst_l           (rst_l                    ),
-                                   .in_valid        (valid_in[10]             ),
-                                   .a               (a                        ),
-                                   .round_mode      (round_mode               ),
-                                   .cancel          (1'b0                     ),
-                                   .in_ready        (                         ),
-                                   .out_valid       (sqrt_valid_out           ),
-                                   .out             (sqrt_out                 ),
-                                   .exceptions      (sqrt_exceptions          ) );
-
-// check for illegal op in case of sign inject and compare result
-  assign illegal_op               = ((valid_in[1] || valid_in[2]) && (op_in == 2'b11)) ? 1'b1 : 1'b0;
-
-// output operation performed
-  assign op_out                   = ({valid_in[1] || valid_in[2] || valid_in[3] || valid_in[6] || valid_in[8]}) ? op_in : 2'b0;
-  
-  assign valid_out                = {sqrt_valid_out,div_valid_out,valid_in[8:0]};
-
-// return output data according to module enable
-  assign {out, exceptions}        = ({37{illegal_op}}              & {32'b0      ,5'b0              })  |
-                                    ({37{valid_in[10 & wb_valid]}} & {sqrt_out   ,sqrt_exceptions   })  |
-                                    ({37{valid_in[9] & wb_valid}}  & {div_out    ,div_exceptions    })  |
-                                    ({37{valid_in[8] & wb_valid}}  & {mac_out    ,mac_exceptions    })  |
-                                    ({37{valid_in[7] & wb_valid}}  & {mul_out    ,mul_exceptions    })  |
-                                    ({37{valid_in[6] & wb_valid}}  & {add_sub_out,add_sub_exceptions})  |
-                                    ({37{valid_in[5] & wb_valid}}  & {ftoi_out   ,ftoi_exceptions   })  |
-                                    ({37{valid_in[4] & wb_valid}}  & {itof_out   ,ftoi_exceptions   })  |
-                                    ({37{valid_in[3] & wb_valid}}  & {min_max_out,min_max_exceptions})  |
-                                    ({37{valid_in[2] & wb_valid}}  & {cmp_out    ,cmp_exceptions    })  |
-                                    ({37{valid_in[1] & wb_valid}}  & {sinj_out   ,5'b0              })  |
-                                    ({37{valid_in[0] & wb_valid}}  & {fclass_out ,5'b0              }); 
-
-// data to be read from memory
-  assign rddata                  =  wb_valid ? 32'b0 : la_write_en ? (la_write & la_data) : int_rddata;
-
-endmodule
-	
-	
-	
-// SPDX-FileCopyrightText: 2020 Efabless Corporation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//      http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-// SPDX-License-Identifier: Apache-2.0
-
-`default_nettype none
-/*
- *-------------------------------------------------------------
- *
- * user_proj_example
- *
- * This is an example of a (trivially simple) user project,
- * showing how the user project can connect to the wire
- * analyzer, the wishbone bus, and the I/O pads.
- *
- * This project generates an integer count, which is output
- * on the user area GPIO pads (digital output only).  The
- * wishbone connection allows the project to be controlled
- * (start and stop) from the management SoC program.
- *
- * See the testbenches in directory "mprj_counter" for the
- * example programs that drive this user project.  The three
- * testbenches are "io_ports", "la_test1", and "la_test2".
- *
- *-------------------------------------------------------------
- */
-
-module user_proj_example #(
-    parameter BITS = 32
-)(
-`ifdef USE_POWER_PINS
-    inout vdda1,	// User area 1 3.3V supply
-    inout vdda2,	// User area 2 3.3V supply
-    inout vssa1,	// User area 1 analog ground
-    inout vssa2,	// User area 2 analog ground
-    inout vccd1,	// User area 1 1.8V supply
-    inout vccd2,	// User area 2 1.8v supply
-    inout vssd1,	// User area 1 digital ground
-    inout vssd2,	// User area 2 digital ground
-`endif
-
-    // Wishbone Slave ports (WB MI A)
-    input wb_clk_i,
-    input wb_rst_i,
-    input wbs_stb_i,
-    input wbs_cyc_i,
-    input wbs_we_i,
-    input [3:0] wbs_sel_i,
-    input [31:0] wbs_dat_i,
-    input [31:0] wbs_adr_i,
-    output wbs_ack_o,
-    output [31:0] wbs_dat_o,
-
-    // wire Analyzer Signals
-    input  [127:0] la_data_in,
-    output [127:0] la_data_out,
-    input  [127:0] la_oenb,
-
-    // IOs
-    input  wire [37:0] io_in,
-    output wire [37:0] io_out,
-    output wire [37:0] io_oeb,
-
-	output [2:0]irq
-);
-    wire clk;
-    wire rst;
-
-    wire [31:0] rdata; 
-    wire [31:0] wdata;
-    //wire [BITS-1:0] signal_received;
-
-    wire valid;
-    wire [3:0] wstrb;
-    wire [31:0] la_write;
-
-    // WB MI A
-    assign valid = wbs_cyc_i && wbs_stb_i && (|wbs_sel_i) && wbs_we_i; 
-    //assign wstrb = wbs_sel_i & {4{wbs_we_i}};
-    assign wbs_dat_o = rdata;
-    assign wdata = wbs_dat_i;
-
-    // IO
-    assign io_out[37:32] = 6'b0;
-    assign io_oeb = {(37){~rst}};
-
-    // LA
-    assign la_data_out = {{(127-BITS){1'b0}}, rdata};
-    // Assuming LA probes [31:0] are for controlling the input register  
-    assign la_write = ~la_oenb[31:0] & ~valid;
-    // Assuming LA probes [65:64] are for controlling the count clk & reset  
-    assign clk = (~la_oenb[32]) ? la_data_in[64]: wb_clk_i;
-    assign rst = (~la_oenb[33]) ? la_data_in[65]: wb_rst_i;
-
-
-	wire illegal_op;
-    wire [4:0]exceptions;
-
-	assign irq = illegal_op ? 3'b001 : exceptions[0] ? 3'b010 : exceptions[1] ? 3'b011 : exceptions[2] ? 3'b100 : exceptions[3] ? 					 3'b101 : 3'b000;
-
-
-
-  fpu_top fpu (
-	.clk(clk),                    
-	.rst_l(~rst),                         
-	//.wren(|wstrb),
-	.wb_valid(valid),
-	.la_write(la_write),
-	.la_data(la_data_in[63:32]),
-	.la_addr(la_data_in[31:0]),
-	.rdwraddr(wbs_adr_i),
-	.wrdata(wdata),
-	.rddata(rdata),
-	.illegal_op(illegal_op),
-	.inter_gen(wbs_ack_o),
-	.exceptions(exceptions),
-	.out(io_out[31:0]));
-
-endmodule
-
-`default_nettype wire	
diff --git "a/verilog/rtl/attachments\0501\051/user_project_wrapper.v" "b/verilog/rtl/attachments\0501\051/user_project_wrapper.v"
deleted file mode 100644
index 2a3462b..0000000
--- "a/verilog/rtl/attachments\0501\051/user_project_wrapper.v"
+++ /dev/null
@@ -1,129 +0,0 @@
-// SPDX-FileCopyrightText: 2020 Efabless Corporation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//      http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-// SPDX-License-Identifier: Apache-2.0
-
-`default_nettype none
-/*
- *-------------------------------------------------------------
- *
- * user_project_wrapper
- *
- * This wrapper enumerates all of the pins available to the
- * user for the user project.
- *
- * An example user project is provided in this wrapper.  The
- * example should be removed and replaced with the actual
- * user project.
- *
- *-------------------------------------------------------------
- */
-
-module user_project_wrapper #(
-    parameter BITS = 32
-) (
-`ifdef USE_POWER_PINS
-    inout vdda1,	// User area 1 3.3V supply
-    inout vdda2,	// User area 2 3.3V supply
-    inout vssa1,	// User area 1 analog ground
-    inout vssa2,	// User area 2 analog ground
-    inout vccd1,	// User area 1 1.8V supply
-    inout vccd2,	// User area 2 1.8v supply
-    inout vssd1,	// User area 1 digital ground
-    inout vssd2,	// User area 2 digital ground
-`endif
-
-    // Wishbone Slave ports (WB MI A)
-    input wb_clk_i,
-    input wb_rst_i,
-    input wbs_stb_i,
-    input wbs_cyc_i,
-    input wbs_we_i,
-    input [3:0] wbs_sel_i,
-    input [31:0] wbs_dat_i,
-    input [31:0] wbs_adr_i,
-    output wbs_ack_o,
-    output [31:0] wbs_dat_o,
-
-    // Logic Analyzer Signals
-    input  [127:0] la_data_in,
-    output [127:0] la_data_out,
-    input  [127:0] la_oenb,
-
-    // IOs
-    input  [`MPRJ_IO_PADS-1:0] io_in,
-    output [`MPRJ_IO_PADS-1:0] io_out,
-    output [`MPRJ_IO_PADS-1:0] io_oeb,
-
-    // Analog (direct connection to GPIO pad---use with caution)
-    // Note that analog I/O is not available on the 7 lowest-numbered
-    // GPIO pads, and so the analog_io indexing is offset from the
-    // GPIO indexing by 7 (also upper 2 GPIOs do not have analog_io).
-    inout [`MPRJ_IO_PADS-10:0] analog_io,
-
-    // Independent clock (on independent integer divider)
-    input   user_clock2,
-
-    // User maskable interrupt signals
-    output [2:0] user_irq
-);
-
-/*--------------------------------------*/
-/* User project is instantiated  here   */
-/*--------------------------------------*/
-
-user_proj_example mprj (
-    `ifdef USE_POWER_PINS
-	.vdda1(vdda1),	// User area 1 3.3V power
-	.vdda2(vdda2),	// User area 2 3.3V power
-	.vssa1(vssa1),	// User area 1 analog ground
-	.vssa2(vssa2),	// User area 2 analog ground
-	.vccd1(vccd1),	// User area 1 1.8V power
-	.vccd2(vccd2),	// User area 2 1.8V power
-	.vssd1(vssd1),	// User area 1 digital ground
-	.vssd2(vssd2),	// User area 2 digital ground
-    `endif
-
-    .wb_clk_i(wb_clk_i),
-    .wb_rst_i(wb_rst_i),
-
-    // MGMT SoC Wishbone Slave
-
-    .wbs_cyc_i(wbs_cyc_i),
-    .wbs_stb_i(wbs_stb_i),
-    .wbs_we_i(wbs_we_i),
-    .wbs_sel_i(wbs_sel_i),
-    .wbs_adr_i(wbs_adr_i),
-    .wbs_dat_i(wbs_dat_i),
-    .wbs_ack_o(wbs_ack_o),
-    .wbs_dat_o(wbs_dat_o),
-
-    // Logic Analyzer
-
-    .la_data_in(la_data_in),
-    .la_data_out(la_data_out),
-    .la_oenb (la_oenb),
-
-    // IO Pads
-
-    .io_in (io_in),
-    .io_out(io_out),
-    .io_oeb(io_oeb),
-
-    // IRQ
-    .irq(user_irq)
-);
-
-endmodule	// user_project_wrapper
-
-`default_nettype wire