Corrected an error in installing the technology LEF file of the
OSU standard cell libraries for GF180MCU, due to a change in
file location and name in the upstream repository.  Changed
some strings in preproc.py and foundry_install.py to r-strings
which prevents a lot of warning messages from being output.
diff --git a/VERSION b/VERSION
index a9d3998..9203b1d 100644
--- a/VERSION
+++ b/VERSION
@@ -1 +1 @@
-1.0.513
+1.0.514
diff --git a/common/foundry_install.py b/common/foundry_install.py
index 34e3a46..ddbf5f7 100755
--- a/common/foundry_install.py
+++ b/common/foundry_install.py
@@ -394,7 +394,7 @@
 #----------------------------------------------------------------------------
 
 def get_gds_properties(magfile):
-    proprex = re.compile('^[ \t]*string[ \t]+(GDS_[^ \t]+)[ \t]+([^ \t]+)$')
+    proprex = re.compile(r'^[ \t]*string[ \t]+(GDS_[^ \t]+)[ \t]+([^ \t]+)$')
     proplines = []
     if os.path.isfile(magfile):
         with open(magfile, 'r') as ifile:
@@ -415,10 +415,10 @@
 def get_subckt_ports(cdlfile, subname):
     portdict = {}
     pidx = 1
-    portrex = re.compile('^\.subckt[ \t]+([^ \t]+)[ \t]+(.*)$', flags=re.IGNORECASE)
+    portrex = re.compile(r'^\.subckt[ \t]+([^ \t]+)[ \t]+(.*)$', flags=re.IGNORECASE)
     with open(cdlfile, 'r') as ifile:
         cdltext = ifile.read()
-        cdllines = cdltext.replace('\n+', ' ').splitlines()
+        cdllines = cdltext.replace(r'\n+', ' ').splitlines()
         for line in cdllines:
             lmatch = portrex.match(line)
             if lmatch:
@@ -449,7 +449,7 @@
     # case that has been seen seems to work under the assumption that leading
     # whitespace is ignored up to the amount used by the last indentation.
 
-    vlines = re.sub('\\\\\n[ \t]*', '', vtext)
+    vlines = re.sub(r'\\\\\n[ \t]*', '', vtext)
 
     if vlines != vtext:
         # File contents have been modified, so if this file was a symbolic
@@ -1026,7 +1026,7 @@
 
                 # Regular expression catches filename "a.b.c", handling any
                 # leading dots (such as "../") and returns string "a.b"
-                basenamerex = re.compile('(\.?\.?[^.]+\..+)\.+')
+                basenamerex = re.compile(r'(\.?\.?[^.]+\..+)\.+')
                 baseliblist = []
                 splitfiles = {}
                 for libfile in liblist:
@@ -1549,9 +1549,9 @@
                 print('Searching for supported devices in PDK script ' + pdkscript + '.')
 
                 if os.path.isfile(pdkscript):
-                    librex = re.compile('^[ \t]*set[ \t]+PDKNAMESPACE[ \t]+([^ \t]+)$')
-                    devrex = re.compile('^[ \t]*proc[ \t]+([^ :\t]+)::([^ \t_]+)_defaults')
-                    fixrex = re.compile('^[ \t]*return[ \t]+\[([^ :\t]+)::fixed_draw[ \t]+([^ \t]+)[ \t]+')
+                    librex = re.compile(r'^[ \t]*set[ \t]+PDKNAMESPACE[ \t]+([^ \t]+)$')
+                    devrex = re.compile(r'^[ \t]*proc[ \t]+([^ :\t]+)::([^ \t_]+)_defaults')
+                    fixrex = re.compile(r'^[ \t]*return[ \t]+\[([^ :\t]+)::fixed_draw[ \t]+([^ \t]+)[ \t]+')
                     devlist = []
                     fixedlist = []
                     with open(pdkscript, 'r') as ifile:
@@ -1702,7 +1702,7 @@
                                     print('catch {readspice ' + netdir + '/' + netfile
 						+ '}', file=ofile)
 
-                    # print('cellname delete \(UNNAMED\)', file=ofile)
+                    # print(r'cellname delete \(UNNAMED\)', file=ofile)
                     print('puts stdout "Writing all magic database files"', file=ofile)
                     print('writeall force', file=ofile)
 
@@ -1741,7 +1741,7 @@
                                 ltext = ifile.read()
                                 llines = ltext.splitlines()
                                 for lline in llines:
-                                    ltok = re.split(' |\t|\(', lline)
+                                    ltok = re.split(r' |\t|\(', lline)
                                     if ltok[0] == 'MACRO':
                                         lefmacros.append(ltok[1])
                     elif have_lef:
@@ -1770,7 +1770,7 @@
                                 vtext = ifile.read()
                                 vlines = vtext.splitlines()
                                 for vline in vlines:
