diff --git a/verilog/dv/FPU_Half/FPU_Half_tb.v b/verilog/dv/FPU_Half/FPU_Half_tb.v
index e5e9efc..fc60c6e 100644
--- a/verilog/dv/FPU_Half/FPU_Half_tb.v
+++ b/verilog/dv/FPU_Half/FPU_Half_tb.v
@@ -136,7 +136,7 @@
             wait(mprj_io_0 == 16'h0000);
             */
             // Observe Output pins [23:8] for FADD/FSUB
-            
+            /*
             wait(mprj_io_0 == 16'h5848);
             wait(mprj_io_0 == 16'h3CE7);
             wait(mprj_io_0 == 16'h5A92);
@@ -153,6 +153,44 @@
             wait(mprj_io_0 == 16'hDCD8);
             wait(mprj_io_0 == 16'hDF04);
             wait(mprj_io_0 == 16'hBD78);
+            */
+            // Observe Output pins [23:8] for FMADD/FMSUB
+            /*
+            wait(mprj_io_0 == 16'h60CB);
+            wait(mprj_io_0 == 16'h3475);
+            wait(mprj_io_0 == 16'h6805);
+            wait(mprj_io_0 == 16'h78E5);
+            wait(mprj_io_0 == 16'h7C00);
+            wait(mprj_io_0 == 16'hDC34);
+            wait(mprj_io_0 == 16'h5698);
+            wait(mprj_io_0 == 16'hBD78);
+            wait(mprj_io_0 == 16'h60B9);
+            wait(mprj_io_0 == 16'h2252);
+            wait(mprj_io_0 == 16'h67F5);
+            wait(mprj_io_0 == 16'h78d8);
+            wait(mprj_io_0 == 16'h7c00);
+            wait(mprj_io_0 == 16'h5d7e);
+            wait(mprj_io_0 == 16'h63dc);
+            wait(mprj_io_0 == 16'h3d78);
+            */
+            // Observe Output pins [23:8] for FNMADD/FNMSUB
+            
+            wait(mprj_io_0 == 16'hE0B9);
+            wait(mprj_io_0 == 16'hA252);
+            wait(mprj_io_0 == 16'hE7F5);
+            wait(mprj_io_0 == 16'hF8D8);
+            wait(mprj_io_0 == 16'hFC00);
+            wait(mprj_io_0 == 16'hDD7E);
+            wait(mprj_io_0 == 16'hE3DC);
+            wait(mprj_io_0 == 16'hBD78);
+            wait(mprj_io_0 == 16'hE0CB);
+            wait(mprj_io_0 == 16'hB475);
+            wait(mprj_io_0 == 16'hE805);
+            wait(mprj_io_0 == 16'hF8E5);
+            wait(mprj_io_0 == 16'hfc00);
+            wait(mprj_io_0 == 16'h5c34);
+            wait(mprj_io_0 == 16'hd698);
+            wait(mprj_io_0 == 16'h3d78);
             
             $display("MPRJ-IO state = %h", mprj_io[23:8]);  
 		
diff --git a/verilog/rtl/FPU/Execution.v b/verilog/rtl/FPU/Execution.v
index 25c7e48..b7c4601 100644
--- a/verilog/rtl/FPU/Execution.v
+++ b/verilog/rtl/FPU/Execution.v
@@ -1,6 +1,6 @@
-module Execution(clk,rst_l,RS1_d,RS2_d,result,Flag_ADDI,Flag_LI,Activation_Signal,Flag_Reset,fpu_active,illegal_config,valid_execution,fs1_data,fs2_data,fs3_data,sfpu_op,fpu_pre,fpu_rounding,float_control,fpu_result_1,S_flag,dec_i0_rs1_en_d,dec_i0_rs2_en_d,IV_exception,fpu_complete,fpu_sel,fpu_result_rd_w,fpu_complete_rd);
-    input clk,rst_l,Flag_ADDI,Flag_LI,Flag_Reset,fpu_active,illegal_config,valid_execution,dec_i0_rs1_en_d,dec_i0_rs2_en_d;
-    input [31:0]RS1_d,RS2_d;
+module Execution(clk,rst_l,RS1_d_w,RS2_d_w,result,Flag_ADDI_w,Flag_LI_w,Activation_Signal,Flag_Reset_w,fpu_active,illegal_config,valid_execution,fs1_data,fs2_data,fs3_data,sfpu_op,fpu_pre,fpu_rounding,float_control,fpu_result_1,S_flag,dec_i0_rs1_en_d,dec_i0_rs2_en_d,IV_exception,fpu_complete,fpu_sel,fpu_result_rd_w,fpu_complete_rd);
+    input clk,rst_l,Flag_ADDI_w,Flag_LI_w,Flag_Reset_w,fpu_active,illegal_config,valid_execution,dec_i0_rs1_en_d,dec_i0_rs2_en_d;
+    input [31:0]RS1_d_w,RS2_d_w;
     input [15:0]fs1_data,fs2_data,fs3_data;
     input [23:0]sfpu_op;
     input [2:0]fpu_pre,fpu_rounding;
@@ -15,9 +15,33 @@
     output [31:0]fpu_result_rd_w;
     output fpu_complete_rd;
 
+    reg [31:0]RS1_d,RS2_d;
+    reg Flag_ADDI,Flag_LI,Flag_Reset;
+
     wire [31:0]result_w;
     wire complete; 
 
+    always @(posedge clk)
+    begin
+        if(rst_l == 1'b0)
+        begin
+            RS1_d <= 32'h00000000;
+            RS2_d <= 32'h00000000;
+            Flag_ADDI <= 1'b0;
+            Flag_LI <= 1'b0;
+            Flag_Reset <= 1'b0;
+        end
+        else
+        begin
+            RS1_d <= RS1_d_w;
+            RS2_d <= RS2_d_w;
+            Flag_ADDI <= Flag_ADDI_w;
+            Flag_LI <= Flag_LI_w;
+            Flag_Reset <= Flag_Reset_w;
+        end
+
+    end
+
     FPU_exu FPU_Execution(
                          .clk(clk),
                          .rst_l(rst_l),
@@ -29,8 +53,8 @@
                          .fpu_pre(fpu_pre),
                          .dec_i0_rs1_en_d(dec_i0_rs1_en_d),                               // Qualify GPR RS1 data
                          .dec_i0_rs2_en_d(dec_i0_rs2_en_d),                               // Qualify GPR RS2 data
-                         .gpr_i0_rs1_d(RS1_d),                                  // DEC data gpr
-                         .gpr_i0_rs2_d(RS2_d),                                  // DEC data gpr
+                         .gpr_i0_rs1_d(RS1_d_w),                                  // DEC data gpr
+                         .gpr_i0_rs2_d(RS2_d_w),                                  // DEC data gpr
                          .fs1_data(fs1_data),
                          .fs2_data(fs2_data),
                          .fs3_data(fs3_data),
diff --git a/verilog/rtl/FPU/FPU_CSR.v b/verilog/rtl/FPU/FPU_CSR.v
index fd3fa85..93812c9 100644
--- a/verilog/rtl/FPU/FPU_CSR.v
+++ b/verilog/rtl/FPU/FPU_CSR.v
@@ -33,7 +33,10 @@
         begin
             fflag <= (fflag_w & CSR_Write) ? CSR_Write_Data[4:0] : (fcsr_w & CSR_Write) ? CSR_Write_Data[4:0] : (fpu_complete) ? (fflag[4:0] | S_flag[4:0]) : fflag;
             frm <= (frm_w & CSR_Write) ? CSR_Write_Data[2:0] : (fcsr_w & CSR_Write) ? CSR_Write_Data[7:5] : frm;
-            fcsr <= (fcsr_w & CSR_Write) ? {24'h00000,CSR_Write_Data[7:0]} : (fpu_complete) ? ({24'h000000,frm,(fflag[4:0] | S_flag[4:0])}) : fcsr;
+            fcsr <= (fcsr_w & CSR_Write) ? {24'h00000,CSR_Write_Data[7:0]} : 
+                    (frm_w & CSR_Write) ? ({24'h000000,CSR_Write_Data[2:0],fflag[4:0]}) : 
+                    (fflag_w & CSR_Write) ? ({24'h000000,frm,CSR_Write_Data[4:0]}) : 
+                    (fpu_complete) ? ({24'h000000,frm,(fflag[4:0] | S_flag[4:0])}) : fcsr;
         end
     end
 
diff --git a/verilog/rtl/FPU/FPU_FSM_Control_Decode.v b/verilog/rtl/FPU/FPU_FSM_Control_Decode.v
index 8bd5804..ef6757c 100644
--- a/verilog/rtl/FPU/FPU_FSM_Control_Decode.v
+++ b/verilog/rtl/FPU/FPU_FSM_Control_Decode.v
@@ -2,103 +2,28 @@
   input clk,rst_l,Activation_Signal,Active_Process,Multi_Cycle;
   input [31:0]Instruction;
   output Memory_Activation;
-  //output [23:0]Output_1_Hot_Encoded_Opcode;
   output reg[31:0]PC;
   output [31:0]Instruction_out;
 
-  //wire [23:0]Uncontrolled_Opcode;
-  reg [1:0]State;
-  wire [1:0]Next_State;
+  reg [2:0]State;
+  wire [2:0]Next_State;
   wire [4:0]Input_Opcode;
   wire Exception;
 
-  /*
-  sfpu[0] = Fadd
-  sfpu[1] = Fsubb
-  sfpu[2] = Fmul
-  sfpu[3] = Fdiv
-  sfpu[4] = Fsqrt
-  sfpu[5] = Fmin
-  sfpu[6] = Fmax
-  sfpu[7] = Fmvx
-  sfpu[8] = Fmvf
-  sfpu[9] = feq
-  sfpu[10] = flt
-  sfpu[11] = fle
-  sfpu[12] = Fmadd
-  sfpu[13] = Fmsubb
-  sfpu[14] = FCVT.W.P
-  sfpu[15] = FCVT.P.W
-  sfpu[16] = Fnmsubb
-  sfpu[17] = Fnmadd
-  sfpu[18] = fsgnj
-  sfpu[19] = fsgnjn
-  sfpu[20] = fsgnjx
-  sfpu[21] = fclass
-  sfpu[22] = unsign
-  sfpu[23] = sign
-  */
-  /*
-  assign Input_Opcode = Instruction[4:0];
-
-  assign Output_1_Hot_Encoded_Opcode[0] = ~Input_Opcode[4] & ~Input_Opcode[3] & ~Input_Opcode[2] & ~Input_Opcode[1] & ~Input_Opcode[0];
-  assign Output_1_Hot_Encoded_Opcode[1] = ~Input_Opcode[4] & ~Input_Opcode[3] & ~Input_Opcode[2] & ~Input_Opcode[1] & Input_Opcode[0];
-  assign Output_1_Hot_Encoded_Opcode[2] = ~Input_Opcode[4] & ~Input_Opcode[3] & ~Input_Opcode[2] & Input_Opcode[1] & ~Input_Opcode[0];
-  assign Output_1_Hot_Encoded_Opcode[3] = ~Input_Opcode[4] & ~Input_Opcode[3] & ~Input_Opcode[2] & Input_Opcode[1] & Input_Opcode[0];
-  assign Output_1_Hot_Encoded_Opcode[4] = ~Input_Opcode[4] & ~Input_Opcode[3] & Input_Opcode[2] & ~Input_Opcode[1] & ~Input_Opcode[0];
-  assign Output_1_Hot_Encoded_Opcode[5] = ~Input_Opcode[4] & ~Input_Opcode[3] & Input_Opcode[2] & ~Input_Opcode[1] & Input_Opcode[0];
-  assign Output_1_Hot_Encoded_Opcode[6] = ~Input_Opcode[4] & ~Input_Opcode[3] & Input_Opcode[2] & Input_Opcode[1] & ~Input_Opcode[0];
-  assign Output_1_Hot_Encoded_Opcode[7] = ~Input_Opcode[4] & ~Input_Opcode[3] & Input_Opcode[2] & Input_Opcode[1] & Input_Opcode[0];
-  assign Output_1_Hot_Encoded_Opcode[8] = ~Input_Opcode[4] & Input_Opcode[3] & ~Input_Opcode[2] & ~Input_Opcode[1] & ~Input_Opcode[0];
-  assign Output_1_Hot_Encoded_Opcode[9] = ~Input_Opcode[4] & Input_Opcode[3] & ~Input_Opcode[2] & ~Input_Opcode[1] & Input_Opcode[0];
-  assign Output_1_Hot_Encoded_Opcode[10] = ~Input_Opcode[4] & Input_Opcode[3] & ~Input_Opcode[2] & Input_Opcode[1] & ~Input_Opcode[0];
-  assign Output_1_Hot_Encoded_Opcode[11] = ~Input_Opcode[4] & Input_Opcode[3] & ~Input_Opcode[2] & Input_Opcode[1] & Input_Opcode[0];
-  assign Output_1_Hot_Encoded_Opcode[12] = ~Input_Opcode[4] & Input_Opcode[3] & Input_Opcode[2] & ~Input_Opcode[1] & ~Input_Opcode[0];
-  assign Output_1_Hot_Encoded_Opcode[13] = ~Input_Opcode[4] & Input_Opcode[3] & Input_Opcode[2] & ~Input_Opcode[1] & Input_Opcode[0];
-  assign Output_1_Hot_Encoded_Opcode[14] = ~Input_Opcode[4] & Input_Opcode[3] & Input_Opcode[2] & Input_Opcode[1] & ~Input_Opcode[0];
-  assign Output_1_Hot_Encoded_Opcode[15] = ~Input_Opcode[4] & Input_Opcode[3] & Input_Opcode[2] & Input_Opcode[1] & Input_Opcode[0];
-  assign Output_1_Hot_Encoded_Opcode[16] = Input_Opcode[4] & ~Input_Opcode[3] & ~Input_Opcode[2] & ~Input_Opcode[1] & ~Input_Opcode[0];
-  assign Output_1_Hot_Encoded_Opcode[17] = Input_Opcode[4] & ~Input_Opcode[3] & ~Input_Opcode[2] & ~Input_Opcode[1] & Input_Opcode[0];
-  assign Output_1_Hot_Encoded_Opcode[18] = Input_Opcode[4] & ~Input_Opcode[3] & ~Input_Opcode[2] & Input_Opcode[1] & ~Input_Opcode[0];
-  assign Output_1_Hot_Encoded_Opcode[19] = Input_Opcode[4] & ~Input_Opcode[3] & ~Input_Opcode[2] & Input_Opcode[1] & Input_Opcode[0];
-  assign Output_1_Hot_Encoded_Opcode[20] = Input_Opcode[4] & ~Input_Opcode[3] & Input_Opcode[2] & ~Input_Opcode[1] & ~Input_Opcode[0];
-  assign Output_1_Hot_Encoded_Opcode[21] = Input_Opcode[4] & ~Input_Opcode[3] & Input_Opcode[2] & ~Input_Opcode[1] & Input_Opcode[0];
-  assign Output_1_Hot_Encoded_Opcode[22] = Input_Opcode[4] & ~Input_Opcode[3] & Input_Opcode[2] & Input_Opcode[1] & ~Input_Opcode[0];
-  assign Output_1_Hot_Encoded_Opcode[23] = Input_Opcode[4] & ~Input_Opcode[3] & Input_Opcode[2] & Input_Opcode[1] & Input_Opcode[0];
-
-  //assign Single_Cycle = (Output_1_Hot_Encoded_Opcode[0] | Output_1_Hot_Encoded_Opcode[1] | Output_1_Hot_Encoded_Opcode[2] | Output_1_Hot_Encoded_Opcode[5] | Output_1_Hot_Encoded_Opcode[6] | Output_1_Hot_Encoded_Opcode[7] | Output_1_Hot_Encoded_Opcode[8] | Output_1_Hot_Encoded_Opcode[9] | Output_1_Hot_Encoded_Opcode[10] | Output_1_Hot_Encoded_Opcode[11] | Output_1_Hot_Encoded_Opcode[14] | Output_1_Hot_Encoded_Opcode[15] | Output_1_Hot_Encoded_Opcode[18] | Output_1_Hot_Encoded_Opcode[19] | Output_1_Hot_Encoded_Opcode[20] | Output_1_Hot_Encoded_Opcode[21] | Output_1_Hot_Encoded_Opcode[22] | Output_1_Hot_Encoded_Opcode[23]);
-  assign Multi_Cycle = (Output_1_Hot_Encoded_Opcode[3] | Output_1_Hot_Encoded_Opcode[4] | Output_1_Hot_Encoded_Opcode[12] | Output_1_Hot_Encoded_Opcode[13] | Output_1_Hot_Encoded_Opcode[16] | Output_1_Hot_Encoded_Opcode[17]);
-  */
-  //assign Multi_Cycle = 1'b0;
-  assign Memory_Activation = (((~Next_State[1]) & (Next_State[0])) & (Active_Process));
-  assign Next_State[0] = (((~State[0]) & (State[1] | Active_Process)) | ((State[1] & State[0]) & ((~Activation_Signal) | (Activation_Signal & (~Multi_Cycle)))));
-  assign Next_State[1] = (((~State[1]) & (State[0])) | ((State[1]) & (~State[0])) | (State[1] & State[0] & (~Activation_Signal)));
-  assign Instruction_out = (~rst_l) ? 32'h00000000 : (State == 2'b10) ? Instruction : 32'h00000000;
+  assign Memory_Activation = (((~Next_State[2]) & (~Next_State[1]) & (Next_State[0])) & (Active_Process));
+  assign Next_State[0] = ((((~State[2]) & (~State[0])) & (State[0] | Active_Process)) | ((State[2]) & (~State[1]) & (~State[0]) & (~Multi_Cycle) & (Activation_Signal)));
+  assign Next_State[1] = (((~State[2]) & (~State[1]) & (State[0])) | ((~State[2]) & (State[1]) & (~State[0])));
+  assign Next_State[2] = (((~State[2]) & (State[1]) & (State[0])) | ((State[2]) & (~State[1]) & (~State[0]) & (~Activation_Signal)));
+  assign Instruction_out = (~rst_l) ? 32'h00000000 : (State == 3'b010) ? Instruction : 32'h00000000;
   always @(posedge clk)
-    PC <= (~rst_l) ? 32'h00000000 : ((State == 2'b01) ? (PC[31:0] + 4'h4) : (Instruction == 32'h00000010) ? 32'h00000000 : PC);
+    PC <= (~rst_l) ? 32'h00000000 : ((State == 3'b001) ? (PC[31:0] + 4'h4) : (Instruction == 32'h00000010) ? 32'h00000000 : PC);
 
   //sequential State register block
   always @(posedge clk)
-    State <= (~rst_l) ? 2'b00 : Next_State;
-
-
-  //combinational State assignment block  
-  /*always @(posedge clk)
-  begin
-    if(Next_State==2'b00)
-      Output_1_Hot_Encoded_Opcode <= 24'h000000;
-    else if(State==2'b01)
-      Output_1_Hot_Encoded_Opcode <= Uncontrolled_Opcode;
-    else
-      Output_1_Hot_Encoded_Opcode <= Uncontrolled_Opcode;
-  end*/
-
-  /*initial 
-  begin
-    $dumpfile("FPU_FSM.vcd");
-    $dumpvars(0);
-  end*/
+    State <= (~rst_l) ? 3'b000 : Next_State;
 
 endmodule
    
 
+
+
diff --git a/verilog/rtl/FPU/FPU_FSM_TOP.v b/verilog/rtl/FPU/FPU_FSM_TOP.v
index e381fda..bc26f76 100644
--- a/verilog/rtl/FPU/FPU_FSM_TOP.v
+++ b/verilog/rtl/FPU/FPU_FSM_TOP.v
@@ -100,9 +100,13 @@
     wire IV_exception;
     wire[2:0]fpu_sel;
     wire [31:0]fpu_result_rd_w;
+    
+
+
 
     assign FPU_hp_result = (rst_l == 1'b0) ? 16'h0000 : (fpu_complete_rd & Active_Process) ? fpu_result_rd_w[15:0] : (fpu_complete & ~fpu_complete_rd & Active_Process) ? fpu_result_1 : 16'h0000;
     
+    
     FPU_FSM FSM(
                 .clk(clk),
                 .rst_l(rst_l),
@@ -189,13 +193,13 @@
     Execution Excecution_Unit(
                             .clk(clk),
                             .rst_l(rst_l),
-                            .RS1_d(RS1_d),
-                            .RS2_d(RS2_d),
+                            .RS1_d_w(RS1_d),
+                            .RS2_d_w(RS2_d),
                             .result(result),
-                            .Flag_ADDI(Flag_ADDI),
-                            .Flag_LI(Flag_LI),
+                            .Flag_ADDI_w(Flag_ADDI),
+                            .Flag_LI_w(Flag_LI),
                             .Activation_Signal(Activation_Signal),
-                            .Flag_Reset(Flag_Reset),
+                            .Flag_Reset_w(Flag_Reset),
                             .fpu_active(fpu_active),
                             .illegal_config(illegal_config),
                             .valid_execution(valid_execution),
diff --git a/verilog/rtl/FPU/FPU_Top_Single_Cycle.v b/verilog/rtl/FPU/FPU_Top_Single_Cycle.v
index 79cf168..17379a5 100644
--- a/verilog/rtl/FPU/FPU_Top_Single_Cycle.v
+++ b/verilog/rtl/FPU/FPU_Top_Single_Cycle.v
@@ -13,7 +13,7 @@
 `include "LZD_comb.v"
 `include "LZD_mux.v"*/
 
-module FPU_Top (Operand_A,Operand_B,Operand_C, clk,rst_l, frm, sfpu_op,vfpu_op,fpu_sel,FPU_resultant, S_Flags, Exception_flag, interupt_Pin,FPU_Result_rd,Operand_Int);
+module FPU_Top (Operand_A_w,Operand_B_w,Operand_C_w, clk,rst_l, frm_w, sfpu_op_w,vfpu_op_w,fpu_sel_w,FPU_resultant, S_Flags, Exception_flag, interupt_Pin,FPU_Result_rd,Operand_Int_w);
 
 parameter std= 15;
 parameter man = 9;
@@ -23,13 +23,13 @@
 
 
 //inputs
-input [std:0] Operand_A,Operand_B,Operand_C;
+input [std:0] Operand_A_w,Operand_B_w,Operand_C_w;
 input clk,rst_l;
-input [2:0] frm;
-input [23:0] sfpu_op;
-input [2:0]  fpu_sel;
-input [27:0] vfpu_op;
-input [31:0] Operand_Int;
+input [2:0] frm_w;
+input [23:0] sfpu_op_w;
+input [2:0]  fpu_sel_w;
+input [27:0] vfpu_op_w;
+input [31:0] Operand_Int_w;
 
 //output 
 output  [std:0]    FPU_resultant;
@@ -42,7 +42,38 @@
 reg [std:0]    FPU_resultant_reg;
 reg[31:0] FPU_Result_rd_reg;
 reg [4:0]   S_Flags_reg;
+reg [std:0] Operand_A,Operand_B,Operand_C;
+reg [2:0] frm;
+reg [23:0] sfpu_op;
+reg [2:0]  fpu_sel;
+reg [27:0] vfpu_op;
+reg [31:0] Operand_Int;
 
+  always @(posedge clk)
+  begin
+    if(rst_l == 1'b0)
+    begin
+      Operand_A <= {(std+1){1'b0}};
+      Operand_B <= {(std+1){1'b0}};
+      Operand_C <= {(std+1){1'b0}};
+      frm <= 3'b000;
+      sfpu_op <= 24'h000000;
+      fpu_sel <= 3'b000;
+      vfpu_op <= 28'h0000000;
+      Operand_Int <= 32'h00000000;
+    end
+    else
+    begin
+      Operand_A <= Operand_A_w;
+      Operand_B <= Operand_B_w;
+      Operand_C <= Operand_C_w;
+      frm <= frm_w;
+      sfpu_op <= sfpu_op_w;
+      fpu_sel <= fpu_sel_w;
+      vfpu_op <= vfpu_op_w;
+      Operand_Int <= Operand_Int_w;
+    end
+  end
 //assigment of interim register on outptu ports
 assign FPU_resultant = (rst_l) ? FPU_resultant_reg:32'h00000000;
 assign S_Flags = (rst_l) ? S_Flags_reg:5'b00000 ;
diff --git a/verilog/rtl/FPU/FPU_exu.v b/verilog/rtl/FPU/FPU_exu.v
index eaa4786..479cfdf 100644
--- a/verilog/rtl/FPU/FPU_exu.v
+++ b/verilog/rtl/FPU/FPU_exu.v
@@ -36,6 +36,8 @@
 wire [4:0] fpu_flags;
 wire [31:0]FPU_Result_rd,Operand_Int;
 
+reg [23:0] sfpu_op_r2;
+
 // sfpu_op [0]  = fadd
 // sfpu_op [1]  = fsub
 // sfpu_op [2]  = fmul
@@ -61,16 +63,19 @@
 // sfpu_op [22] = unsign
 // sfpu_op [23] = sign
 
-        rvdffe    #(24) sfpu_op_ff  (.*, .clk(clk), .en(valid_execution & fpu_sel[0]),   .din(sfpu_op),   .dout(sfpu_op_r));
+        rvdffsc    #(24) sfpu_op_ff (.clk(clk), .rst_l(rst_l), .en(valid_execution & fpu_sel[0]), .clear((/*(~valid_execution & ~fpu_active) & */fpu_complete)), .din(sfpu_op), .dout(sfpu_op_r));  
+		//rvdffe    #(24) sfpu_op_ff  (.*, .clk(clk), .en(valid_execution & fpu_sel[0]),   .din(sfpu_op),   .dout(sfpu_op_r));
 	//rvdffe    #(FPLEN) fpu_result_ff  (.*, .clk(clk), .en(fpu_complete),   .din(fpu_result_exu),   .dout(fpu_result_1));
 	rvdffs    #(5)  fpu_flags_ff   (.*, .clk(clk), .en(fpu_complete),   .din(fpu_flags),        .dout(sflags));
 	
 	always @(posedge clk) begin
 		if(rst_l == 1'b0) begin
 			sfpu_alu_valid_r <= 1'b0;
+			sfpu_op_r2 <= 24'h000000;
 		end
 		else begin
-			sfpu_alu_valid_r <= (|sfpu_op[2:0]) | (|sfpu_op[17:5]) | (|sfpu_op[21:18]);
+			sfpu_alu_valid_r <= (|sfpu_op_r[2:0]) | (|sfpu_op_r[17:5]) | (|sfpu_op_r[21:18]);
+			sfpu_op_r2 <= sfpu_op_r;
 		end
 	end
 	
@@ -87,19 +92,19 @@
 	FPU_Top Floating_Top (
 				.clk(clk),
 				.rst_l(rst_l),
-				.frm(fpu_rnd),
-				.sfpu_op(sfpu_op),
-				.vfpu_op(28'h0000000),
-				.fpu_sel(fpu_sel),
-				.Operand_A(fs1_d),
-				.Operand_B(fs2_d),
-				.Operand_C(fs3_d),    
+				.frm_w(fpu_rnd),
+				.sfpu_op_w(sfpu_op),
+				.vfpu_op_w(28'h0000000),
+				.fpu_sel_w(fpu_sel),
+				.Operand_A_w(fs1_d),
+				.Operand_B_w(fs2_d),
+				.Operand_C_w(fs3_d),    
 				.FPU_resultant(fpu_result_top), 
 				.S_Flags(fpu_flags),
 				.Exception_flag(IV_exception),
 				.interupt_Pin(),
 				.FPU_Result_rd(FPU_Result_rd),
-				.Operand_Int(Operand_Int)
+				.Operand_Int_w(Operand_Int)
 			      );
 
 
@@ -107,11 +112,11 @@
 	assign fpu_complete = (rst_l == 1'b0) ? 1'b0 : (sfpu_alu_valid_r) ? 1'b1 : 1'b0;
 	
 	// FPU FPR Result
-	assign fpu_result_1 = (rst_l == 1'b0) ? {FPLEN{1'b0}} : (fpu_complete & (|sfpu_op_r[2:0] | (|sfpu_op_r[17:15]) | sfpu_op_r[7] | (|sfpu_op_r[20:18]) | (|sfpu_op_r[6:5]) | (|sfpu_op_r[13:12]))) ? fpu_result_top : {FPLEN{1'b0}};
+	assign fpu_result_1 = (rst_l == 1'b0) ? {FPLEN{1'b0}} : (fpu_complete & (|sfpu_op_r2[2:0] | (|sfpu_op_r2[17:15]) | sfpu_op_r2[7] | (|sfpu_op_r2[20:18]) | (|sfpu_op_r2[6:5]) | (|sfpu_op_r2[13:12]))) ? fpu_result_top : {FPLEN{1'b0}};
 								   
 	
 	// FPU GPR result
-	assign fpu_result_rd = (rst_l == 1'b0) ? {32{1'b0}} : (fpu_complete & ((|sfpu_op_r[11:9]) | sfpu_op_r[14] | sfpu_op_r[8] | sfpu_op_r[21])) ? FPU_Result_rd : 
+	assign fpu_result_rd = (rst_l == 1'b0) ? {32{1'b0}} : (fpu_complete & ((|sfpu_op_r2[11:9]) | sfpu_op_r2[14] | sfpu_op_r2[8] | sfpu_op_r2[21])) ? FPU_Result_rd : 
 								   {32{1'b0}};
-	assign fpu_complete_rd = (~rst_l) ? 1'b0 : (fpu_complete & ((|sfpu_op_r[11:8]) | sfpu_op_r[14] | sfpu_op_r[21])) ? 1'b1 : 1'b0;
+	assign fpu_complete_rd = (~rst_l) ? 1'b0 : (fpu_complete & ((|sfpu_op_r2[11:8]) | sfpu_op_r2[14] | sfpu_op_r2[21])) ? 1'b1 : 1'b0;
 endmodule
diff --git a/verilog/rtl/FPU/Main_Decode.v b/verilog/rtl/FPU/Main_Decode.v
index 95a0e39..37cf693 100644
--- a/verilog/rtl/FPU/Main_Decode.v
+++ b/verilog/rtl/FPU/Main_Decode.v
@@ -17,10 +17,9 @@
     wire [2:0] fpu_rnd,Fpu_Frm;
     wire [11:0]IMM_ADDI,CSR_Addr;
     wire [31:0]IMM_LI;
-    reg [4:0]rd;
+    reg [4:0]rd,rd_wb;
     wire [4:0] rd_address;
     wire [4:0]rs1,rs2,rs1_address,rs2_address;
-    //reg [31:0]Instruction_reg;
     wire [31:0]gpr_rs1,gpr_rs2;
     wire [2:0] Function_CSR;
     wire [31:0] CSR_Read_Data,CSR_Write_Data;
@@ -32,20 +31,21 @@
     wire write_en;
     wire illegal_instr;
     wire [23:0]sfpu_op_w;
+    wire Flag_CSR_r1;
+    wire CSR_Read_r1;
+    wire [31:0] CSR_Read_Data_r1;
 
+    rvdffsc    #(1) CSR_Flag_ff (.clk(clk), .rst_l(rst_l), .en(Flag_CSR), .clear(~Flag_CSR), .din(Flag_CSR), .dout(Flag_CSR_r1));
+    rvdffsc    #(1) CSR_Read_ff (.clk(clk), .rst_l(rst_l), .en(Flag_CSR), .clear(~Flag_CSR), .din((CSR_Read & ~fpu_active)), .dout(CSR_Read_r1));
+    rvdffsc    #(32) CSR_Read_Data_ff (.clk(clk), .rst_l(rst_l), .en(Flag_CSR), .clear(~Flag_CSR), .din(CSR_Read_Data), .dout(CSR_Read_Data_r1));
+    
     always @(posedge clk)
     begin
-       /* if (rst_l)
-            Instruction_reg <= Instruction;
-        else
-            Instruction_reg <= 32'h00000000;
-        */
-
         if (rst_l)
         begin
-            CSR_Read_Data_r <= CSR_Read_Data;
-            CSR_Read_r <= (CSR_Read & ~fpu_active);
-            Flag_CSR_r <= Flag_CSR;
+            CSR_Read_Data_r <= CSR_Read_Data_r1;
+            CSR_Read_r <= CSR_Read_r1;
+            Flag_CSR_r <= Flag_CSR_r1;
         end
         else
         begin
@@ -54,12 +54,8 @@
             Flag_CSR_r <= 1'b0;
         end
 
-        rd = (~rst_l) ? 5'b00000 : (Instruction[11:7] != 5'b00000) ? Instruction[11:7] : 5'b00000;
-
-        //Flag_ADDI = (~rst_l) ? 1'b0 : (Instruction[6:0] == 7'b0010011) ? 1'b1 : 1'b0;
-        //Flag_LI = (~rst_l) ? 1'b0 : (Instruction[6:0] == 7'b0110111) ? 1'b1 : 1'b0;
-        //RS2_d = (~rst_l) ? 32'h00000000 : Flag_LI ? IMM_LI : (Flag_ADDI) ? {{20{IMM_ADDI[11]}},IMM_ADDI} : gpr_rs2;
-        //RS1_d = (~rst_l) ? 32'h00000000 : gpr_rs1;
+        rd <= (~rst_l) ? 5'b00000 : (Instruction[11:7] != 5'b00000) ? Instruction[11:7] : 5'b00000;
+        rd_wb <= (~rst_l) ? 5'b00000 : rd;
 
     end
 
@@ -71,7 +67,7 @@
                             .raddr0(rs1),
                             .raddr1(rs2),
                             .wen0(write_en),
-                            .waddr0(rd),
+                            .waddr0(rd_wb),
                             .wd0((CSR_Read_r) ? CSR_Read_Data_r : (fpu_complete_rd & (~Activation_Signal) & (~CSR_Read_r)) ? fpu_result_rd_w : result),
                             .rd0(gpr_rs1),
                             .rd1(gpr_rs2),
@@ -129,8 +125,8 @@
 
 
     // INTEGER REGISTER  FILE ASSIGNEMENTS
-    assign rs1_en = (~rst_l) ? 1'b0 : ((Instruction[11:7] != 5'b00000) & (~fpu_active)) ? 1'b1 : (fpu_active & ~illegal_instr) ? scalar_control[0] : 1'b0;
-    assign rs2_en = (~rst_l) ? 1'b0 : (Instruction[11:7] != 5'b00000) ? 1'b1 : (fpu_active & ~illegal_instr) ? scalar_control[1] : 1'b0;
+    assign rs1_en = (~rst_l) ? 1'b0 : ((Instruction[19:15] != 5'b00000) & (~fpu_active)) ? 1'b1 : (fpu_active & ~illegal_instr) ? scalar_control[0] : 1'b0;
+    assign rs2_en = (~rst_l) ? 1'b0 : ((Instruction[24:20] != 5'b00000) & (~fpu_active) & (~Flag_CSR)) ? 1'b1 : (fpu_active & ~illegal_instr) ? scalar_control[1] : 1'b0;
     assign rs1 = (~rst_l) ? 5'b00000 : (Flag_ADDI) ? Instruction[19:15] : ((Function_CSR == 3'b001) & Flag_CSR) ? Instruction[19:15] : (fpu_active & ~illegal_instr) ? rs1_address : 5'b00000;
     assign rs2 = (~rst_l) ? 5'b00000 : (fpu_active & ~illegal_instr) ? rs2_address : 5'b00000;
     assign RS2_d = (~rst_l) ? 32'h00000000 : Flag_LI ? IMM_LI : (Flag_ADDI) ? {{20{IMM_ADDI[11]}},IMM_ADDI} : gpr_rs2;
@@ -140,7 +136,7 @@
     // CSRRW & CSRRWI instructions ASSIGNEMENTS
     assign Flag_CSR = (~rst_l) ? 1'b0 : (Instruction[6:0] == 7'b1110011) ? 1'b1 : 1'b0;
     assign Function_CSR = (~rst_l) ? 3'b000 : (Flag_CSR) ? Instruction[14:12] : 3'b000;
-    assign CSR_Addr = (~rst_l) ? 12'h000 : (fpu_active & (~illegal_instr) & (~fpu_complete)) ? 12'h001 : Instruction[31:20];
+    assign CSR_Addr = (~rst_l) ? 12'h000 : (fpu_active & (~illegal_instr) & (~fpu_complete)) ? 12'h002 : Instruction[31:20];
     assign CSR_Read = (~rst_l) ? 1'b0 : ((Instruction[11:7] != 5'b00000) & Flag_CSR) ? 1'b1 : (fpu_active & (~illegal_instr) & (~fpu_complete)) ? 1'b1 : 1'b0;
     assign CSR_Write = (~rst_l) ? 1'b0 : (Flag_CSR) ? 1'b1 : (fpu_active & (~illegal_instr) & fpu_complete) ? 1'b1 : 1'b0;
     assign CSR_Write_Data = (~rst_l) ? 32'h00000000 : (Flag_CSR & (Function_CSR == 3'b101)) ? {27'h0000000,Instruction[19:15]} : RS1_d;
