blob: 41dd798919cc9445c951e7ca7016b6dd33b522b3 [file] [log] [blame]
#!/usr/bin/env python3
#
# fix_xschemrc.py ---
#
# Special-purpose script that does the work of modifying a few items in
# the source xschemrc file to make it open_pdks-specific
import sys
if len(sys.argv) != 3:
print('Usage: fix_xschemrc.py <filename> <techname>')
sys.exit(1)
else:
file_name = sys.argv[1]
tech_name = sys.argv[2]
with open(file_name, 'r') as ifile:
xlines = ifile.read().splitlines()
# Replace lines which assume PDK is in the user directory above
outlines = []
skipnext = 0
for line in xlines:
if skipnext == 0:
if 'trying to find' in line:
skipnext = 2
outlines.append(line)
else:
skipnext -= 1
if skipnext == 0:
outlines.append(' if {[file isdir /usr/share/pdk]} {set PDK_ROOT /usr/share/pdk')
outlines.append(' } elseif {[file isdir /usr/local/share/pdk]} {set PDK_ROOT /usr/local/share/pdk')
outlines.append(' } elseif {[file isdir $env(HOME)/share/pdk]} {set PDK_ROOT $env(HOME)/share/pdk')
# Append these lines:
outlines.append('')
outlines.append('# open_pdks-specific')
outlines.append('set XSCHEM_START_WINDOW ${PDK_ROOT}/' + tech_name + '/libs.tech/xschem/tests/0_top.sch')
outlines.append('append XSCHEM_LIBRARY_PATH :${PDK_ROOT}/' + tech_name + '/libs.tech/xschem')
outlines.append('')
outlines.append('# allow a user-specific path add-on')
outlines.append('if { [info exists ::env(XSCHEM_USER_LIBRARY_PATH) ] } {')
outlines.append(' append XSCHEM_LIBRARY_PATH :$env(XSCHEM_USER_LIBRARY_PATH)')
outlines.append('}')
# Write back into the same file
with open(file_name, 'w') as ofile:
for line in outlines:
print(line, file=ofile)
print("Done!")