-                                    vtok = re.split(' |\t|\(', vline)
+                                    vtok = re.split(r' |\t|\(', vline)
                                     try:
                                         if vtok[0] == 'module':
                                             if vtok[1] not in lefmacros:
@@ -1974,7 +1974,7 @@
                         ltext = ifile.read()
                         llines = ltext.splitlines()
                         for lline in llines:
-                            ltok = re.split(' |\t|\(', lline)
+                            ltok = re.split(r' |\t|\(', lline)
                             if ltok[0] == 'MACRO':
                                 lefmacros.append(ltok[1])
 
@@ -2063,7 +2063,7 @@
                     # an error message.
                     if len(lefmacros) > 0:
                         print('load ' + lefmacros[0], file=ofile)
-                        # print('cellname delete \(UNNAMED\)', file=ofile)
+                        # print(r'cellname delete \(UNNAMED\)', file=ofile)
                     else:
                         err_no_macros = True
                     print('writeall force', file=ofile)
@@ -2143,9 +2143,9 @@
 
                     proprex = re.compile('<< properties >>')
                     endrex = re.compile('<< end >>')
-                    rlabrex = re.compile('rlabel[ \t]+[^ \t]+[ \t]+[^ \t]+[ \t]+[^ \t]+[ \t]+[^ \t]+[ \t]+[^ \t]+[ \t]+[^ \t]+[ \t]+([^ \t]+)')
-                    flabrex = re.compile('flabel[ \t]+.*[ \t]+([^ \t]+)[ \t]*')
-                    portrex = re.compile('port[ \t]+([^ \t]+)[ \t]+(.*)')
+                    rlabrex = re.compile(r'rlabel[ \t]+[^ \t]+[ \t]+[^ \t]+[ \t]+[^ \t]+[ \t]+[^ \t]+[ \t]+[^ \t]+[ \t]+[^ \t]+[ \t]+([^ \t]+)')
+                    flabrex = re.compile(r'flabel[ \t]+.*[ \t]+([^ \t]+)[ \t]*')
+                    portrex = re.compile(r'port[ \t]+([^ \t]+)[ \t]+(.*)')
                     gcellrex = re.compile('string gencell')
                     portnum = -1
 
@@ -2414,7 +2414,7 @@
                 else:
                     gdslibroot = os.path.split(allgdslibname)[1]
                     print('load ' + os.path.splitext(gdslibroot)[0], file=ofile)
-                print('catch {cellname delete \(UNNAMED\)}', file=ofile)
+                print(r'catch {cellname delete \(UNNAMED\)}', file=ofile)
 
                 print('ext2spice lvs', file=ofile)
 
diff --git a/common/preproc.py b/common/preproc.py
index 15f0ecf..e82edbc 100755
--- a/common/preproc.py
+++ b/common/preproc.py
@@ -60,13 +60,13 @@
 
 def solve_statement(condition):
 
-    defrex = re.compile('defined[ \t]*\(([^\)]+)\)')
-    orrex = re.compile('(.+)\|\|(.+)')
-    andrex = re.compile('(.+)&&(.+)')
-    notrex = re.compile('!([^&\|]+)')
-    parenrex = re.compile('\(([^\)]+)\)')
-    leadspacerex = re.compile('^[ \t]+(.*)')
-    endspacerex = re.compile('(.*)[ \t]+$')
+    defrex = re.compile(r'defined[ \t]*\(([^\)]+)\)')
+    orrex = re.compile(r'(.+)\|\|(.+)')
+    andrex = re.compile(r'(.+)&&(.+)')
+    notrex = re.compile(r'!([^&\|]+)')
+    parenrex = re.compile(r'\(([^\)]+)\)')
+    leadspacerex = re.compile(r'^[ \t]+(.*)')
+    endspacerex = re.compile(r'(.*)[ \t]+$')
 
     matchfound = True
     while matchfound:
@@ -166,24 +166,24 @@
 
 def runpp(keys, keyrex, defines, ccomm, utf, incdirs, inputfile, ofile):
 
