diff --git a/README.md b/README.md
index edea902..2953916 100644
--- a/README.md
+++ b/README.md
@@ -349,18 +349,16 @@
 
 # SOC Size
 
-| Block             | Total Cell | Seq      | Combo   |
-| ------            | ---------  | -------- | -----   |
-| RISC              | 20982      | 3164     | 17818   |
-| PINMUX            | 5693       | 1022     |  4671   |
-| SPI               | 7120       | 1281     |  5839   |
-| UART_I2C_USB_SPI  | 11196      | 2448     |  8748   |
-| WB_HOST           | 2796       | 588      |  2208   |
-| WB_INTC           | 1878       | 108      |  1770   |
-| SAR_ADC           | 118        |  18      |   100   |
-| MBIST             | 3125       | 543      |  2582   |
-|                   |            |          |         |
-| TOTAL             | 52908      | 9172     | 43736   |
+| Block             | Total Cell | Combo   | Seq      |
+| ------            | ---------  | -----   | -------- |
+| RISC              | 46285      | 40434   | 5851     |
+| QSPI              | 8662       |  7157   | 1505     |
+| UART_I2C_USB_SPI  | 22813      | 13061   | 2865     |
+| WB_HOST           | 5800       |  4701   | 1099     |
+| WB_INTC           | 11477      | 10081   | 1396     |
+| PINMUX            | 6740       |  5568   | 1172     |
+|                   |            |         |          |
+| TOTAL             | 94890      | 81002   | 13888    |
 
 
 
diff --git a/openlane/pinmux/config.tcl b/openlane/pinmux/config.tcl
index f844215..491ef7d 100755
--- a/openlane/pinmux/config.tcl
+++ b/openlane/pinmux/config.tcl
@@ -85,9 +85,6 @@
 set ::env(PL_TARGET_DENSITY) "0.30"
 set ::env(CELL_PAD) "4"
 
-set ::env(FP_IO_VEXTEND) {6}
-set ::env(FP_IO_HEXTEND) {6}
-
 
 # helps in anteena fix
 set ::env(USE_ARC_ANTENNA_CHECK) "0"
diff --git a/sta/scripts/statistic.tcl b/sta/scripts/statistic.tcl
new file mode 100644
index 0000000..343a4e1
--- /dev/null
+++ b/sta/scripts/statistic.tcl
@@ -0,0 +1,86 @@
+########################################
+#   Get the Cell wise statistic
+#########################################
+
+proc get_statistic {design_name } {
+
+     #puts "Analysising the Statistic ..."
+     
+     #To get all the lib cells and initialise the counter
+     array set libArray {}
+     set mylist [get_lib_cells *]
+     set lib_cnt 0
+     foreach elem $mylist {
+         #puts [get_full_name $elem]
+         #set libArray($lib_cnt,0) [get_full_name $elem]  
+         set libArray($lib_cnt) 0
+         #puts "$libArray($lib_cnt)"
+         set lib_cnt [expr {$lib_cnt + 1}]
+     }
+     
+    
+     #################################################
+     # Accumlate the lib count
+     ################################################ 
+     set mylist1 [get_cells]
+     foreach elem1 $mylist1 {
+        set Inst [get_full_name $elem1]
+        #puts "Searching: ..:: $Inst .." 
+        if ([string match "*ANTENNA*" $Inst]) {
+          continue
+        }
+        if ([string match "*FILLER*" $Inst]) {
+          continue
+        }
+        if ([string match "*TAP_*" $Inst]) {
+          continue
+        }
+        set lib  [get_lib_cells -of_objects [get_cells $Inst]]
+        set lib_name  [get_full_name $lib]
+        #puts "Searching: ..:: $lib_name .." 
+
+        if ([string match "*decap*" $lib_name]) {
+          continue
+        }
+        set lib_cnt 0
+        set mylist2 [get_lib_cells *]
+        foreach elem2 $mylist2 {
+           set ref_lib_name [get_full_name $elem2]
+           if { [expr {$ref_lib_name eq $lib_name}] == 1 } {
+               set c_lib_cnt $libArray($lib_cnt)
+               set libArray($lib_cnt) [expr {$c_lib_cnt + 1}]
+               #puts "Lib Matched : $Inst: $lib_name :: $ref_lib_name :: cnt:  $libArray($lib_cnt)"
+               break
+            }
+            set lib_cnt [expr {$lib_cnt + 1}]
+        }
+     }
+     
+     
+     ##################################################
+     ## lib count > 0
+     ################################################# 
+     set mylist [get_lib_cells *]
+     set lib_cnt 0
+     set seq_cnt 0
+     set comb_cnt 0
+     set total_cnt 0
+     foreach elem $mylist {
+         set ref_lib_name [get_full_name $elem]
+         if {$libArray($lib_cnt)  > 0} {
+           #puts "Lib Name:  $ref_lib_name :: Count: $libArray($lib_cnt)"
+         }
+         # Check cell is Sequential OR Combo
+         if ([string match "*__df*" $ref_lib_name]) {
+           set seq_cnt [expr {$seq_cnt + $libArray($lib_cnt) }]
+         } else {
+           set comb_cnt [expr {$comb_cnt + $libArray($lib_cnt) }]
+         }
+
+         set total_cnt [expr {$total_cnt + $libArray($lib_cnt) }]
+         set lib_cnt [expr {$lib_cnt + 1}]
+     }
+     puts "$design_name :: $total_cnt ::  $comb_cnt ::  $seq_cnt"
+     return "$total_cnt $comb_cnt $seq_cnt"
+}
+
