#!/usr/bin/env python3
#
# fix_vddio_lvc_gds.py ---
#
# Special-purpose script that does the work of what ought to be a simple
# binary diff and patch.  Except that no such thing exists as a standard
# offering on most Linux systems, so instead of adding another OS
# package requirement, I'm just writing a binary search-and-replace in
# python.
#
# The purpose of the patch is to add metal3 resistor ID markers to the
# sky130_fd_io__hvc_clampv2 cell.  Also add label for PADISOL|R
# in the isolated metal3 region formed by the resistors, in the
# sky130_fd_io__top_power_lvc_wpad cell.
#

import sys

if len(sys.argv) != 2:
    print('Usage:  fix_vddio_pad_gds.py <filename>')
    sys.exit(1)
else:
    file_name = sys.argv[1]

# Metal 3 resistor at (0.505um 61.12um 24.485um 61.56um)
add_data_1 = b'\x00\x04\x08\x00\x00\x06\x0d\x02\x00\x46\x00\x06\x0e\x02\x00\x0d\x00\x2c\x10\x03\x00\x00\x01\xf9\x00\x00\xee\xc0\x00\x00\x5f\xa5\x00\x00\xee\xc0\x00\x00\x5f\xa5\x00\x00\xf0\x78\x00\x00\x01\xf9\x00\x00\xf0\x78\x00\x00\x01\xf9\x00\x00\xee\xc0\x00\x04\x11\x00'

# Metal 3 resistor at (50.40um 61.12um 74.64um 61.56um)
add_data_2 = b'\x00\x04\x08\x00\x00\x06\x0d\x02\x00\x46\x00\x06\x0e\x02\x00\x0d\x00\x2c\x10\x03\x00\x00\xc4\xe0\x00\x00\xee\xc0\x00\x01\x23\x90\x00\x00\xee\xc0\x00\x01\x23\x90\x00\x00\xf0\x78\x00\x00\xc4\xe0\x00\x00\xf0\x78\x00\x00\xc4\xe0\x00\x00\xee\xc0\x00\x04\x11\x00'

# Metal 3 resistor at (24.475um 61.56um 24.485um 67.07um)
add_data_3 = b'\x00\x04\x08\x00\x00\x06\x0d\x02\x00\x46\x00\x06\x0e\x02\x00\x0d\x00\x2c\x10\x03\x00\x00\x5f\x9b\x00\x00\xf0\x78\x00\x00\x5f\xa5\x00\x00\xf0\x78\x00\x00\x5f\xa5\x00\x01\x05\xfe\x00\x00\x5f\x9b\x00\x01\x05\xfe\x00\x00\x5f\x9b\x00\x00\xf0\x78\x00\x04\x11\x00'

# Metal 3 resistor at (0.505um 61.56um 0.515um 67.07um)
add_data_4 = b'\x00\x04\x08\x00\x00\x06\x0d\x02\x00\x46\x00\x06\x0e\x02\x00\x0d\x00\x2c\x10\x03\x00\x00\x01\xf9\x00\x00\xf0\x78\x00\x00\x02\x03\x00\x00\xf0\x78\x00\x00\x02\x03\x00\x01\x05\xfe\x00\x00\x01\xf9\x00\x01\x05\xfe\x00\x00\x01\xf9\x00\x00\xf0\x78\x00\x04\x11\x00'

# Metal 3 resistor at (0.505um 67.07um 24.485um 67.51um)
add_data_5 = b'\x00\x04\x08\x00\x00\x06\x0d\x02\x00\x46\x00\x06\x0e\x02\x00\x0d\x00\x2c\x10\x03\x00\x00\x01\xf9\x00\x01\x05\xfe\x00\x00\x5f\xa5\x00\x01\x05\xfe\x00\x00\x5f\xa5\x00\x01\x07\x66\x00\x00\x01\xf9\x00\x01\x07\x66\x00\x00\x01\xf9\x00\x01\x05\xfe\x00\x04\x11\x00'