-    includerex = re.compile('^[ \t]*#include[ \t]+"*([^ \t\n\r"]+)')
-    definerex = re.compile('^[ \t]*#define[ \t]+([^ \t]+)[ \t]+(.+)')
-    paramrex = re.compile('^([^\(]+)\(([^\)]+)\)')
-    defrex = re.compile('^[ \t]*#define[ \t]+([^ \t\n\r]+)')
-    undefrex = re.compile('^[ \t]*#undef[ \t]+([^ \t\n\r]+)')
-    ifdefrex = re.compile('^[ \t]*#ifdef[ \t]+(.+)')
-    ifndefrex = re.compile('^[ \t]*#ifndef[ \t]+(.+)')
-    ifrex = re.compile('^[ \t]*#if[ \t]+(.+)')
-    elseifrex = re.compile('^[ \t]*#elseif[ \t]+(.+)')
-    elserex = re.compile('^[ \t]*#else')
-    endifrex = re.compile('^[ \t]*#endif')
-    commentrex = re.compile('^###[^#]*$')
-    ccstartrex = re.compile('/\*')		# C-style comment start
-    ccendrex = re.compile('\*/')		# C-style comment end
-    contrex = re.compile('.*\\\\$')		# Backslash continuation line
+    includerex = re.compile(r'^[ \t]*#include[ \t]+"*([^ \t\n\r"]+)')
+    definerex = re.compile(r'^[ \t]*#define[ \t]+([^ \t]+)[ \t]+(.+)')
+    paramrex = re.compile(r'^([^\(]+)\(([^\)]+)\)')
+    defrex = re.compile(r'^[ \t]*#define[ \t]+([^ \t\n\r]+)')
+    undefrex = re.compile(r'^[ \t]*#undef[ \t]+([^ \t\n\r]+)')
+    ifdefrex = re.compile(r'^[ \t]*#ifdef[ \t]+(.+)')
+    ifndefrex = re.compile(r'^[ \t]*#ifndef[ \t]+(.+)')
+    ifrex = re.compile(r'^[ \t]*#if[ \t]+(.+)')
+    elseifrex = re.compile(r'^[ \t]*#elseif[ \t]+(.+)')
+    elserex = re.compile(r'^[ \t]*#else')
+    endifrex = re.compile(r'^[ \t]*#endif')
+    commentrex = re.compile(r'^###[^#]*$')
+    ccstartrex = re.compile(r'/\*')		# C-style comment start
+    ccendrex = re.compile(r'\*/')		# C-style comment end
+    contrex = re.compile(r'.*\\\\$')		# Backslash continuation line
 
-    badifrex = re.compile('^[ \t]*#if[ \t]*.*')
-    badelserex = re.compile('^[ \t]*#else[ \t]*.*')
+    badifrex = re.compile(r'^[ \t]*#if[ \t]*.*')
+    badelserex = re.compile(r'^[ \t]*#else[ \t]*.*')
 
     # This code is not designed to operate on huge files.  Neither is it designed to be
     # efficient.
@@ -418,16 +418,16 @@
                 # parentheses;  e.g., "def(a, b, (c1,c2))".  This is NOT
                 # handled.
 
-                pcondition = condition + '\('
+                pcondition = condition + r'\('
                 for param in parameters[0:-1]:
-                    pcondition += '(.*),'
-                pcondition += '(.*)\)'
+                    pcondition += r'(.*),'
+                pcondition += r'(.*)\)'
 
                 # Generate the substitution string with group substitutions
                 pvalue = pmatch.group(2)
                 idx = 1
                 for param in parameters:
-                    pvalue = pvalue.replace(param, '\g<' + str(idx) + '>')
+                    pvalue = pvalue.replace(param, r'\g<' + str(idx) + '>')
                     idx = idx + 1
 
                 defines[condition] = pvalue
diff --git a/gf180mcu/Makefile.in b/gf180mcu/Makefile.in
index e6655ad..d2a303e 100644
--- a/gf180mcu/Makefile.in
+++ b/gf180mcu/Makefile.in
@@ -1119,8 +1119,8 @@
 	# NOTE: Work in progress (to be completed)
 	${STAGE} -source ${GF180MCU_OSU_SC_PATH}/gf180mcu_osu_sc_gp9t3v3 \
 		-target ${STAGING_PATH}/${GF180MCU$*} \
-		-techlef ../tlef/gf180mcu_5LM_1TM_9K_9t.tlef \
-			rename=gf180mcu_fd_sc_mcu7t5v0__nom.tlef \
+		-techlef tlef/gf180mcu_osu_sc_gp9t3v3.tlef \
+			rename=gf180mcu_osu_sc_gp9t3v3__nom.tlef \
 		-lib lib/gf180mcu_osu_sc_gp9t3v3_TT_3P3_25C.ccs.lib \
 			rename=gf180mcu_osu_sc_gp9t3v3__tt_025C_3v30 \
 		-verilog cells/*/*.v compile-only \
@@ -1133,8 +1133,8 @@
 
 	${STAGE} -source ${GF180MCU_OSU_SC_PATH}/gf180mcu_osu_sc_gp12t3v3 \
 		-target ${STAGING_PATH}/${GF180MCU$*} \
-		-techlef ../tlef/gf180mcu_5LM_1TM_9K_12t.tlef \
-			rename=gf180mcu_fd_sc_mcu7t5v0__nom.tlef \
+		-techlef tlef/gf180mcu_osu_sc_gp12t3v3.tlef \
+			rename=gf180mcu_osu_sc_gp12t3v3__nom.tlef \
 		-lib lib/gf180mcu_osu_sc_gp12t3v3_TT_25C.ccs.lib \
 			rename=gf180mcu_osu_sc_gp12t3v3__tt_025C_3v30 \
 		-verilog cells/*/*.v compile-only \