diff --git a/quad/ip_repo/pwm_recorder_1.0/component.xml b/quad/ip_repo/pwm_recorder_1.0/component.xml
index e4ca5921360cd35a63a969ba2b343f4bdf4231c9..de0ac00a93d2729fd096992ad01b6b58af55356f 100644
--- a/quad/ip_repo/pwm_recorder_1.0/component.xml
+++ b/quad/ip_repo/pwm_recorder_1.0/component.xml
@@ -247,7 +247,7 @@
       <spirit:parameters>
         <spirit:parameter>
           <spirit:name>POLARITY</spirit:name>
-          <spirit:value spirit:id="BUSIFPARAM_VALUE.S_AXI_ARESETN.POLARITY" spirit:choiceRef="choice_list_74b5137e">ACTIVE_LOW</spirit:value>
+          <spirit:value spirit:id="BUSIFPARAM_VALUE.S_AXI_ARESETN.POLARITY" spirit:choiceRef="choice_list_9d8b0d81">ACTIVE_LOW</spirit:value>
         </spirit:parameter>
       </spirit:parameters>
     </spirit:busInterface>
@@ -304,7 +304,7 @@
         <spirit:parameters>
           <spirit:parameter>
             <spirit:name>viewChecksum</spirit:name>
-            <spirit:value>3e8b6769</spirit:value>
+            <spirit:value>5df65d36</spirit:value>
           </spirit:parameter>
         </spirit:parameters>
       </spirit:view>
@@ -320,7 +320,7 @@
         <spirit:parameters>
           <spirit:parameter>
             <spirit:name>viewChecksum</spirit:name>
-            <spirit:value>3e8b6769</spirit:value>
+            <spirit:value>2533723a</spirit:value>
           </spirit:parameter>
         </spirit:parameters>
       </spirit:view>
@@ -366,6 +366,20 @@
           </spirit:parameter>
         </spirit:parameters>
       </spirit:view>
+      <spirit:view>
+        <spirit:name>xilinx_testbench</spirit:name>
+        <spirit:displayName>Test Bench</spirit:displayName>
+        <spirit:envIdentifier>:vivado.xilinx.com:simulation.testbench</spirit:envIdentifier>
+        <spirit:fileSetRef>
+          <spirit:localName>xilinx_testbench_view_fileset</spirit:localName>
+        </spirit:fileSetRef>
+        <spirit:parameters>
+          <spirit:parameter>
+            <spirit:name>viewChecksum</spirit:name>
+            <spirit:value>285dd1e3</spirit:value>
+          </spirit:parameter>
+        </spirit:parameters>
+      </spirit:view>
     </spirit:views>
     <spirit:ports>
       <spirit:port>
@@ -712,7 +726,7 @@
       <spirit:enumeration>32</spirit:enumeration>
     </spirit:choice>
     <spirit:choice>
-      <spirit:name>choice_list_74b5137e</spirit:name>
+      <spirit:name>choice_list_9d8b0d81</spirit:name>
       <spirit:enumeration>ACTIVE_HIGH</spirit:enumeration>
       <spirit:enumeration>ACTIVE_LOW</spirit:enumeration>
     </spirit:choice>
@@ -753,6 +767,12 @@
         <spirit:name>hdl/pwm_recorder_v1_0.vhd</spirit:name>
         <spirit:fileType>vhdlSource</spirit:fileType>
       </spirit:file>
+      <spirit:file>
+        <spirit:name>hdl/kernel_tester.vhd</spirit:name>
+        <spirit:fileType>vhdlSource</spirit:fileType>
+        <spirit:userFileType>USED_IN_ipstatic</spirit:userFileType>
+        <spirit:logicalName>xil_defaultlib</spirit:logicalName>
+      </spirit:file>
     </spirit:fileSet>
     <spirit:fileSet>
       <spirit:name>xilinx_softwaredriver_view_fileset</spirit:name>
@@ -802,6 +822,15 @@
         <spirit:fileType>tclSource</spirit:fileType>
       </spirit:file>
     </spirit:fileSet>
+    <spirit:fileSet>
+      <spirit:name>xilinx_testbench_view_fileset</spirit:name>
+      <spirit:file>
+        <spirit:name>hdl/kernel_tester.vhd</spirit:name>
+        <spirit:fileType>vhdlSource</spirit:fileType>
+        <spirit:userFileType>USED_IN_simulation</spirit:userFileType>
+        <spirit:userFileType>USED_IN_synthesis</spirit:userFileType>
+      </spirit:file>
+    </spirit:fileSet>
   </spirit:fileSets>
   <spirit:description>Records the incoming pwm signal and assigns to a register</spirit:description>
   <spirit:parameters>