# Metal 3 resistor at (50.76um 67.07um 74.64um 67.51um)
add_data_6 = b'\x00\x04\x08\x00\x00\x06\x0d\x02\x00\x46\x00\x06\x0e\x02\x00\x0d\x00\x2c\x10\x03\x00\x00\xc6\x48\x00\x01\x05\xfe\x00\x01\x23\x90\x00\x01\x05\xfe\x00\x01\x23\x90\x00\x01\x07\x66\x00\x00\xc6\x48\x00\x01\x07\x66\x00\x00\xc6\x48\x00\x01\x05\xfe\x00\x04\x11\x00'

# Metal 3 resistor at (50.76um 61.56um 50.77um 67.07um)
add_data_7 = b'\x00\x04\x08\x00\x00\x06\x0d\x02\x00\x46\x00\x06\x0e\x02\x00\x0d\x00\x2c\x10\x03\x00\x00\xc6\x48\x00\x00\xf0\x78\x00\x00\xc6\x52\x00\x00\xf0\x78\x00\x00\xc6\x52\x00\x01\x05\xfe\x00\x00\xc6\x48\x00\x01\x05\xfe\x00\x00\xc6\x48\x00\x00\xf0\x78\x00\x04\x11\x00'

# Metal 3 resistor at (74.63um 61.56um 74.64um 67.07um)
add_data_8 = b'\x00\x04\x08\x00\x00\x06\x0d\x02\x00\x46\x00\x06\x0e\x02\x00\x0d\x00\x2c\x10\x03\x00\x01\x23\x86\x00\x00\xf0\x78\x00\x01\x23\x90\x00\x00\xf0\x78\x00\x01\x23\x90\x00\x01\x05\xfe\x00\x01\x23\x86\x00\x01\x05\xfe\x00\x01\x23\x86\x00\x00\xf0\x78\x00\x04\x11\x00'

# PADISOR label at (67.45um 64.22um) size 0.3um on MET3PIN
add_data_9 = b'\x00\x04\x0c\x00\x00\x06\x0d\x02\x00\x46\x00\x06\x16\x02\x00\x10\x00\x06\x17\x01\x00\x05\x00\x06\x1a\x01\x00\x00\x00\x0c\x1b\x05\x40\x4c\x66\x66\x66\x66\x66\x66\x00\x0c\x10\x03\x00\x01\x07\x7a\x00\x00\xfa\xdc\x00\x0c\x19\x06\x50\x41\x44\x49\x53\x4f\x52\x00\x00\x04\x11\x00'

# PADISOL label at (5.05um 64.22um) size 0.3um on MET3PIN
add_data_10 = b'\x00\x04\x0c\x00\x00\x06\x0d\x02\x00\x46\x00\x06\x16\x02\x00\x10\x00\x06\x17\x01\x00\x05\x00\x06\x1a\x01\x00\x00\x00\x0c\x1b\x05\x40\x4c\x66\x66\x66\x66\x66\x66\x00\x0c\x10\x03\x00\x00\x13\xba\x00\x00\xfa\xdc\x00\x0c\x19\x06\x50\x41\x44\x49\x53\x4f\x4c\x00\x00\x04\x11\x00'

# Append metal resistors after this data (between 69:16 and 69:44)
orig_data_1 = b'\x00\x00\x00\x00\x00\x00\xad\x98\x00\x00\x01\x45\x00\x00\x86\x88\x00\x00\x01\x45\x00\x00\x86\x88\x00\x00\x00\x00\x00\x04\x11\x00'

# Append port label after this data (after "P_CORE" label)
orig_data_2 = b'\x00\x0c\x10\x03\x00\x00\xf5\x0a\x00\x00\x08\x7f\x00\x0a\x19\x06\x50\x5f\x43\x4f\x52\x45\x00\x04\x11\x00'

# This is not efficient, but only needs to be done once.

with open(file_name, 'rb') as ifile:
    data = ifile.read()
    data = data.replace(orig_data_1, orig_data_1 + add_data_1 + add_data_2 + add_data_3 + add_data_4 + add_data_5 + add_data_6 + add_data_7 + add_data_8)
    data = data.replace(orig_data_2, orig_data_2 + add_data_9 + add_data_10)

# Write back into the same file
with open(file_name, 'wb') as ofile:
    ofile.write(data)

print("Done!")
