diff --git a/verilog/rtl/LVDT.v b/verilog/rtl/LVDT.v
new file mode 100644
index 0000000..ea4046b
--- /dev/null
+++ b/verilog/rtl/LVDT.v
@@ -0,0 +1,21 @@
+module LVDT(
+
+`ifdef USE_POWER_PINS
+    inout vdda1,	
+    inout vssa1,	
+`endif
+input Iin,
+input va,
+input vb,
+input vcap,
+inout vout,
+input a2,
+input a1,
+input clk,
+input re,
+output y0,
+output y1,
+output y2
+);
+
+endmodule
diff --git a/verilog/rtl/analog_macro.v b/verilog/rtl/analog_macro.v
new file mode 100644
index 0000000..178c6ca
--- /dev/null
+++ b/verilog/rtl/analog_macro.v
@@ -0,0 +1,14 @@
+module analog_macro(
+
+`ifdef USE_POWER_PINS
+    inout vdda1,	
+    inout vssa1,	
+`endif
+input vbiasr,
+input vinit,
+input reset,
+output Fvco,
+output v9m
+);
+
+endmodule
diff --git a/verilog/rtl/temp_digital.v b/verilog/rtl/temp_digital.v
new file mode 100644
index 0000000..57e12a6
--- /dev/null
+++ b/verilog/rtl/temp_digital.v
@@ -0,0 +1,115 @@
+// 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 logic
+ * 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 temp_digital(
+`ifdef USE_POWER_PINS
+    inout vccd1,	// User area 1 1.8V supply
+    inout vssd1,	// User area 1 digital ground
+`endif
+
+    input counter_clk,
+    input shift_clk,
+    input reset_12,
+    output reg sr_out,
+    output wire ref_clk,
+    output wire c_clk);
+    
+    wire load_enable;  //Output of 13-bit counter must be 3
+    wire count_20_reset; //Output of 13-bit counter must be 7
+    wire sr_reset; //Output of 13-bit counter must be 31
+    wire counter_sel; //13th bit of counter must be 1 to count and 0 to hold
+    
+    reg [19:0] count_20;
+    reg [11:0] count_12;					//The highest measurable unknown frequency is Fxclk < 2^(36-c) where c is the number of 
+    								//stages of the counter producing gate enable
+    								//So, for a 12 bit counter, we can measure upto 16.7 MHz until the 20bit counter overflows
+    reg [19:0] shift_20;
+    
+    assign load_enable = count_12==3 ? 1'b1 : 1'b0 ;
+    assign count_20_reset = count_12==7 ? 1'b1 : 1'b0;
+    assign counter_sel = count_12[11];				//The highest measurable unknown frequency is Fxclk < 2^(36-c) where c is the number of 
+    								//stages of the counter producing gate enable
+    assign sr_reset = count_12==31 ? 1'b1 : 1'b0;
+    assign c_clk = counter_clk;
+  
+    
+    always@ (posedge counter_clk or posedge count_20_reset) begin   //Process 20-bit counter
+        if (count_20_reset == 1'b1) begin
+        count_20 <= 0;
+        end
+        else begin
+            if ((count_20 < 1048575)&&(counter_sel == 1'b1)) begin
+            count_20 <= count_20 + 1;
+            end
+            else if ((count_20 == 1048575)&&(counter_sel == 1'b1))begin
+            count_20 <= 0;
+            end
+        end
+    end 
+    
+    always@ (posedge shift_clk or posedge sr_reset or posedge load_enable) begin  //Parallel In Serial Out Shift Register with Load Enable
+        if (sr_reset == 1'b1) begin
+            shift_20 <= 0;
+        end
+        else if (load_enable == 1'b1) begin
+            shift_20 <= count_20;
+            sr_out <= load_enable;
+        end
+        else begin
+            sr_out <= shift_20[0];
+            shift_20[18:0] <= shift_20[19:1];
+            shift_20[19] <= 1'b0;
+        end
+    end
+    assign ref_clk = shift_clk;
+    always@ (posedge shift_clk or posedge reset_12) begin   //12 - bit counter
+        if (reset_12 == 1'b1) begin
+        count_12 <= 0;
+        end
+        else begin
+            if(count_12 <4095) begin
+                count_12 <= count_12 +1;
+            end
+            else if(count_12 == 4095) begin
+                count_12 <= 0;
+            end
+        end
+    end
+
+    endmodule
+`default_nettype wire
