Initial commit of public repository open_pdks.
diff --git a/common/changepath.py b/common/changepath.py
new file mode 100755
index 0000000..3ebd38c
--- /dev/null
+++ b/common/changepath.py
@@ -0,0 +1,75 @@
+#!/usr/bin/env python3
+#
+# changepath.py: Look up all .mag files in maglef paths from the root
+# PDK directory given as the first argument, and replace them with the
+# path that is given as the second argument.
+#
+# The purpose of this script is to prepare a technology for relocation.
+# This script may be expanded to take care of all relocation issues.
+# For now, only the property "GDS_FILE" in each .mag file is modified.
+#
+# Usage, e.g.:
+#
+# changepath.py /home/tim/projects/efabless/tech/XFAB/EFXH035B/libs.ref/mag/D_CELLS /ef/tech/XFAB/EFXH035B/libs.ref/mag/D_CELLS
+
+import os
+import re
+import sys
+import glob
+
+def usage():
+ print("changepath.py <orig_path_to_dir> <target_path_to_dir>")
+ return 0
+
+if __name__ == '__main__':
+
+ if len(sys.argv) == 1:
+ usage()
+ sys.exit(0)
+
+ optionlist = []
+ arguments = []
+
+ for option in sys.argv[1:]:
+ if option.find('-', 0) == 0:
+ optionlist.append(option)
+ else:
+ arguments.append(option)
+
+ if len(arguments) != 2:
+ print("Wrong number of arguments given to changepath.py.")
+ usage()
+ sys.exit(0)
+
+ source = arguments[0]
+ target = arguments[1]
+
+ gdssource = source.replace('/mag/', '/gds/')
+ gdssource = gdssource.replace('/maglef/', '/gds/')
+ gdstarget = target.replace('/mag/', '/gds/')
+ gdstarget = gdstarget.replace('/maglef/', '/gds/')
+
+ magpath = source + '/*.mag'
+ sourcefiles = glob.glob(magpath)
+
+ if len(sourcefiles) == 0:
+ print("Warning: No files were found in the path " + magpath + ".")
+
+ for file in sourcefiles:
+ # print("Converting file " + file)
+ with open(file, 'r') as ifile:
+ magtext = ifile.read().splitlines()
+
+ proprex = re.compile('string[ \t]+GDS_FILE[ \t]+([^ \t]+)')
+ with open(file, 'w') as ofile:
+ for line in magtext:
+ pmatch = proprex.match(line)
+ if pmatch:
+ filepath = pmatch.group(1)
+ if filepath.startswith(gdssource):
+ print('string GDS_FILE ' + filepath.replace(gdssource, gdstarget), file=ofile)
+ else:
+ print(line, file=ofile)
+ else:
+ print(line, file=ofile)
+