diff --git a/sky130/Makefile.in b/sky130/Makefile.in
index e86e1e9..c8fed53 100644
--- a/sky130/Makefile.in
+++ b/sky130/Makefile.in
@@ -328,6 +328,7 @@
 	rm -f ${MAGIC_STAGING_A}/magicrc
 	(cd ${MAGICTOP_STAGING_A} ; ln -s ${REV_DIR} current)
 	cp -rp custom/scripts/seal_ring_generator ${MAGIC_STAGING_A}/.
+	cp -rp custom/scripts/bump_bond_generator ${MAGIC_STAGING_A}/.
 	cp custom/scripts/generate_fill.py ${MAGIC_STAGING_A}/.
 	cp custom/scripts/check_density.py ${MAGIC_STAGING_A}/.
 	${CPP} ${SKY130A_DEFS} magic/${TECH}.tech > ${MAGIC_STAGING_A}/${SKY130A}.tech
diff --git a/sky130/custom/scripts/bump_bond_generator/README b/sky130/custom/scripts/bump_bond_generator/README
new file mode 100644
index 0000000..72a226a
--- /dev/null
+++ b/sky130/custom/scripts/bump_bond_generator/README
@@ -0,0 +1,3 @@
+This set of scripts will generate bump bond layout on the RDL
+layer.
+
diff --git a/sky130/custom/scripts/bump_bond_generator/bump_bond.tcl b/sky130/custom/scripts/bump_bond_generator/bump_bond.tcl
new file mode 100644
index 0000000..7da795a
--- /dev/null
+++ b/sky130/custom/scripts/bump_bond_generator/bump_bond.tcl
@@ -0,0 +1,272 @@
+# 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
+
+namespace path {::tcl::mathop ::tcl::mathfunc}
+
+#-----------------------------------------------------------------------
+# Routines for generating bump bonds.
+# Use with "micross.tech" technology file.
+#
+# SkyWater top layers:
+# 	m5	metal5 (thick top metal)
+#	glass	polyimide (glass) cut
+#	
+# Bump bond layers:
+#	p1	polyimide via
+#	rdl	redistribution metal
+#	p2	polyimide via2
+#	ubm	under-bump material
+# 
+#-----------------------------------------------------------------------
+
+#-----------------------------------------------------------------------
+# Internal units to microns conversion
+#-----------------------------------------------------------------------
+
+proc magic::i2u {value} {
+    return [expr {((round([magic::cif scale output] * 10000)) / 10000.0) * $value}]
+}
+
+#-----------------------------------------------------------------------
+# Microns to internal units conversion
+#-----------------------------------------------------------------------
+
+proc magic::u2i {value} {
+    return [expr {$value / ((round([magic::cif scale output] * 10000)) / 10000.0)}]
+}
+
+#-----------------------------------------------------------------------
+# make_bump_bond ---
+#-----------------------------------------------------------------------
+# Description:
+#	Create geometry for a bump bond in a subcell, centered at the
+#	origin.  The bump bond itself is a circle (approximated by a
+#	36-sided polygon) of diameter nominally 250um.  The RDL layer
+#	is 10um larger (rule M4) and the under-bump material layer is
+#	15um smaller (rule U4).
+#
+# Arguments:
+#	angle:	0 or 45
+#
+#	The angle represents the direction toward which the taper of
+#	the RDL layer points.  The angle is appended to the subcell
+#	name, so the cell is "bump_bond0" or "bump_bond45".
+#
+#	The version with suffix "45" has the RDL tapering toward the
+#	NE corner when the cell is in its natural orientation.  The
+#	version suffix "0" has the RDL tapering toward the E side when
+#	the cell is in its natural orientation.
+#
+#-----------------------------------------------------------------------
+
+proc make_bump_bond {{orient 0}} {
+    suspendall
+    select top cell
+    set orig_cell [cellname list self]
+
+    load bump_bond${orient} -quiet
+    box values 0 0 0 0
+
+    set rbump 125.0	;# under-bump material radius, in microns
+    set coords []
+    for {set i 0} {$i < 36} {incr i} {
+        set angle [* $i 10]
+        set arad [/ [* 3.1415926 $angle] 180.0]
+        lappend coords [* $rbump [cos $arad]]um
+        lappend coords [* $rbump [sin $arad]]um
+    }
+    polygon ubm {*}$coords
+
+    set rbump 110.0	;# polyimide 2 via radius, in microns
+    set coords []
+    for {set i 0} {$i < 36} {incr i} {
+        set angle [* $i 10]
+        set arad [/ [* 3.1415926 $angle] 180.0]
+        lappend coords [* $rbump [cos $arad]]um
+        lappend coords [* $rbump [sin $arad]]um
+    }
+    polygon pi2 {*}$coords
+
+    set rbump 135.0	;# rdl layer radius, in microns
+    set rdiag [expr {$rbump * sqrt(2.0)}]
+    set coords []
+
+    if {$orient == 45} {
+    	for {set i 9} {$i <= 36} {incr i} {
+            set angle [* $i 10]
+            set arad [/ [* 3.1415926 $angle] 180.0]
+            lappend coords [* $rbump [cos $arad]]um
+            lappend coords [* $rbump [sin $arad]]um
+    	}
+    	lappend coords ${rbump}um
+    	lappend coords ${rbump}um
+    } else {
+    	for {set i 0} {$i <= 27} {incr i} {
+            set angle [* [+ $i 4.5] 10]
+            set arad [/ [* 3.1415926 $angle] 180.0]
+            lappend coords [* $rbump [cos $arad]]um
+            lappend coords [* $rbump [sin $arad]]um
+    	}
+    	lappend coords ${rdiag}um
+    	lappend coords 0
+    }
+    polygon rdl {*}$coords
+
+    # Make cell bound that encompasses the rdl circle only
+    box grow c ${rbump}um
+    set bounds [box values]
+    property FIXED_BBOX "$bounds"
+
+    load $orig_cell
+    resumeall
+}
+
+#-----------------------------------------------------------------------
+# draw_bump_bond ---
+#-----------------------------------------------------------------------
+# Description:
+#	Bump bond is a circle (approximated by a 36-sided polygon) of
+#	diameter nominally 250um.
+#
+#
+# Arguments:
+#	x y	:  Coordinates of the bump bond center position, in microns
+#	orient	:  Direction of tapered RDL joining the pad to a route
+#		   value is in integer degrees, 0 is oriented E (east),
+#		   and value must be a multiple of 45.
+#-----------------------------------------------------------------------
+
+proc draw_bump_bond {x y {orient 0}} {
+    box size 0 0
+    box position ${x}um ${y}um
+    if {[% $orient 90] != 0} {
+	set bondcell bump_bond45
+	set orient [- $orient 45]
+    } else {
+	set bondcell bump_bond0
+    }
+
+    if {$orient < 0} {
+	set orient [+ 360 $orient]
+    }
+    if {$orient != 0} {
+        set orient [- 360 $orient]
+    }
+    getcell $bondcell $orient child 0 0
+}
+
+#-----------------------------------------------------------------------
+# bevel_corners ---
+#-----------------------------------------------------------------------
+# Description:
+#	Bevel the corners of the indicated layer in the current box
+#	with the indicated bevel length
+#
+# Arguments:
+#	layer	:  The layer to be cropped
+#	length	:  The length of the bevel (in microns)
+#-----------------------------------------------------------------------
+
+proc bevel_corners {layer length} {
+    suspendall
+    snap internal
+    pushbox
+    set ilength [magic::u2i $length]
+    set side [* $ilength 0.7071]
+    set iside [expr {int($side)}]
+
+    set padbox [box values]
+    set boxwidth [- [lindex $padbox 2] [lindex $padbox 0]]
+    set boxheight [- [lindex $padbox 3] [lindex $padbox 1]]
+
+    set iwidth  [- $boxwidth $iside]
+    set iheight [- $boxheight $iside]
+
+    box size $iside $iside
+    spliterase sw $layer
+
+    box move n $iheight
+    spliterase nw $layer
+
+    box move e $iwidth
+    spliterase ne $layer
+
+    box move s $iheight
+    spliterase se $layer
+
+    popbox
+    resumeall
+}
+
+#-----------------------------------------------------------------------
+# draw_pad_bond ---
+#-----------------------------------------------------------------------
+# Description:
+#	Draws layers over a wirebond pad to connect to the RDL layer
+#
+# Arguments:
+#	x y	:  Coordinates of the bond pad center position, in microns
+#-----------------------------------------------------------------------
+
+proc draw_pad_bond {x y} {
+    snap internal
+    box values 0 0 0 0
+    box position $x $y
+    box grow c 50um
+
+    # Make sure there is glass underneath.  If not, assume the square
+    # center of a 60um x 70um bond pad (60um x 60um).
+    select area glass
+    set stuff [what -list]
+    set layers [lindex $stuff 0]
+    if {$layers == {}} {
+        box position $x $y
+	box size 0 0
+        box grow c 30um
+    } else {
+        set padbox [select bbox]
+        box values {*}$padbox
+    }
+    # Satisfy rule V3:  P1 via inside pad cut by 10um
+    box grow c -10um
+    paint pi1
+    bevel_corners pi1 7.5
+
+    # Satisfy rule M3:  RDL overlap of P1 >= 10um
+    box grow c 10um
+    paint rdl
+    bevel_corners rdl 10.0
+}
+
+#-----------------------------------------------------------------------
+# draw_pad_route ---
+#-----------------------------------------------------------------------
+# Description:
+#	Draws a route on the RDL layer connecting the points given in
+#	the coordinate list.
+#
+# Arguments:
+#	coords	:  List of coordinate pairs, in microns
+#	width	:  Route width in microns, default 15
+#-----------------------------------------------------------------------
+
+proc draw_pad_route {coords {width 15.0}} {
+    set icoords []
+    foreach coord $coords {
+        lappend icoords ${coord}um
+    }
+    wire segment rdl ${width}um {*}$icoords
+}
+
diff --git a/sky130/custom/scripts/bump_bond_generator/micross.tech b/sky130/custom/scripts/bump_bond_generator/micross.tech
new file mode 100644
index 0000000..0df9bcc
--- /dev/null
+++ b/sky130/custom/scripts/bump_bond_generator/micross.tech
@@ -0,0 +1,137 @@
+tech
+   35
+   micross
+end
+
+version
+   version 0.1
+   description "Techfile for Micross bump-bond post-processing for Sky130"
+   requires magic-8.1.111
+end
+
+planes
+   m5
+   rdl
+   ubm
+   glass
+end
+
+types
+   m5 metal5 m5
+   m5    pi1
+   rdl   rdl
+   rdl   pi2
+   ubm   ubm
+   glass glass
+end 
+
+contact
+   pi1	  metal5 rdl
+   pi2	  rdl	 ubm
+end
+
+styles
+   styletype mos
+   metal5 metal6
+   pi1	  metal6 metal7 via6
+   rdl	  metal7
+   pi2	  metal7 metal8 via7
+   ubm    metal8
+   glass  overglass
+end
+
+compose
+end
+
+connect
+end
+
+cifoutput
+style micross
+   scalefactor 1
+   options calma-permissive-labels
+
+   # NOTE:  metal5 and glass are for reference only;  they do not get output
+
+   layer PI1 pi1
+   labels pi1
+   calma  5 0
+
+   layer RDL rdl
+   labels rdl
+   calma 10 0
+
+   layer PI2 pi2
+   labels pi2
+   calma 15 0
+
+   layer UBM ubm
+   labels ubm
+   calma 20 0
+
+end
+
+cifinput
+style micross
+   scalefactor 1
+
+   # NOTE:  metal5 and glass are for reference;  GDS numbers correspond
+   # to SkyWater SKY130
+
+   layer metal5 MET5
+   labels MET5
+
+   layer glass GLASS
+
+   layer pi1 PI1
+   labels PI1
+
+   layer rdl RDL
+   labels RDL
+
+   layer pi2 PI2
+   labels PI2
+
+   layer ubm UBM
+   labels UBM
+
+   calma MET5  72 20
+   calma GLASS 76 20
+   calma PI1    5 0
+   calma RDL   10 0
+   calma PI2   15 0
+   calma UBM   20 0
+
+end
+
+# mzrouter
+# end
+
+drc
+end
+
+extract
+style generic
+   cscale 1
+   lambda 1
+   step 10
+   sidehalo 0
+
+  planeorder m5  0
+  planeorder rdl 1
+  planeorder ubm 2
+  planeorder glass 3
+end
+
+# wiring
+# end
+
+# router
+# end
+
+# plowing
+# end
+
+plot
+  style pnm
+end