@@ -869,20 +898,20 @@
         <xilinx:taxonomy>AXI_Peripheral</xilinx:taxonomy>
       </xilinx:taxonomies>
       <xilinx:displayName>pwm_recorder_v1.0</xilinx:displayName>
-      <xilinx:coreRevision>2</xilinx:coreRevision>
-      <xilinx:coreCreationDateTime>2017-12-09T23:55:52Z</xilinx:coreCreationDateTime>
+      <xilinx:coreRevision>3</xilinx:coreRevision>
+      <xilinx:coreCreationDateTime>2018-09-27T18:04:22Z</xilinx:coreCreationDateTime>
       <xilinx:tags>
         <xilinx:tag xilinx:name="user.org:user:pwm_recorder:1.0_ARCHIVE_LOCATION">/local/ucart/MicroCART/quad/ip_repo/pwm_recorder_1.0</xilinx:tag>
       </xilinx:tags>
     </xilinx:coreExtensions>
     <xilinx:packagingInfo>
-      <xilinx:xilinxVersion>2017.1</xilinx:xilinxVersion>
-      <xilinx:checksum xilinx:scope="busInterfaces" xilinx:value="cebbc925"/>
-      <xilinx:checksum xilinx:scope="memoryMaps" xilinx:value="59f5074b"/>
-      <xilinx:checksum xilinx:scope="fileGroups" xilinx:value="940b66fe"/>
-      <xilinx:checksum xilinx:scope="ports" xilinx:value="55925bde"/>
-      <xilinx:checksum xilinx:scope="hdlParameters" xilinx:value="1826240f"/>
-      <xilinx:checksum xilinx:scope="parameters" xilinx:value="dd451e08"/>
+      <xilinx:xilinxVersion>2018.2.1</xilinx:xilinxVersion>
+      <xilinx:checksum xilinx:scope="busInterfaces" xilinx:value="9a0bb3a5"/>
+      <xilinx:checksum xilinx:scope="memoryMaps" xilinx:value="c30980da"/>
+      <xilinx:checksum xilinx:scope="fileGroups" xilinx:value="3919f8f0"/>
+      <xilinx:checksum xilinx:scope="ports" xilinx:value="266b534b"/>
+      <xilinx:checksum xilinx:scope="hdlParameters" xilinx:value="f9a38560"/>
+      <xilinx:checksum xilinx:scope="parameters" xilinx:value="4a81a732"/>
     </xilinx:packagingInfo>
   </spirit:vendorExtensions>
 </spirit:component>
