Add files via upload
diff --git "a/Simulations/pre_synthesis/Screenshot \050459\051.png" "b/Simulations/pre_synthesis/Screenshot \050459\051.png"
new file mode 100644
index 0000000..6b6d918
--- /dev/null
+++ "b/Simulations/pre_synthesis/Screenshot \050459\051.png"
Binary files differ
diff --git a/Simulations/pre_synthesis/add.vcd b/Simulations/pre_synthesis/add.vcd
new file mode 100644
index 0000000..2e02095
--- /dev/null
+++ b/Simulations/pre_synthesis/add.vcd
@@ -0,0 +1,1850 @@
+$date
+ Tue Oct 19 09:16:28 2021
+$end
+$version
+ Icarus Verilog
+$end
+$timescale
+ 1s
+$end
+$scope module adder_tb $end
+$var wire 19 ! out [18:0] $end
+$var reg 18 " in1 [17:0] $end
+$var reg 18 # in2 [17:0] $end
+$var reg 1 $ mode $end
+$scope module u1 $end
+$var wire 19 % a1 [18:0] $end
+$var wire 19 & b1 [18:0] $end
+$var wire 1 $ mode $end
+$var wire 18 ' p [17:0] $end
+$var wire 18 ( q [17:0] $end
+$var wire 19 ) temp1 [18:0] $end
+$var wire 19 * temp [18:0] $end
+$var wire 19 + sum [18:0] $end
+$var wire 19 , b [18:0] $end
+$var wire 19 - a [18:0] $end
+$scope begin addition $end
+$scope begin genblk9[0] $end
+$upscope $end
+$scope begin genblk9[1] $end
+$upscope $end
+$scope begin genblk9[2] $end
+$upscope $end
+$scope begin genblk9[3] $end
+$upscope $end
+$scope begin genblk9[4] $end
+$upscope $end
+$scope begin genblk9[5] $end
+$upscope $end
+$scope begin genblk9[6] $end
+$upscope $end
+$scope begin genblk9[7] $end
+$upscope $end
+$scope begin genblk9[8] $end
+$upscope $end
+$scope begin genblk9[9] $end
+$upscope $end
+$scope begin genblk9[10] $end
+$upscope $end
+$scope begin genblk9[11] $end
+$upscope $end
+$scope begin genblk9[12] $end
+$upscope $end
+$scope begin genblk9[13] $end
+$upscope $end
+$scope begin genblk9[14] $end
+$upscope $end
+$scope begin genblk9[15] $end
+$upscope $end
+$scope begin genblk9[16] $end
+$upscope $end
+$scope begin genblk9[17] $end
+$upscope $end
+$scope begin genblk9[18] $end
+$upscope $end
+$upscope $end
+$scope begin ha_fa $end
+$scope begin genblk2[1] $end
+$scope module t0 $end
+$var wire 1 . carry $end
+$var wire 1 / sum $end
+$var wire 2 0 x [1:0] $end
+$upscope $end
+$upscope $end
+$scope begin genblk2[2] $end
+$scope module t0 $end
+$var wire 1 1 carry $end
+$var wire 1 2 sum $end
+$var wire 2 3 x [1:0] $end
+$upscope $end
+$upscope $end
+$scope begin genblk2[3] $end
+$scope module t0 $end
+$var wire 1 4 carry $end
+$var wire 1 5 sum $end
+$var wire 2 6 x [1:0] $end
+$upscope $end
+$upscope $end
+$scope begin genblk2[4] $end
+$scope module t0 $end
+$var wire 1 7 carry $end
+$var wire 1 8 sum $end
+$var wire 2 9 x [1:0] $end
+$upscope $end
+$upscope $end
+$scope begin genblk2[5] $end
+$scope module t0 $end
+$var wire 1 : carry $end
+$var wire 1 ; sum $end
+$var wire 2 < x [1:0] $end
+$upscope $end
+$upscope $end
+$scope begin genblk2[6] $end
+$scope module t0 $end
+$var wire 1 = carry $end
+$var wire 1 > sum $end
+$var wire 2 ? x [1:0] $end
+$upscope $end
+$upscope $end
+$scope begin genblk2[7] $end
+$scope module t0 $end
+$var wire 1 @ carry $end
+$var wire 1 A sum $end
+$var wire 2 B x [1:0] $end
+$upscope $end
+$upscope $end
+$scope begin genblk2[8] $end
+$scope module t0 $end
+$var wire 1 C carry $end
+$var wire 1 D sum $end
+$var wire 2 E x [1:0] $end
+$upscope $end
+$upscope $end
+$scope begin genblk2[9] $end
+$scope module t0 $end
+$var wire 1 F carry $end
+$var wire 1 G sum $end
+$var wire 2 H x [1:0] $end
+$upscope $end
+$upscope $end
+$scope begin genblk2[10] $end
+$scope module t0 $end
+$var wire 1 I carry $end
+$var wire 1 J sum $end
+$var wire 2 K x [1:0] $end
+$upscope $end
+$upscope $end
+$scope begin genblk2[11] $end
+$scope module t0 $end
+$var wire 1 L carry $end
+$var wire 1 M sum $end
+$var wire 2 N x [1:0] $end
+$upscope $end
+$upscope $end
+$scope begin genblk2[12] $end
+$scope module t0 $end
+$var wire 1 O carry $end
+$var wire 1 P sum $end
+$var wire 2 Q x [1:0] $end
+$upscope $end
+$upscope $end
+$scope begin genblk2[13] $end
+$scope module t0 $end
+$var wire 1 R carry $end
+$var wire 1 S sum $end
+$var wire 2 T x [1:0] $end
+$upscope $end
+$upscope $end
+$scope begin genblk2[14] $end
+$scope module t0 $end
+$var wire 1 U carry $end
+$var wire 1 V sum $end
+$var wire 2 W x [1:0] $end
+$upscope $end
+$upscope $end
+$scope begin genblk2[15] $end
+$scope module t0 $end
+$var wire 1 X carry $end
+$var wire 1 Y sum $end
+$var wire 2 Z x [1:0] $end
+$upscope $end
+$upscope $end
+$scope begin genblk2[16] $end
+$scope module t0 $end
+$var wire 1 [ carry $end
+$var wire 1 \ sum $end
+$var wire 2 ] x [1:0] $end
+$upscope $end
+$upscope $end
+$scope begin genblk2[17] $end
+$scope module t0 $end
+$var wire 1 ^ carry $end
+$var wire 1 _ sum $end
+$var wire 2 ` x [1:0] $end
+$upscope $end
+$upscope $end
+$upscope $end
+$scope begin kgp_gen $end
+$scope begin genblk4[0] $end
+$scope module t $end
+$var wire 1 a a $end
+$var wire 1 b b $end
+$var wire 2 c y [1:0] $end
+$upscope $end
+$upscope $end
+$scope begin genblk4[1] $end
+$scope module t $end
+$var wire 1 d a $end
+$var wire 1 e b $end
+$var wire 2 f y [1:0] $end
+$upscope $end
+$upscope $end
+$scope begin genblk4[2] $end
+$scope module t $end
+$var wire 1 g a $end
+$var wire 1 h b $end
+$var wire 2 i y [1:0] $end
+$upscope $end
+$upscope $end
+$scope begin genblk4[3] $end
+$scope module t $end
+$var wire 1 j a $end
+$var wire 1 k b $end
+$var wire 2 l y [1:0] $end
+$upscope $end
+$upscope $end
+$scope begin genblk4[4] $end
+$scope module t $end
+$var wire 1 m a $end
+$var wire 1 n b $end
+$var wire 2 o y [1:0] $end
+$upscope $end
+$upscope $end
+$scope begin genblk4[5] $end
+$scope module t $end
+$var wire 1 p a $end
+$var wire 1 q b $end
+$var wire 2 r y [1:0] $end
+$upscope $end
+$upscope $end
+$scope begin genblk4[6] $end
+$scope module t $end
+$var wire 1 s a $end
+$var wire 1 t b $end
+$var wire 2 u y [1:0] $end
+$upscope $end
+$upscope $end
+$scope begin genblk4[7] $end
+$scope module t $end
+$var wire 1 v a $end
+$var wire 1 w b $end
+$var wire 2 x y [1:0] $end
+$upscope $end
+$upscope $end
+$scope begin genblk4[8] $end
+$scope module t $end
+$var wire 1 y a $end
+$var wire 1 z b $end
+$var wire 2 { y [1:0] $end
+$upscope $end
+$upscope $end
+$scope begin genblk4[9] $end
+$scope module t $end
+$var wire 1 | a $end
+$var wire 1 } b $end
+$var wire 2 ~ y [1:0] $end
+$upscope $end
+$upscope $end
+$scope begin genblk4[10] $end
+$scope module t $end
+$var wire 1 !" a $end
+$var wire 1 "" b $end
+$var wire 2 #" y [1:0] $end
+$upscope $end
+$upscope $end
+$scope begin genblk4[11] $end
+$scope module t $end
+$var wire 1 $" a $end
+$var wire 1 %" b $end
+$var wire 2 &" y [1:0] $end
+$upscope $end
+$upscope $end
+$scope begin genblk4[12] $end
+$scope module t $end
+$var wire 1 '" a $end
+$var wire 1 (" b $end
+$var wire 2 )" y [1:0] $end
+$upscope $end
+$upscope $end
+$scope begin genblk4[13] $end
+$scope module t $end
+$var wire 1 *" a $end
+$var wire 1 +" b $end
+$var wire 2 ," y [1:0] $end
+$upscope $end
+$upscope $end
+$scope begin genblk4[14] $end
+$scope module t $end
+$var wire 1 -" a $end
+$var wire 1 ." b $end
+$var wire 2 /" y [1:0] $end
+$upscope $end
+$upscope $end
+$scope begin genblk4[15] $end
+$scope module t $end
+$var wire 1 0" a $end
+$var wire 1 1" b $end
+$var wire 2 2" y [1:0] $end
+$upscope $end
+$upscope $end
+$scope begin genblk4[16] $end
+$scope module t $end
+$var wire 1 3" a $end
+$var wire 1 4" b $end
+$var wire 2 5" y [1:0] $end
+$upscope $end
+$upscope $end
+$scope begin genblk4[17] $end
+$scope module t $end
+$var wire 1 6" a $end
+$var wire 1 7" b $end
+$var wire 2 8" y [1:0] $end
+$upscope $end
+$upscope $end
+$upscope $end
+$scope begin recursiveStg $end
+$scope begin genblk6[0] $end
+$scope begin genblk7[2] $end
+$scope module s $end
+$var wire 2 9" a [1:0] $end
+$var wire 2 :" b [1:0] $end
+$var wire 1 ;" b0 $end
+$var wire 1 <" f $end
+$var wire 1 =" g0 $end
+$var wire 1 >" g1 $end
+$var wire 2 ?" y [1:0] $end
+$upscope $end
+$upscope $end
+$scope begin genblk7[4] $end
+$scope module s $end
+$var wire 2 @" a [1:0] $end
+$var wire 2 A" b [1:0] $end
+$var wire 1 B" b0 $end
+$var wire 1 C" f $end
+$var wire 1 D" g0 $end
+$var wire 1 E" g1 $end
+$var wire 2 F" y [1:0] $end
+$upscope $end
+$upscope $end
+$scope begin genblk7[6] $end
+$scope module s $end
+$var wire 2 G" a [1:0] $end
+$var wire 2 H" b [1:0] $end
+$var wire 1 I" b0 $end
+$var wire 1 J" f $end
+$var wire 1 K" g0 $end
+$var wire 1 L" g1 $end
+$var wire 2 M" y [1:0] $end
+$upscope $end
+$upscope $end
+$scope begin genblk7[8] $end
+$scope module s $end
+$var wire 2 N" a [1:0] $end
+$var wire 2 O" b [1:0] $end
+$var wire 1 P" b0 $end
+$var wire 1 Q" f $end
+$var wire 1 R" g0 $end
+$var wire 1 S" g1 $end
+$var wire 2 T" y [1:0] $end
+$upscope $end
+$upscope $end
+$scope begin genblk7[10] $end
+$scope module s $end
+$var wire 2 U" a [1:0] $end
+$var wire 2 V" b [1:0] $end
+$var wire 1 W" b0 $end
+$var wire 1 X" f $end
+$var wire 1 Y" g0 $end
+$var wire 1 Z" g1 $end
+$var wire 2 [" y [1:0] $end
+$upscope $end
+$upscope $end
+$scope begin genblk7[12] $end
+$scope module s $end
+$var wire 2 \" a [1:0] $end
+$var wire 2 ]" b [1:0] $end
+$var wire 1 ^" b0 $end
+$var wire 1 _" f $end
+$var wire 1 `" g0 $end
+$var wire 1 a" g1 $end
+$var wire 2 b" y [1:0] $end
+$upscope $end
+$upscope $end
+$scope begin genblk7[14] $end
+$scope module s $end
+$var wire 2 c" a [1:0] $end
+$var wire 2 d" b [1:0] $end
+$var wire 1 e" b0 $end
+$var wire 1 f" f $end
+$var wire 1 g" g0 $end
+$var wire 1 h" g1 $end
+$var wire 2 i" y [1:0] $end
+$upscope $end
+$upscope $end
+$scope begin genblk7[16] $end
+$scope module s $end
+$var wire 2 j" a [1:0] $end
+$var wire 2 k" b [1:0] $end
+$var wire 1 l" b0 $end
+$var wire 1 m" f $end
+$var wire 1 n" g0 $end
+$var wire 1 o" g1 $end
+$var wire 2 p" y [1:0] $end
+$upscope $end
+$upscope $end
+$scope begin genblk7[18] $end
+$scope module s $end
+$var wire 2 q" a [1:0] $end
+$var wire 2 r" b [1:0] $end
+$var wire 1 s" b0 $end
+$var wire 1 t" f $end
+$var wire 1 u" g0 $end
+$var wire 1 v" g1 $end
+$var wire 2 w" y [1:0] $end
+$upscope $end
+$upscope $end
+$scope begin genblk7[20] $end
+$scope module s $end
+$var wire 2 x" a [1:0] $end
+$var wire 2 y" b [1:0] $end
+$var wire 1 z" b0 $end
+$var wire 1 {" f $end
+$var wire 1 |" g0 $end
+$var wire 1 }" g1 $end
+$var wire 2 ~" y [1:0] $end
+$upscope $end
+$upscope $end
+$scope begin genblk7[22] $end
+$scope module s $end
+$var wire 2 !# a [1:0] $end
+$var wire 2 "# b [1:0] $end
+$var wire 1 ## b0 $end
+$var wire 1 $# f $end
+$var wire 1 %# g0 $end
+$var wire 1 &# g1 $end
+$var wire 2 '# y [1:0] $end
+$upscope $end
+$upscope $end
+$scope begin genblk7[24] $end
+$scope module s $end
+$var wire 2 (# a [1:0] $end
+$var wire 2 )# b [1:0] $end
+$var wire 1 *# b0 $end
+$var wire 1 +# f $end
+$var wire 1 ,# g0 $end
+$var wire 1 -# g1 $end
+$var wire 2 .# y [1:0] $end
+$upscope $end
+$upscope $end
+$scope begin genblk7[26] $end
+$scope module s $end
+$var wire 2 /# a [1:0] $end
+$var wire 2 0# b [1:0] $end
+$var wire 1 1# b0 $end
+$var wire 1 2# f $end
+$var wire 1 3# g0 $end
+$var wire 1 4# g1 $end
+$var wire 2 5# y [1:0] $end
+$upscope $end
+$upscope $end
+$scope begin genblk7[28] $end
+$scope module s $end
+$var wire 2 6# a [1:0] $end
+$var wire 2 7# b [1:0] $end
+$var wire 1 8# b0 $end
+$var wire 1 9# f $end
+$var wire 1 :# g0 $end
+$var wire 1 ;# g1 $end
+$var wire 2 <# y [1:0] $end
+$upscope $end
+$upscope $end
+$scope begin genblk7[30] $end
+$scope module s $end
+$var wire 2 =# a [1:0] $end
+$var wire 2 ># b [1:0] $end
+$var wire 1 ?# b0 $end
+$var wire 1 @# f $end
+$var wire 1 A# g0 $end
+$var wire 1 B# g1 $end
+$var wire 2 C# y [1:0] $end
+$upscope $end
+$upscope $end
+$scope begin genblk7[32] $end
+$scope module s $end
+$var wire 2 D# a [1:0] $end
+$var wire 2 E# b [1:0] $end
+$var wire 1 F# b0 $end
+$var wire 1 G# f $end
+$var wire 1 H# g0 $end
+$var wire 1 I# g1 $end
+$var wire 2 J# y [1:0] $end
+$upscope $end
+$upscope $end
+$scope begin genblk7[34] $end
+$scope module s $end
+$var wire 2 K# a [1:0] $end
+$var wire 2 L# b [1:0] $end
+$var wire 1 M# b0 $end
+$var wire 1 N# f $end
+$var wire 1 O# g0 $end
+$var wire 1 P# g1 $end
+$var wire 2 Q# y [1:0] $end
+$upscope $end
+$upscope $end
+$scope begin genblk7[36] $end
+$scope module s $end
+$var wire 2 R# a [1:0] $end
+$var wire 2 S# b [1:0] $end
+$var wire 1 T# b0 $end
+$var wire 1 U# f $end
+$var wire 1 V# g0 $end
+$var wire 1 W# g1 $end
+$var wire 2 X# y [1:0] $end
+$upscope $end
+$upscope $end
+$upscope $end
+$scope begin genblk6[1] $end
+$scope begin genblk7[4] $end
+$scope module s $end
+$var wire 2 Y# a [1:0] $end
+$var wire 2 Z# b [1:0] $end
+$var wire 1 [# b0 $end
+$var wire 1 \# f $end
+$var wire 1 ]# g0 $end
+$var wire 1 ^# g1 $end
+$var wire 2 _# y [1:0] $end
+$upscope $end
+$upscope $end
+$scope begin genblk7[6] $end
+$scope module s $end
+$var wire 2 `# a [1:0] $end
+$var wire 2 a# b [1:0] $end
+$var wire 1 b# b0 $end
+$var wire 1 c# f $end
+$var wire 1 d# g0 $end
+$var wire 1 e# g1 $end
+$var wire 2 f# y [1:0] $end
+$upscope $end
+$upscope $end
+$scope begin genblk7[8] $end
+$scope module s $end
+$var wire 2 g# a [1:0] $end
+$var wire 2 h# b [1:0] $end
+$var wire 1 i# b0 $end
+$var wire 1 j# f $end
+$var wire 1 k# g0 $end
+$var wire 1 l# g1 $end
+$var wire 2 m# y [1:0] $end
+$upscope $end
+$upscope $end
+$scope begin genblk7[10] $end
+$scope module s $end
+$var wire 2 n# a [1:0] $end
+$var wire 2 o# b [1:0] $end
+$var wire 1 p# b0 $end
+$var wire 1 q# f $end
+$var wire 1 r# g0 $end
+$var wire 1 s# g1 $end
+$var wire 2 t# y [1:0] $end
+$upscope $end
+$upscope $end
+$scope begin genblk7[12] $end
+$scope module s $end
+$var wire 2 u# a [1:0] $end
+$var wire 2 v# b [1:0] $end
+$var wire 1 w# b0 $end
+$var wire 1 x# f $end
+$var wire 1 y# g0 $end
+$var wire 1 z# g1 $end
+$var wire 2 {# y [1:0] $end
+$upscope $end
+$upscope $end
+$scope begin genblk7[14] $end
+$scope module s $end
+$var wire 2 |# a [1:0] $end
+$var wire 2 }# b [1:0] $end
+$var wire 1 ~# b0 $end
+$var wire 1 !$ f $end
+$var wire 1 "$ g0 $end
+$var wire 1 #$ g1 $end
+$var wire 2 $$ y [1:0] $end
+$upscope $end
+$upscope $end
+$scope begin genblk7[16] $end
+$scope module s $end
+$var wire 2 %$ a [1:0] $end
+$var wire 2 &$ b [1:0] $end
+$var wire 1 '$ b0 $end
+$var wire 1 ($ f $end
+$var wire 1 )$ g0 $end
+$var wire 1 *$ g1 $end
+$var wire 2 +$ y [1:0] $end
+$upscope $end
+$upscope $end
+$scope begin genblk7[18] $end
+$scope module s $end
+$var wire 2 ,$ a [1:0] $end
+$var wire 2 -$ b [1:0] $end
+$var wire 1 .$ b0 $end
+$var wire 1 /$ f $end
+$var wire 1 0$ g0 $end
+$var wire 1 1$ g1 $end
+$var wire 2 2$ y [1:0] $end
+$upscope $end
+$upscope $end
+$scope begin genblk7[20] $end
+$scope module s $end
+$var wire 2 3$ a [1:0] $end
+$var wire 2 4$ b [1:0] $end
+$var wire 1 5$ b0 $end
+$var wire 1 6$ f $end
+$var wire 1 7$ g0 $end
+$var wire 1 8$ g1 $end
+$var wire 2 9$ y [1:0] $end
+$upscope $end
+$upscope $end
+$scope begin genblk7[22] $end
+$scope module s $end
+$var wire 2 :$ a [1:0] $end
+$var wire 2 ;$ b [1:0] $end
+$var wire 1 <$ b0 $end
+$var wire 1 =$ f $end
+$var wire 1 >$ g0 $end
+$var wire 1 ?$ g1 $end
+$var wire 2 @$ y [1:0] $end
+$upscope $end
+$upscope $end
+$scope begin genblk7[24] $end
+$scope module s $end
+$var wire 2 A$ a [1:0] $end
+$var wire 2 B$ b [1:0] $end
+$var wire 1 C$ b0 $end
+$var wire 1 D$ f $end
+$var wire 1 E$ g0 $end
+$var wire 1 F$ g1 $end
+$var wire 2 G$ y [1:0] $end
+$upscope $end
+$upscope $end
+$scope begin genblk7[26] $end
+$scope module s $end
+$var wire 2 H$ a [1:0] $end
+$var wire 2 I$ b [1:0] $end
+$var wire 1 J$ b0 $end
+$var wire 1 K$ f $end
+$var wire 1 L$ g0 $end
+$var wire 1 M$ g1 $end
+$var wire 2 N$ y [1:0] $end
+$upscope $end
+$upscope $end
+$scope begin genblk7[28] $end
+$scope module s $end
+$var wire 2 O$ a [1:0] $end
+$var wire 2 P$ b [1:0] $end
+$var wire 1 Q$ b0 $end
+$var wire 1 R$ f $end
+$var wire 1 S$ g0 $end
+$var wire 1 T$ g1 $end
+$var wire 2 U$ y [1:0] $end
+$upscope $end
+$upscope $end
+$scope begin genblk7[30] $end
+$scope module s $end
+$var wire 2 V$ a [1:0] $end
+$var wire 2 W$ b [1:0] $end
+$var wire 1 X$ b0 $end
+$var wire 1 Y$ f $end
+$var wire 1 Z$ g0 $end
+$var wire 1 [$ g1 $end
+$var wire 2 \$ y [1:0] $end
+$upscope $end
+$upscope $end
+$scope begin genblk7[32] $end
+$scope module s $end
+$var wire 2 ]$ a [1:0] $end
+$var wire 2 ^$ b [1:0] $end
+$var wire 1 _$ b0 $end
+$var wire 1 `$ f $end
+$var wire 1 a$ g0 $end
+$var wire 1 b$ g1 $end
+$var wire 2 c$ y [1:0] $end
+$upscope $end
+$upscope $end
+$scope begin genblk7[34] $end
+$scope module s $end
+$var wire 2 d$ a [1:0] $end
+$var wire 2 e$ b [1:0] $end
+$var wire 1 f$ b0 $end
+$var wire 1 g$ f $end
+$var wire 1 h$ g0 $end
+$var wire 1 i$ g1 $end
+$var wire 2 j$ y [1:0] $end
+$upscope $end
+$upscope $end
+$scope begin genblk7[36] $end
+$scope module s $end
+$var wire 2 k$ a [1:0] $end
+$var wire 2 l$ b [1:0] $end
+$var wire 1 m$ b0 $end
+$var wire 1 n$ f $end
+$var wire 1 o$ g0 $end
+$var wire 1 p$ g1 $end
+$var wire 2 q$ y [1:0] $end
+$upscope $end
+$upscope $end
+$upscope $end
+$scope begin genblk6[2] $end
+$scope begin genblk7[8] $end
+$scope module s $end
+$var wire 2 r$ a [1:0] $end
+$var wire 2 s$ b [1:0] $end
+$var wire 1 t$ b0 $end
+$var wire 1 u$ f $end
+$var wire 1 v$ g0 $end
+$var wire 1 w$ g1 $end
+$var wire 2 x$ y [1:0] $end
+$upscope $end
+$upscope $end
+$scope begin genblk7[10] $end
+$scope module s $end
+$var wire 2 y$ a [1:0] $end
+$var wire 2 z$ b [1:0] $end
+$var wire 1 {$ b0 $end
+$var wire 1 |$ f $end
+$var wire 1 }$ g0 $end
+$var wire 1 ~$ g1 $end
+$var wire 2 !% y [1:0] $end
+$upscope $end
+$upscope $end
+$scope begin genblk7[12] $end
+$scope module s $end
+$var wire 2 "% a [1:0] $end
+$var wire 2 #% b [1:0] $end
+$var wire 1 $% b0 $end
+$var wire 1 %% f $end
+$var wire 1 &% g0 $end
+$var wire 1 '% g1 $end
+$var wire 2 (% y [1:0] $end
+$upscope $end
+$upscope $end
+$scope begin genblk7[14] $end
+$scope module s $end
+$var wire 2 )% a [1:0] $end
+$var wire 2 *% b [1:0] $end
+$var wire 1 +% b0 $end
+$var wire 1 ,% f $end
+$var wire 1 -% g0 $end
+$var wire 1 .% g1 $end
+$var wire 2 /% y [1:0] $end
+$upscope $end
+$upscope $end
+$scope begin genblk7[16] $end
+$scope module s $end
+$var wire 2 0% a [1:0] $end
+$var wire 2 1% b [1:0] $end
+$var wire 1 2% b0 $end
+$var wire 1 3% f $end
+$var wire 1 4% g0 $end
+$var wire 1 5% g1 $end
+$var wire 2 6% y [1:0] $end
+$upscope $end
+$upscope $end
+$scope begin genblk7[18] $end
+$scope module s $end
+$var wire 2 7% a [1:0] $end
+$var wire 2 8% b [1:0] $end
+$var wire 1 9% b0 $end
+$var wire 1 :% f $end
+$var wire 1 ;% g0 $end
+$var wire 1 <% g1 $end
+$var wire 2 =% y [1:0] $end
+$upscope $end
+$upscope $end
+$scope begin genblk7[20] $end
+$scope module s $end
+$var wire 2 >% a [1:0] $end
+$var wire 2 ?% b [1:0] $end
+$var wire 1 @% b0 $end
+$var wire 1 A% f $end
+$var wire 1 B% g0 $end
+$var wire 1 C% g1 $end
+$var wire 2 D% y [1:0] $end
+$upscope $end
+$upscope $end
+$scope begin genblk7[22] $end
+$scope module s $end
+$var wire 2 E% a [1:0] $end
+$var wire 2 F% b [1:0] $end
+$var wire 1 G% b0 $end
+$var wire 1 H% f $end
+$var wire 1 I% g0 $end
+$var wire 1 J% g1 $end
+$var wire 2 K% y [1:0] $end
+$upscope $end
+$upscope $end
+$scope begin genblk7[24] $end
+$scope module s $end
+$var wire 2 L% a [1:0] $end
+$var wire 2 M% b [1:0] $end
+$var wire 1 N% b0 $end
+$var wire 1 O% f $end
+$var wire 1 P% g0 $end
+$var wire 1 Q% g1 $end
+$var wire 2 R% y [1:0] $end
+$upscope $end
+$upscope $end
+$scope begin genblk7[26] $end
+$scope module s $end
+$var wire 2 S% a [1:0] $end
+$var wire 2 T% b [1:0] $end
+$var wire 1 U% b0 $end
+$var wire 1 V% f $end
+$var wire 1 W% g0 $end
+$var wire 1 X% g1 $end
+$var wire 2 Y% y [1:0] $end
+$upscope $end
+$upscope $end
+$scope begin genblk7[28] $end
+$scope module s $end
+$var wire 2 Z% a [1:0] $end
+$var wire 2 [% b [1:0] $end
+$var wire 1 \% b0 $end
+$var wire 1 ]% f $end
+$var wire 1 ^% g0 $end
+$var wire 1 _% g1 $end
+$var wire 2 `% y [1:0] $end
+$upscope $end
+$upscope $end
+$scope begin genblk7[30] $end
+$scope module s $end
+$var wire 2 a% a [1:0] $end
+$var wire 2 b% b [1:0] $end
+$var wire 1 c% b0 $end
+$var wire 1 d% f $end
+$var wire 1 e% g0 $end
+$var wire 1 f% g1 $end
+$var wire 2 g% y [1:0] $end
+$upscope $end
+$upscope $end
+$scope begin genblk7[32] $end
+$scope module s $end
+$var wire 2 h% a [1:0] $end
+$var wire 2 i% b [1:0] $end
+$var wire 1 j% b0 $end
+$var wire 1 k% f $end
+$var wire 1 l% g0 $end
+$var wire 1 m% g1 $end
+$var wire 2 n% y [1:0] $end
+$upscope $end
+$upscope $end
+$scope begin genblk7[34] $end
+$scope module s $end
+$var wire 2 o% a [1:0] $end
+$var wire 2 p% b [1:0] $end
+$var wire 1 q% b0 $end
+$var wire 1 r% f $end
+$var wire 1 s% g0 $end
+$var wire 1 t% g1 $end
+$var wire 2 u% y [1:0] $end
+$upscope $end
+$upscope $end
+$scope begin genblk7[36] $end
+$scope module s $end
+$var wire 2 v% a [1:0] $end
+$var wire 2 w% b [1:0] $end
+$var wire 1 x% b0 $end
+$var wire 1 y% f $end
+$var wire 1 z% g0 $end
+$var wire 1 {% g1 $end
+$var wire 2 |% y [1:0] $end
+$upscope $end
+$upscope $end
+$upscope $end
+$scope begin genblk6[3] $end
+$scope begin genblk7[16] $end
+$scope module s $end
+$var wire 2 }% a [1:0] $end
+$var wire 2 ~% b [1:0] $end
+$var wire 1 !& b0 $end
+$var wire 1 "& f $end
+$var wire 1 #& g0 $end
+$var wire 1 $& g1 $end
+$var wire 2 %& y [1:0] $end
+$upscope $end
+$upscope $end
+$scope begin genblk7[18] $end
+$scope module s $end
+$var wire 2 && a [1:0] $end
+$var wire 2 '& b [1:0] $end
+$var wire 1 (& b0 $end
+$var wire 1 )& f $end
+$var wire 1 *& g0 $end
+$var wire 1 +& g1 $end
+$var wire 2 ,& y [1:0] $end
+$upscope $end
+$upscope $end
+$scope begin genblk7[20] $end
+$scope module s $end
+$var wire 2 -& a [1:0] $end
+$var wire 2 .& b [1:0] $end
+$var wire 1 /& b0 $end
+$var wire 1 0& f $end
+$var wire 1 1& g0 $end
+$var wire 1 2& g1 $end
+$var wire 2 3& y [1:0] $end
+$upscope $end
+$upscope $end
+$scope begin genblk7[22] $end
+$scope module s $end
+$var wire 2 4& a [1:0] $end
+$var wire 2 5& b [1:0] $end
+$var wire 1 6& b0 $end
+$var wire 1 7& f $end
+$var wire 1 8& g0 $end
+$var wire 1 9& g1 $end
+$var wire 2 :& y [1:0] $end
+$upscope $end
+$upscope $end
+$scope begin genblk7[24] $end
+$scope module s $end
+$var wire 2 ;& a [1:0] $end
+$var wire 2 <& b [1:0] $end
+$var wire 1 =& b0 $end
+$var wire 1 >& f $end
+$var wire 1 ?& g0 $end
+$var wire 1 @& g1 $end
+$var wire 2 A& y [1:0] $end
+$upscope $end
+$upscope $end
+$scope begin genblk7[26] $end
+$scope module s $end
+$var wire 2 B& a [1:0] $end
+$var wire 2 C& b [1:0] $end
+$var wire 1 D& b0 $end
+$var wire 1 E& f $end
+$var wire 1 F& g0 $end
+$var wire 1 G& g1 $end
+$var wire 2 H& y [1:0] $end
+$upscope $end
+$upscope $end
+$scope begin genblk7[28] $end
+$scope module s $end
+$var wire 2 I& a [1:0] $end
+$var wire 2 J& b [1:0] $end
+$var wire 1 K& b0 $end
+$var wire 1 L& f $end
+$var wire 1 M& g0 $end
+$var wire 1 N& g1 $end
+$var wire 2 O& y [1:0] $end
+$upscope $end
+$upscope $end
+$scope begin genblk7[30] $end
+$scope module s $end
+$var wire 2 P& a [1:0] $end
+$var wire 2 Q& b [1:0] $end
+$var wire 1 R& b0 $end
+$var wire 1 S& f $end
+$var wire 1 T& g0 $end
+$var wire 1 U& g1 $end
+$var wire 2 V& y [1:0] $end
+$upscope $end
+$upscope $end
+$scope begin genblk7[32] $end
+$scope module s $end
+$var wire 2 W& a [1:0] $end
+$var wire 2 X& b [1:0] $end
+$var wire 1 Y& b0 $end
+$var wire 1 Z& f $end
+$var wire 1 [& g0 $end
+$var wire 1 \& g1 $end
+$var wire 2 ]& y [1:0] $end
+$upscope $end
+$upscope $end
+$scope begin genblk7[34] $end
+$scope module s $end
+$var wire 2 ^& a [1:0] $end
+$var wire 2 _& b [1:0] $end
+$var wire 1 `& b0 $end
+$var wire 1 a& f $end
+$var wire 1 b& g0 $end
+$var wire 1 c& g1 $end
+$var wire 2 d& y [1:0] $end
+$upscope $end
+$upscope $end
+$scope begin genblk7[36] $end
+$scope module s $end
+$var wire 2 e& a [1:0] $end
+$var wire 2 f& b [1:0] $end
+$var wire 1 g& b0 $end
+$var wire 1 h& f $end
+$var wire 1 i& g0 $end
+$var wire 1 j& g1 $end
+$var wire 2 k& y [1:0] $end
+$upscope $end
+$upscope $end
+$upscope $end
+$scope begin genblk6[4] $end
+$scope begin genblk7[32] $end
+$scope module s $end
+$var wire 2 l& a [1:0] $end
+$var wire 2 m& b [1:0] $end
+$var wire 1 n& b0 $end
+$var wire 1 o& f $end
+$var wire 1 p& g0 $end
+$var wire 1 q& g1 $end
+$var wire 2 r& y [1:0] $end
+$upscope $end
+$upscope $end
+$scope begin genblk7[34] $end
+$scope module s $end
+$var wire 2 s& a [1:0] $end
+$var wire 2 t& b [1:0] $end
+$var wire 1 u& b0 $end
+$var wire 1 v& f $end
+$var wire 1 w& g0 $end
+$var wire 1 x& g1 $end
+$var wire 2 y& y [1:0] $end
+$upscope $end
+$upscope $end
+$scope begin genblk7[36] $end
+$scope module s $end
+$var wire 2 z& a [1:0] $end
+$var wire 2 {& b [1:0] $end
+$var wire 1 |& b0 $end
+$var wire 1 }& f $end
+$var wire 1 ~& g0 $end
+$var wire 1 !' g1 $end
+$var wire 2 "' y [1:0] $end
+$upscope $end
+$upscope $end
+$upscope $end
+$upscope $end
+$upscope $end
+$upscope $end
+$enddefinitions $end
+#0
+$dumpvars
+b0 "'
+0!'
+0~&
+0}&
+1|&
+b0 {&
+b0 z&
+b0 y&
+0x&
+0w&
+0v&
+1u&
+b0 t&
+b0 s&
+b0 r&
+0q&
+0p&
+0o&
+1n&
+b0 m&
+b0 l&
+b0 k&
+0j&
+0i&
+0h&
+1g&
+b0 f&
+b0 e&
+b0 d&
+0c&
+0b&
+0a&
+1`&
+b0 _&
+b0 ^&
+b0 ]&
+0\&
+0[&
+0Z&
+1Y&
+b0 X&
+b0 W&
+b0 V&
+0U&
+0T&
+0S&
+1R&
+b0 Q&
+b0 P&
+b0 O&
+0N&
+0M&
+0L&
+1K&
+b0 J&
+b0 I&
+b0 H&
+0G&
+0F&
+0E&
+1D&
+b0 C&
+b0 B&
+b0 A&
+0@&
+0?&
+0>&
+1=&
+b0 <&
+b0 ;&
+b0 :&
+09&
+08&
+07&
+16&
+b0 5&
+b0 4&
+b0 3&
+02&
+01&
+00&
+1/&
+b0 .&
+b0 -&
+b0 ,&
+0+&
+0*&
+0)&
+1(&
+b0 '&
+b0 &&
+b0 %&
+0$&
+0#&
+0"&
+1!&
+b0 ~%
+b0 }%
+b0 |%
+0{%
+0z%
+0y%
+1x%
+b0 w%
+b0 v%
+b0 u%
+0t%
+0s%
+0r%
+1q%
+b0 p%
+b0 o%
+b0 n%
+0m%
+0l%
+0k%
+1j%
+b0 i%
+b0 h%
+b0 g%
+0f%
+0e%
+0d%
+1c%
+b0 b%
+b0 a%
+b0 `%
+0_%
+0^%
+0]%
+1\%
+b0 [%
+b0 Z%
+b0 Y%
+0X%
+0W%
+0V%
+1U%
+b0 T%
+b0 S%
+b0 R%
+0Q%
+0P%
+0O%
+1N%
+b0 M%
+b0 L%
+b0 K%
+0J%
+0I%
+0H%
+1G%
+b0 F%
+b0 E%
+b0 D%
+0C%
+0B%
+0A%
+1@%
+b0 ?%
+b0 >%
+b0 =%
+0<%
+0;%
+0:%
+19%
+b0 8%
+b0 7%
+b0 6%
+05%
+04%
+03%
+12%
+b0 1%
+b0 0%
+b0 /%
+0.%
+0-%
+0,%
+1+%
+b0 *%
+b0 )%
+b0 (%
+0'%
+0&%
+0%%
+1$%
+b0 #%
+b0 "%
+b0 !%
+0~$
+0}$
+0|$
+1{$
+b0 z$
+b0 y$
+b0 x$
+0w$
+0v$
+0u$
+1t$
+b0 s$
+b0 r$
+b0 q$
+0p$
+0o$
+0n$
+1m$
+b0 l$
+b0 k$
+b0 j$
+0i$
+0h$
+0g$
+1f$
+b0 e$
+b0 d$
+b0 c$
+0b$
+0a$
+0`$
+1_$
+b0 ^$
+b0 ]$
+b0 \$
+0[$
+0Z$
+0Y$
+1X$
+b0 W$
+b0 V$
+b0 U$
+0T$
+0S$
+0R$
+1Q$
+b0 P$
+b0 O$
+b0 N$
+0M$
+0L$
+0K$
+1J$
+b0 I$
+b0 H$
+b0 G$
+0F$
+0E$
+0D$
+1C$
+b0 B$
+b0 A$
+b0 @$
+0?$
+0>$
+0=$
+1<$
+b0 ;$
+b0 :$
+b0 9$
+08$
+07$
+06$
+15$
+b0 4$
+b0 3$
+b0 2$
+01$
+00$
+0/$
+1.$
+b0 -$
+b0 ,$
+b0 +$
+0*$
+0)$
+0($
+1'$
+b0 &$
+b0 %$
+b0 $$
+0#$
+0"$
+0!$
+1~#
+b0 }#
+b1 |#
+b0 {#
+0z#
+0y#
+0x#
+1w#
+b0 v#
+b0 u#
+b0 t#
+0s#
+0r#
+0q#
+1p#
+b1 o#
+b0 n#
+b0 m#
+0l#
+0k#
+0j#
+1i#
+b0 h#
+b0 g#
+b0 f#
+0e#
+0d#
+0c#
+1b#
+b0 a#
+b0 `#
+b0 _#
+0^#
+0]#
+0\#
+1[#
+b0 Z#
+b0 Y#
+b0 X#
+0W#
+0V#
+0U#
+1T#
+b0 S#
+b0 R#
+b0 Q#
+0P#
+0O#
+0N#
+1M#
+b0 L#
+b0 K#
+b0 J#
+0I#
+0H#
+0G#
+1F#
+b0 E#
+b0 D#
+b0 C#
+0B#
+0A#
+0@#
+1?#
+b0 >#
+b0 =#
+b0 <#
+0;#
+0:#
+09#
+18#
+b0 7#
+b0 6#
+b0 5#
+04#
+03#
+02#
+11#
+b0 0#
+b0 /#
+b0 .#
+0-#
+0,#
+0+#
+1*#
+b0 )#
+b0 (#
+b0 '#
+0&#
+0%#
+0$#
+1##
+b0 "#
+b0 !#
+b0 ~"
+0}"
+0|"
+0{"
+1z"
+b0 y"
+b0 x"
+b0 w"
+0v"
+0u"
+0t"
+1s"
+b0 r"
+b0 q"
+b0 p"
+0o"
+0n"
+0m"
+1l"
+b0 k"
+b0 j"
+b0 i"
+0h"
+0g"
+0f"
+1e"
+b0 d"
+b0 c"
+b0 b"
+0a"
+0`"
+0_"
+1^"
+b0 ]"
+b1 \"
+b1 ["
+0Z"
+1Y"
+0X"
+1W"
+b1 V"
+b1 U"
+b0 T"
+0S"
+0R"
+0Q"
+1P"
+b1 O"
+b0 N"
+b0 M"
+0L"
+0K"
+0J"
+1I"
+b0 H"
+b1 G"
+b0 F"
+0E"
+0D"
+0C"
+1B"
+b1 A"
+b0 @"
+b0 ?"
+0>"
+0="
+0<"
+1;"
+b0 :"
+b0 9"
+b0 8"
+07"
+06"
+b0 5"
+04"
+03"
+b0 2"
+01"
+00"
+b0 /"
+0."
+0-"
+b0 ,"
+0+"
+0*"
+b0 )"
+0("
+0'"
+b0 &"
+0%"
+0$"
+b0 #"
+0""
+0!"
+b0 ~
+0}
+0|
+b0 {
+0z
+0y
+b0 x
+0w
+0v
+b0 u
+0t
+0s
+b0 r
+0q
+0p
+b1 o
+0n
+1m
+b1 l
+0k
+1j
+b0 i
+0h
+0g
+b1 f
+0e
+1d
+b0 c
+0b
+0a
+b0 `
+0_
+0^
+b0 ]
+0\
+0[
+b0 Z
+0Y
+0X
+b0 W
+0V
+0U
+b0 T
+0S
+0R
+b0 Q
+0P
+0O
+b0 N
+0M
+0L
+b0 K
+0J
+0I
+b0 H
+0G
+0F
+b0 E
+0D
+0C
+b0 B
+0A
+0@
+b0 ?
+0>
+0=
+b0 <
+0;
+0:
+b1 9
+18
+07
+b10 6
+15
+04
+b0 3
+02
+01
+b10 0
+1/
+0.
+b11010 -
+b0 ,
+b11010 +
+b11010 *
+b1111111111111100110 )
+b10000 (
+b1010 '
+b10000 &
+b1010 %
+0$
+b10000 #
+b1010 "
+b11010 !
+$end
+#20
+b0 o#
+b0 |#
+b0 ["
+0Y"
+b1010100 !
+b1010100 +
+b0 A"
+b0 G"
+b1 H"
+b1 N"
+b0 O"
+b0 U"
+b1111111111110101100 )
+b1010100 *
+b1 d"
+b1 j"
+b0 f
+b1 i
+b0 l
+b1 u
+0d
+1h
+0j
+1t
+0/
+1.
+b10000 -
+05
+b1000100 ,
+1:
+b11 0
+b0 6
+b10 9
+b11 <
+b100010 &
+b110010 %
+b100010 #
+b100010 (
+b110010 "
+b110010 '
+#40
+b11 P&
+b11 /%
+0+%
+1,%
+b11 *%
+b11 E%
+b11 $$
+0~#
+1!$
+0"$
+b1 Z#
+b1 g#
+b1 o#
+b1 |#
+b11 }#
+b11 ,$
+b1 F"
+b1 ["
+b11 i"
+1D"
+1Y"
+0e"
+1f"
+b1 A"
+b1 G"
+b0 H"
+b0 N"
+b1 O"
+b1 U"
+b11 d"
+b11 j"
+b1 f
+b0 i
+b10011011 !
+b10011011 +
+b1 l
+b11 u
+1d
+0h
+b1111111111101100101 )
+b10011011 *
+b1 :"
+b1 @"
+1k
+1n
+0m
+1s
+1/
+0.
+b1 c
+11
+14
+08
+b1000010 -
+1>
+1b
+b10 0
+b1011001 ,
+b11 3
+b11 6
+b0 9
+b10 ?
+b101101 &
+b1101110 %
+b101101 #
+b101101 (
+b1101110 "
+b1101110 '
+#60
+b11 3&
+b11 :&
+0/&
+10&
+06&
+17&
+b11 I&
+b11 .&
+b11 e&
+b11 5&
+b11 (%
+b11 D%
+b11 K%
+0$%
+1%%
+0@%
+1A%
+0B%
+0C%
+0G%
+1H%
+0I%
+0J%
+b11 #%
+b11 >%
+b11 ?%
+b11 Z%
+b11 F%
+b11 a%
+b11 {#
+b11 9$
+b11 @$
+0w#
+1x#
+05$
+16$
+0<$
+1=$
+b1 a#
+b1 n#
+b0 o#
+b0 |#
+b11 v#
+b11 %$
+b11 4$
+b11 A$
+b11 ;$
+b11 H$
+b1 M"
+b0 ["
+b11 b"
+b11 ~"
+b11 '#
+1K"
+0Y"
+0^"
+1_"
+1g"
+1h"
+1e"
+0f"
+0z"
+1{"
+0|"
+1%#
+1&#
+b1100110000111 !
+b1100110000111 +
+b1 0#
+b1 6#
+b1 H"
+b1 N"
+b0 O"
+b0 U"
+b0 V"
+b0 \"
+b11 ]"
+b11 c"
+b1 d"
+b1 j"
+b1 r"
+b1 x"
+b11 y"
+b11 !#
+b1111110011001111001 )
+b1100110000111 *
+b1 "#
+b1 (#
+b1 )"
+b1 i
+b0 l
+b0 o
+b11 r
+b1 u
+b1 {
+b11 ~
+b1 #"
+1'"
+1g
+0k
+0n
+1q
+1p
+0t
+1z
+1}
+1|
+1!"
+1P
+12
+01
+04
+17
+1;
+0:
+1@
+b1100100001 ,
+1C
+1G
+b1011001100110 -
+1J
+b1 Q
+b1 0
+b1 3
+b0 6
+b11 9
+b1 <
+b11 B
+b11 E
+b10 H
+b10 K
+b1000110110111 &
+b11111010000 %
+b1000110110111 #
+b1000110110111 (
+b11111010000 "
+b11111010000 '
diff --git a/Simulations/pre_synthesis/adder.v b/Simulations/pre_synthesis/adder.v
new file mode 100644
index 0000000..d93bb11
--- /dev/null
+++ b/Simulations/pre_synthesis/adder.v
@@ -0,0 +1,120 @@
+
+module adder(p, q, mode, sum);
+
+parameter num = 18;
+
+output [num:0] sum;
+input [num-1:0] p,q;
+input mode;
+
+wire [num:0] temp, temp1;
+
+`ifdef DSPoperator
+wire [num:0] temp2, temp3;
+ assign temp2[num:0] = p[num-1] ? -{2'b0, p[num-2:0]}:{1'b0,p};
+ assign temp3[num:0] = q[num-1] ? -{2'b0, q[num-2:0]}:{1'b0,q};
+ assign temp[num:0] = mode ? temp2-temp3 : temp2+temp3;
+`else
+ wire [2*num+1:0] x [0:$clog2(num+1)];
+ wire [num:0] a1, b1, a, b;
+
+ assign a1 = {(num+1){p[num-1]}}^{2'b0, p[num-2:0]};
+ assign b1 = {(num+1){mode^q[num-1]}}^{2'b0, q[num-2:0]};
+ assign a[0] = a1[0];
+ assign b[0] = b1[0];
+ assign b[1] = p[num-1]&(q[num-1]^mode);
+ assign a[num] = a1[num]^b1[num];
+
+ assign x[0][1:0]={2{p[num-1]^q[num-1]^mode}}; // Input carry
+
+ genvar i, j;
+ generate
+ begin:ha_fa //halfadder
+ for(i=1; i<num; i=i+1) begin
+ halfadd t0({a1[i],b1[i]}, a[i], b[i+1]);
+ end
+ end
+
+ begin: kgp_gen // kgp generation
+ for (i=0; i<num; i=i+1) begin
+ kgp t(a[i], b[i], x[0][2*i+3:2*i+2]);
+ end
+ end
+ begin:recursiveStg //recursive
+ for (i=0; i<$clog2(num+1); i=i+1)
+ begin
+ assign x[i+1][(2**(i+1))-1:0]=x[i][(2**(i+1))-1:0];
+ for(j=(2**(i+1)); j<2*num+1; j=j+2)
+ begin
+ recursive_stage1 s(x[i][j+1-(2**(i+1)):j-(2**(i+1))],x[i][j+1:j],x[i+1][j+1:j]);
+ end
+ end
+ end
+ begin:addition // SUM Calculation
+ for(i=0; i<num+1; i=i+1) begin
+ assign temp[i] = a[i]^b[i]^x[$clog2(num)][2*i];
+ end
+ end
+ endgenerate
+`endif
+ assign temp1 = -temp;
+ assign sum = temp[num] ? ({temp[num], temp1[num-1:0]}) : (temp);
+
+endmodule
+
+`ifdef DSPoperator
+
+`else
+
+ module kgp(a,b,y);
+
+ input a,b; output [1:0] y;
+
+ assign y[0]=a | b;
+ assign y[1]=a & b;
+
+ endmodule
+
+
+
+ module recursive_stage1(a,b,y);
+
+ input [1:0] a,b; output [1:0] y;
+
+ wire [1:0] y;
+ wire b0;
+ not n1(b0,b[1]);
+ wire f,g0,g1;
+ and a1(f,b[0],b[1]);
+ and a2(g0,b0,b[0],a[0]);
+ and a3(g1,b0,b[0],a[1]);
+
+ or o1(y[0],f,g0);
+ or o2(y[1],f,g1);
+
+ endmodule
+
+ module halfadd(x, sum, carry);
+
+output sum,carry;
+input [1:0] x;
+
+ assign sum = x[1] ^ x[0];
+ assign carry = x[1] & x[0];
+
+endmodule
+
+
+
+module fulladd(x, sum, carry);
+
+output sum,carry;
+input [2:0] x;
+
+wire w;
+ assign w = x[2] ^ x[1];
+ assign sum = w ^ x[0];
+ assign carry = (x[2] & x[1])|(w & x[0]);
+endmodule
+`endif
+
diff --git a/Simulations/pre_synthesis/adder_tb.v b/Simulations/pre_synthesis/adder_tb.v
new file mode 100644
index 0000000..63aeb4b
--- /dev/null
+++ b/Simulations/pre_synthesis/adder_tb.v
@@ -0,0 +1,27 @@
+module adder_tb;
+reg [17:0] in1, in2;
+reg mode;
+wire [18:0] out;
+
+adder u1(
+in1,in2,mode,out
+);
+
+initial
+begin
+mode=0;
+ in1 = 10; in2 = 16;
+ #20; in1 = 50; in2 = 34;
+ #20; in1 = 110; in2 = 45;
+ #20; in1 = 2000; in2 = 4535;
+
+end
+
+initial
+begin
+ $dumpfile("add.vcd");
+ $dumpvars(0, adder_tb);
+ $monitor("time = %2d, in1 = %d, in2 = %d, out = %d", $time, in1, in2, out);
+end
+
+endmodule
\ No newline at end of file