update
diff --git a/openlane/cntr_example/config.tcl b/openlane/cntr_example/config.tcl
index 624b731..974b3f9 100644
--- a/openlane/cntr_example/config.tcl
+++ b/openlane/cntr_example/config.tcl
@@ -1,51 +1,57 @@
-# User config
-set script_dir [file dirname [file normalize [info script]]]
 
-# name of your project, should also match the name of the top module
-set ::env(DESIGN_NAME) cntr_example
+# 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
 
+set ::env(PDK) "gf180mcuC"
 set ::env(STD_CELL_LIBRARY) "gf180mcu_fd_sc_mcu7t5v0"
 
-# add your source files here
-#set ::env(VERILOG_FILES) "$::env(DESIGN_DIR)/../../verilog/rtl/wrapped_multiplier.v \
-#set ::env(VERILOG_FILES) "$::env(DESIGN_DIR)/../../verilog/rtl/wrapped_multiplier.v \
-#    $::env(DESIGN_DIR)/../../verilog/rtl/multilib.v"
-set ::env(VERILOG_FILES) [glob $::env(DESIGN_DIR)/../../verilog/rtl/cntr_example.v]
+set ::env(DESIGN_NAME) cntr_example
 
-# set absolute size of the die to 300 x 300 um
-#for two 4-bit counter
-#set ::env(DIE_AREA) "0 0 400 400" 
-set ::env(DIE_AREA) "0 0 1500 1500"
-set ::env(FP_SIZING) absolute
+set ::env(VERILOG_FILES) "\
+	$::env(CARAVEL_ROOT)/verilog/rtl/defines.v \
+	$::env(DESIGN_DIR)/../../verilog/rtl/cntr_example.v"
 
-#for two 4-bit counter
-#set ::env(FP_CORE_UTIL) 40 
-set ::env(FP_CORE_UTIL) 20
-set ::env(PL_TARGET_DENSITY) [ expr ($::env(FP_CORE_UTIL)+5) / 100.0 ]
-
-# define number of IO pads
-set ::env(SYNTH_DEFINES) "MPRJ_IO_PADS=38"
-
-# clock period is ns
-# need 40MHz for VGA out = 25ns
-# copied from VGA example
-# for two 4-bit counter
-#set ::env(CLOCK_PERIOD) "30" 
-set ::env(CLOCK_PERIOD) "65"
-set ::env(CLOCK_PORT) "wb_clk_i"
-#set ::env(CLOCK_PORT) "clk"
-
-# macro needs to work inside Caravel, so can't be core and can't use metal 5
 set ::env(DESIGN_IS_CORE) 0
+
+set ::env(CLOCK_PORT) "wb_clk_i"
+#set ::env(CLOCK_NET) "counter.clk"
+set ::env(CLOCK_PERIOD) "65"
+
+set ::env(FP_SIZING) absolute
+set ::env(DIE_AREA) "0 0 1500 1500"
+
+set ::env(FP_PIN_ORDER_CFG) $::env(DESIGN_DIR)/pin_order.cfg
+
+set ::env(PL_BASIC_PLACEMENT) 0
+set ::env(PL_TARGET_DENSITY) 0.45
+
+set ::env(FP_CORE_UTIL) 40
+
+set ::env(SYNTH_MAX_FANOUT) 4
+
+# Maximum layer used for routing is metal 4.
+# This is because this macro will be inserted in a top level (user_project_wrapper) 
+# where the PDN is planned on metal 5. So, to avoid having shorts between routes
+# in this macro and the top level metal 5 stripes, we have to restrict routes to metal4.  
+# 
 set ::env(RT_MAX_LAYER) {Metal4}
 
-# define power straps so the macro works inside Caravel's PDN
+# You can draw more power domains if you need to 
 set ::env(VDD_NETS) [list {vdd}]
 set ::env(GND_NETS) [list {vss}]
 
-# regular pin order seems to help with aggregating all the macros for the group project
-#set ::env(FP_PIN_ORDER_CFG) $script_dir/pin_order.cfg
-
-set ::env(FP_IO_VTHICKNESS_MULT) 4
-set ::env(FP_IO_HTHICKNESS_MULT) 4
-
+set ::env(DIODE_INSERTION_STRATEGY) 4 
+# If you're going to use multiple power domains, then disable cvc run.
+set ::env(RUN_CVC) 1
\ No newline at end of file
diff --git a/openlane/cntr_example/pin_order.cfg b/openlane/cntr_example/pin_order.cfg
new file mode 100644
index 0000000..2fda806
--- /dev/null
+++ b/openlane/cntr_example/pin_order.cfg
@@ -0,0 +1,10 @@
+#BUS_SORT
+
+#S
+wb_.*
+wbs_.*
+la_.*
+irq.*
+
+#N
+io_.*