diff --git a/quad/ip_repo/pwm_recorder_1.0/hdl/kernel_tester.vhd b/quad/ip_repo/pwm_recorder_1.0/hdl/kernel_tester.vhd
new file mode 100644
index 0000000000000000000000000000000000000000..a9f79d2e362ba57a57e3e6511c46a9ab2ef73e5b
--- /dev/null
+++ b/quad/ip_repo/pwm_recorder_1.0/hdl/kernel_tester.vhd
@@ -0,0 +1,148 @@
+----------------------------------------------------------------------------------
+-- Company: 
+-- Engineer: 
+-- 
+-- Create Date: 09/27/2018 12:05:17 PM
+-- Design Name: 
+-- Module Name: kernel_tester - testbench
+-- Project Name: 
+-- Target Devices: 
+-- Tool Versions: 
+-- Description: 
+-- 
+-- Dependencies: 
+-- 
+-- Revision:
+-- Revision 0.01 - File Created
+-- Additional Comments:
+-- 
+----------------------------------------------------------------------------------
+
+
+library IEEE;
+use IEEE.STD_LOGIC_1164.ALL;
+USE ieee.numeric_std.all;
+
+-- Uncomment the following library declaration if using
+-- arithmetic functions with Signed or Unsigned values
+--use IEEE.NUMERIC_STD.ALL;
+
+-- Uncomment the following library declaration if instantiating
+-- any Xilinx leaf cells in this code.
+--library UNISIM;
+--use UNISIM.VComponents.all;
+
+entity kernel_tester is
+--  Port ( );
+end kernel_tester;
+
+architecture testbench of kernel_tester is
+    component pwm_rec is
+        port(
+            clk             : in std_logic;
+            reset_n         : in std_logic;
+            input_signal    : in std_logic;
+            write_o         : out std_logic;
+            count_out       : out std_logic_vector(31 downto 0));
+    end component;
+    
+    constant CLK_HPER : time := 20 ns;
+    signal clk : std_logic;
+    signal pwm : std_logic;
+    signal reset_n : std_logic;
+    signal count : std_logic_vector(31 downto 0);
+    signal write : std_logic;
+    signal done : std_logic := '0';
+    
+begin
+    UUT: pwm_rec
+        port map(
+            clk => clk,
+            reset_n => reset_n,
+            input_signal => pwm,
+            write_o => write,
+            count_out => count);
+            
+    test_process: process
+        variable period : integer;
+        
+    begin
+        reset_n <='0';
+        wait for 2*CLK_HPER;
+        reset_n <='1';
+    
+        period := 100;
+        pwm <= '0';
+        wait for CLK_HPER*2*20;
+        pwm <= '1';
+        wait for period*2*CLK_HPER;
+        pwm <= '0';
+        wait until write='1';
+        ASSERT count=std_logic_vector(to_unsigned(period, 32)) REPORT "Incorrect COUNT result" SEVERITY FAILURE;
+        
+        period := 200;
+        pwm <= '0';
+        wait for CLK_HPER*2*20;
+        pwm <= '1';
+        wait for period*2*CLK_HPER;
+        pwm <= '0';
+        wait until write='1';
+        ASSERT count=std_logic_vector(to_unsigned(period, 32)) REPORT "Incorrect COUNT result" SEVERITY FAILURE;
+        
+        period := 300;
+        pwm <= '0';
+        wait for CLK_HPER*2*20;
+        pwm <= '1';
+        wait for period*2*CLK_HPER;
+        pwm <= '0';
+        wait until write='1';
+        ASSERT count=std_logic_vector(to_unsigned(period, 32)) REPORT "Incorrect COUNT result" SEVERITY FAILURE;
+        
+        period := 400;
+        pwm <= '0';
+        wait for CLK_HPER*2*20;
+        pwm <= '1';
+        wait for period*2*CLK_HPER;
+        pwm <= '0';
+        wait until write='1';
+        ASSERT count=std_logic_vector(to_unsigned(period, 32)) REPORT "Incorrect COUNT result" SEVERITY FAILURE;
+        
+        period := 10;
+        pwm <= '0';
+        wait for CLK_HPER*2*20;
+        pwm <= '1';
+        wait for period*2*CLK_HPER;
+        pwm <= '0';
+        for t in 0 to 100 loop
+            wait for 2*CLK_HPER;
+            ASSERT write='0' REPORT "Glitch not Ignored" SEVERITY FAILURE;
+        end loop;
+        
+        -- Run for 45, glitch for 10, then run for 45, expect a result of 100
+        period := 100;
+        pwm <= '0';
+        wait for CLK_HPER*2*20;
+        pwm <= '1';
+        wait for 45*2*CLK_HPER;
+        pwm <= '0';
+        wait for 10*2*CLK_HPER;
+        pwm <= '1';
+        wait for 45*2*CLK_HPER;
+        pwm <= '0';
+        wait until write='1';
+        ASSERT count=std_logic_vector(to_unsigned(period, 32)) REPORT "Incorrect COUNT result" SEVERITY FAILURE;
+        
+        done <='1';
+        wait;
+    end process;
+    
+    clock_proc: process
+    begin
+        clk <= '0';
+        wait for CLK_HPER;
+        clk <= '1';
+        wait for CLK_HPER;
+        if (done = '1') then wait; end if;
+    end process;
+
+end testbench;
diff --git a/quad/ip_repo/pwm_recorder_1.0/src/pwm_rec.vhd b/quad/ip_repo/pwm_recorder_1.0/src/pwm_rec.vhd
index 50f177848545b9c628926c534a567f3af17c5c55..9429231520344b4dece9ad83f8886894a0c272b4 100644
--- a/quad/ip_repo/pwm_recorder_1.0/src/pwm_rec.vhd
+++ b/quad/ip_repo/pwm_recorder_1.0/src/pwm_rec.vhd
@@ -62,6 +62,14 @@ begin
 				counter <= x"00000000";
 				current <= '0';
 				write_o <= '0';
+				
+            -- Neither all high or all low
+            elsif (current = '1') then
+                current <= '1';        
+                counter <= counter + 1;
+                write_o <= '0';
+		  
+		    
 			end if;
 		end if;
 	end process;