diff --git a/hdl/src/primatives/fifo_vr.sv b/hdl/src/fifo_vr.sv
similarity index 100%
rename from hdl/src/primatives/fifo_vr.sv
rename to hdl/src/fifo_vr.sv
diff --git a/hdl/verif/tb_sha256_engine.sv b/hdl/verif/tb_sha256_engine.sv
index 21ddd96723850a2191696425ebec7a0b4ca7445a..659e683b483001663eaedbf1a2a3fb64818338d6 100644
--- a/hdl/verif/tb_sha256_engine.sv
+++ b/hdl/verif/tb_sha256_engine.sv
@@ -1,5 +1,5 @@
 //-----------------------------------------------------------------------------
-// SoC Labs Basic SHA-2 Message Builder Testbench
+// SoC Labs Basic SHA-2 Engine Testbench
 // A joint work commissioned on behalf of SoC Labs, under Arm Academic Access license.
 //
 // Contributors
@@ -31,32 +31,32 @@ module tb_sha256_engine;
     logic cfg_ready;
     
     // Data Out data and Handshaking
-    logic [511:0] data_out;
+    logic [255:0] data_out;
     logic data_out_valid;
     logic data_out_ready;
     logic data_out_last;
         
-    message_build uut (
-                  .clk (clk),
-                  .nrst(nrst),
-                  .en  (en),
-                  .sync_rst(sync_rst),
-                  .data_in(data_in),
-                  .data_in_valid(data_in_valid),
-                  .data_in_ready(data_in_ready),
-                  .data_in_last(data_in_last),
-                  .cfg_size(cfg_size),
-                  .cfg_scheme(cfg_scheme),
-                  .cfg_last(cfg_last),
-                  .cfg_valid(cfg_valid),
-                  .cfg_ready(cfg_ready),
-                  .data_out(data_out),
-                  .data_out_last(data_out_last),
-                  .data_out_valid(data_out_valid),
-                  .data_out_ready(data_out_ready));
+    sha256_engine uut (
+        .clk            (clk),
+        .nrst           (nrst),
+        .en             (en),
+        .sync_rst       (sync_rst),
+        .data_in        (data_in),
+        .data_in_valid  (data_in_valid),
+        .data_in_ready  (data_in_ready),
+        .data_in_last   (data_in_last),
+        .cfg_size       (cfg_size),
+        .cfg_scheme     (cfg_scheme),
+        .cfg_last       (cfg_last),
+        .cfg_valid      (cfg_valid),
+        .cfg_ready      (cfg_ready),
+        .data_out       (data_out),
+        .data_out_last  (data_out_last),
+        .data_out_valid (data_out_valid),
+        .data_out_ready (data_out_ready)
+    );
     
     logic data_in_drive_en;
-    logic cfg_drive_en;
     logic data_out_drive_ready;
     
     logic [511:0] data_in_queue [$];
@@ -68,7 +68,7 @@ module tb_sha256_engine;
     logic cfg_last_queue         [$];
     logic cfg_wait_queue;
     
-    logic [511:0] data_out_queue [$];
+    logic [255:0] data_out_queue [$];
     logic data_out_last_queue    [$];
     logic data_out_wait_queue;
     
@@ -96,7 +96,7 @@ module tb_sha256_engine;
             end
         end
     end
-    
+
     // Handle Valid and Data for cfg
     always_ff @(posedge clk, negedge nrst) begin: cfg_valid_drive
         if (!nrst) begin
@@ -124,11 +124,11 @@ module tb_sha256_engine;
         end
     end
     
-    logic [511:0] data_out_check;
+    logic [255:0] data_out_check;
     logic data_out_last_check;
     logic check_output;
     logic test_end;
-    int packet_num;
+    int   packet_num;
     
     // Handle Output Ready Driving
     always_ff @(posedge clk, negedge nrst) begin: data_out_recieve
@@ -154,12 +154,12 @@ module tb_sha256_engine;
                 $error("data_out missmatch! packet %d | recieve: %x != check: %x", packet_num, data_out, data_out_check);
                 $finish;
             end
-            // $display("data_out match! packet %d | recieve: %x != check: %x", packet_num, data_out, data_out_check);
+            $display("data_out match! packet %d | recieve: %x != check: %x", packet_num, data_out, data_out_check);
             assert (data_out_last == data_out_last_check) else begin
                 $error("data_out_last missmatch! packet %d | recieve: %x != check: %x", packet_num, data_out_last, data_out_last_check);
                 $finish;
             end
-            // $display("data_out_last match! packet %d | recieve: %x != check: %x", packet_num, data_out_last, data_out_last_check);
+            $display("data_out_last match! packet %d | recieve: %x != check: %x", packet_num, data_out_last, data_out_last_check);
             if ((data_out_queue.size() > 0) && (data_out_last_queue.size() > 0)) begin
                 data_out_check <= data_out_queue.pop_front();
                 data_out_last_check <= data_out_last_queue.pop_front();
@@ -183,12 +183,24 @@ module tb_sha256_engine;
     logic [1:0]  input_cfg_scheme; // Temporary cfg scheme
     logic input_cfg_last;          // Temporary cfg last;
     
