diff --git a/sim/fabric_emu/fabric_emu.sv b/sim/fabric_emu/fabric_emu.sv
index 1bab66101efefa6fb56e4ec5b9395134a9c04f5c..67aead08392231baaa4d9bed393b477aa097893c 100644
--- a/sim/fabric_emu/fabric_emu.sv
+++ b/sim/fabric_emu/fabric_emu.sv
@@ -417,6 +417,27 @@ module fabric_emu
       tx_queue.push(frame);
    endtask // send
 
+   task automatic send_raw(byte raw_data[]);
+      reg [`c_wrsw_ctrl_size - 1 : 0] ctrl_vec[0:2000];
+      reg [15:0] data_vec[0:2000];
+      int error, i;
+      
+
+      for(i=0; i<(raw_data.size()+1) / 2; i++)
+        begin
+           ctrl_vec[i]  = `c_wrsw_ctrl_payload;
+           data_vec[i][15:8] = raw_data[2*i];
+           data_vec[i][7:0] = raw_data[2*i+1];
+           
+        end
+      
+      
+      send_fabric(data_vec, ctrl_vec, ( raw_data.size() % 2) ? 1 : 0, i, i-1, error);
+      
+   endtask // send_raw
+   
+        
+
    // Handles WRF packet sink input
    task automatic rx_process();
 
diff --git a/sim/fabric_emu/fabric_emu_defs.sv b/sim/fabric_emu/fabric_emu_defs.sv
index b298f62d49798f0e1508911da87b5f7995a349b2..1acd0e5343121ba152304d12f873083c215b0b1d 100644
--- a/sim/fabric_emu/fabric_emu_defs.sv
+++ b/sim/fabric_emu/fabric_emu_defs.sv
@@ -26,7 +26,7 @@ typedef struct {
    bit[31:0] fcs;
    bit error;
    bit has_payload;
-
+   bit has_raw;
    byte raw_data[];
 } ether_frame_t;