-    logic [511:0] output_data; // Temporary Output Data Storage
+    logic [255:0] output_data; // Temporary Output Data Storage
     logic output_data_last;    // Temporary Output Data Last
     
     initial begin
-        $dumpfile("message_build.vcd");
-        $dumpvars(0, tb_message_build);
+        $dumpfile("sha256_engine.vcd");
+        $dumpvars(0, tb_sha256_engine);
+        for (int i = 0; i < 16; i++) begin
+            $dumpvars(0, tb_sha256_engine.uut.hash_calculator.M[i]);
+        end
+        for (int i = 0; i < 8; i++) begin
+            $dumpvars(0, tb_sha256_engine.uut.hash_calculator.H[i]);
+            $dumpvars(0, tb_sha256_engine.uut.hash_calculator.next_H[i]);
+        end
+        for (int i = 0; i < 64; i++) begin
+            $dumpvars(0, tb_sha256_engine.uut.hash_calculator.W[i]);
+            $dumpvars(0, tb_sha256_engine.uut.hash_calculator.next_W[i]);
+            $dumpvars(0, tb_sha256_engine.uut.hash_calculator.ssig1_next_W[i]);
+        end
         data_in_drive_en = 0;
         cfg_drive_en = 0;
         data_out_drive_ready = 0;
@@ -211,7 +223,7 @@ module tb_sha256_engine;
         $fclose(fd);
         
         // Read output data into Queue
-        fd = $fopen("../stimulus/testbench/inout_message_block_stim_ref.csv", "r");
+        fd = $fopen("../stimulus/testbench/output_hash_ref.csv", "r");
         while ($fscanf (fd, "%x,%b", output_data, output_data_last) == 2) begin
             data_out_queue.push_back(output_data);
             data_out_last_queue.push_back(output_data_last);
@@ -222,8 +234,8 @@ module tb_sha256_engine;
         data_out_check = data_out_queue.pop_front();      
         data_out_last_check = data_out_last_queue.pop_front();
         
-        // Defaultly enable Message Builder
-        en  = 1;
+        // Enable Hash Compression
+        en = 1;
         
         // Defaultly set Sync Reset Low
         sync_rst  = 0;
diff --git a/hdl/verif/tb_sha256_hash_compression.sv b/hdl/verif/tb_sha256_hash_compression.sv
index 1954d87d9a9b578d1b587aa367faeb170c657a98..7c272aa9abc429c18508aa8abce49f7ca492d488 100644
--- a/hdl/verif/tb_sha256_hash_compression.sv
+++ b/hdl/verif/tb_sha256_hash_compression.sv
@@ -23,13 +23,6 @@ module tb_sha256_hash_compression;
     logic data_in_valid;
     logic data_in_ready;
     
-    // Config data and Handshaking
-    logic [63:0] cfg_size;
-    logic [1:0] cfg_scheme;
-    logic cfg_last;
-    logic cfg_valid;
-    logic cfg_ready;
-    
     // Data Out data and Handshaking
     logic [255:0] data_out;
     logic data_out_valid;
@@ -57,11 +50,6 @@ module tb_sha256_hash_compression;
     logic data_in_last_queue    [$];
     logic data_in_wait_queue;
     
-    logic [63:0] cfg_size_queue  [$];
-    logic [1:0] cfg_scheme_queue [$];
-    logic cfg_last_queue         [$];
-    logic cfg_wait_queue;
-    
     logic [255:0] data_out_queue [$];
     logic data_out_last_queue    [$];
     logic data_out_wait_queue;
@@ -146,10 +134,6 @@ module tb_sha256_hash_compression;
     logic [511:0] input_data; // Temporary Input Data Storage
     logic input_data_last;    // Temporary Input Data Last
     
-    logic [63:0] input_cfg_size;   // Temporary cfg size 
-    logic [1:0]  input_cfg_scheme; // Temporary cfg scheme
-    logic input_cfg_last;          // Temporary cfg last;
-    
     logic [255:0] output_data; // Temporary Output Data Storage
     logic output_data_last;    // Temporary Output Data Last
     
@@ -202,8 +186,6 @@ module tb_sha256_hash_compression;
         #20 nrst  = 1;
         #20 data_in_drive_en = 1;
        
-        // Write some data into the config register
-        
         # 30 data_out_drive_ready = 1;
     end
     
diff --git a/hdl/verif/tb_sha256_message_build.sv b/hdl/verif/tb_sha256_message_build.sv
index 9f43ce68ac4c40e7571fd6ad6510badae7c01137..1040c7e1f9d6bcdb7bcf9be80b22c70a117a4847 100644
--- a/hdl/verif/tb_sha256_message_build.sv
+++ b/hdl/verif/tb_sha256_message_build.sv
@@ -128,7 +128,7 @@ module tb_sha256_message_build;
     logic data_out_last_check;
     logic check_output;
     logic test_end;
-    int packet_num;
+    int   packet_num;
     
     // Handle Output Ready Driving
     always_ff @(posedge clk, negedge nrst) begin: data_out_recieve