#!/usr/bin/env python3

import sys
import os

from spice import header, change_names

FILE_MAP = {
	"sram_cell_1rw_1r/cell_1rw_1r.lvs.calibre.sp":                  "openram_cell_1rw_1r/sky130_fd_bd_sram__openram_cell_1rw_1r.lvs.calibre.spice",
	"sram_cell_1rw_1r/cell_1rw_1r.lvs.sp":                          "openram_cell_1rw_1r/sky130_fd_bd_sram__openram_cell_1rw_1r.lvs.spice",
	"sram_cell_1rw_1r/cell_1rw_1r.sp":                              "openram_cell_1rw_1r/sky130_fd_bd_sram__openram_cell_1rw_1r.base.spice",

	"sram_cell_6t/cell_6t.lvs.calibre.sp":                          "openram_cell_6t/sky130_fd_bd_sram__openram_cell_6t.lvs.calibre.spice",
	"sram_cell_6t/cell_6t.lvs.sp":                                  "openram_cell_6t/sky130_fd_bd_sram__openram_cell_6t.lvs.spice",
	"sram_cell_6t/cell_6t.sp":                                      "openram_cell_6t/sky130_fd_bd_sram__openram_cell_6t.base.spice",

	"sram_col_cap_cell_1rw_1r/col_cap_cell_1rw_1r.lvs.calibre.sp":  "openram_cell_1rw_1r_cap_col/sky130_fd_bd_sram__openram_cell_1rw_1r_cap_col.lvs.calibre.spice",
	"sram_col_cap_cell_1rw_1r/col_cap_cell_1rw_1r.lvs.sp":          "openram_cell_1rw_1r_cap_col/sky130_fd_bd_sram__openram_cell_1rw_1r_cap_col.lvs.spice",
	"sram_col_cap_cell_1rw_1r/col_cap_cell_1rw_1r.sp":              "openram_cell_1rw_1r_cap_col/sky130_fd_bd_sram__openram_cell_1rw_1r_cap_col.base.spice",

	"sram_dff/sram_dff.lvs.calibre.sp":                             "openram_sram_dff/sky130_fd_bd_sram__openram_sram_dff.lvs.calibre.spice",
	"sram_dff/sram_dff.lvs.sp":                                     "openram_sram_dff/sky130_fd_bd_sram__openram_sram_dff.lvs.spice",
	"sram_dff/sram_dff.sp":                                         "openram_sram_dff/sky130_fd_bd_sram__openram_sram_dff.base.spice",

	"sram_dummy_cell_1rw_1r/dummy_cell_1rw_1r.lvs.calibre.sp":      "openram_cell_1rw_1r_dummy/sky130_fd_bd_sram__openram_cell_1rw_1r_dummy.lvs.calibre.spice",
	"sram_dummy_cell_1rw_1r/dummy_cell_1rw_1r.lvs.sp":              "openram_cell_1rw_1r_dummy/sky130_fd_bd_sram__openram_cell_1rw_1r_dummy.lvs.spice",
	"sram_dummy_cell_1rw_1r/dummy_cell_1rw_1r.sp":                  "openram_cell_1rw_1r_dummy/sky130_fd_bd_sram__openram_cell_1rw_1r_dummy.base.spice",

	"sram_dummy_cell_6t/dummy_cell_6t.lvs.calibre.sp":              "openram_cell_6t_dummy/sky130_fd_bd_sram__openram_cell_6t_dummy.lvs.calibre.spice",
	"sram_dummy_cell_6t/dummy_cell_6t.lvs.sp":                      "openram_cell_6t_dummy/sky130_fd_bd_sram__openram_cell_6t_dummy.lvs.spice",
	"sram_dummy_cell_6t/dummy_cell_6t.sp":                          "openram_cell_6t_dummy/sky130_fd_bd_sram__openram_cell_6t_dummy.base.spice",

	"sram_nand2_dec/nand2_dec.lvs.calibre.sp":                      "openram_nand2_dec/sky130_fd_bd_sram__openram_nand2_dec.lvs.calibre.spice",
	"sram_nand2_dec/nand2_dec.lvs.sp":                              "openram_nand2_dec/sky130_fd_bd_sram__openram_nand2_dec.lvs.spice",
	"sram_nand2_dec/nand2_dec.sp":                                  "openram_nand2_dec/sky130_fd_bd_sram__openram_nand2_dec.base.spice",

	"sram_nand3_dec/nand3_dec.lvs.calibre.sp":                      "openram_nand3_dec/sky130_fd_bd_sram__openram_nand3_dec.lvs.calibre.spice",
	"sram_nand3_dec/nand3_dec.lvs.sp":                              "openram_nand3_dec/sky130_fd_bd_sram__openram_nand3_dec.lvs.spice",
	"sram_nand3_dec/nand3_dec.sp":                                  "openram_nand3_dec/sky130_fd_bd_sram__openram_nand3_dec.base.spice",

	"sram_nand4_dec/nand4_dec.lvs.calibre.sp":                      "openram_nand4_dec/sky130_fd_bd_sram__openram_nand4_dec.lvs.calibre.spice",
	"sram_nand4_dec/nand4_dec.lvs.sp":                              "openram_nand4_dec/sky130_fd_bd_sram__openram_nand4_dec.lvs.spice",
	"sram_nand4_dec/nand4_dec.sp":                                  "openram_nand4_dec/sky130_fd_bd_sram__openram_nand4_dec.base.spice",

	"sram_replica_cell_1rw_1r/replica_cell_1rw_1r.lvs.calibre.sp":  "openram_cell_1rw_1r_replica/sky130_fd_bd_sram__openram_cell_1rw_1r_replica.lvs.calibre.spice",
	"sram_replica_cell_1rw_1r/replica_cell_1rw_1r.lvs.sp":          "openram_cell_1rw_1r_replica/sky130_fd_bd_sram__openram_cell_1rw_1r_replica.lvs.spice",
	"sram_replica_cell_1rw_1r/replica_cell_1rw_1r.sp":              "openram_cell_1rw_1r_replica/sky130_fd_bd_sram__openram_cell_1rw_1r_replica.base.spice",

	"sram_replica_cell_6t/replica_cell_6t.lvs.calibre.sp":          "openram_cell_6t_replica/sky130_fd_bd_sram__openram_cell_6t_replica.lvs.calibre.spice",
	"sram_replica_cell_6t/replica_cell_6t.lvs.sp":                  "openram_cell_6t_replica/sky130_fd_bd_sram__openram_cell_6t_replica.lvs.spice",
	"sram_replica_cell_6t/replica_cell_6t.sp":                      "openram_cell_6t_replica/sky130_fd_bd_sram__openram_cell_6t_replica.base.spice",

	"sram_row_cap_cell_1rw_1r/row_cap_cell_1rw_1r.lvs.calibre.sp":  "openram_cell_1rw_1r_cap_row/sky130_fd_bd_sram__openram_cell_1rw_1r_cap_row.lvs.calibre.spice",
	"sram_row_cap_cell_1rw_1r/row_cap_cell_1rw_1r.lvs.sp":          "openram_cell_1rw_1r_cap_row/sky130_fd_bd_sram__openram_cell_1rw_1r_cap_row.lvs.spice",
	"sram_row_cap_cell_1rw_1r/row_cap_cell_1rw_1r.sp":              "openram_cell_1rw_1r_cap_row/sky130_fd_bd_sram__openram_cell_1rw_1r_cap_row.base.spice",

	"sram_sense_amp/sense_amp.lvs.calibre.sp":                      "openram_sense_amp/sky130_fd_bd_sram__openram_sense_amp.lvs.calibre.spice",
	"sram_sense_amp/sense_amp.lvs.sp":                              "openram_sense_amp/sky130_fd_bd_sram__openram_sense_amp.lvs.spice",
	"sram_sense_amp/sense_amp.sp":                                  "openram_sense_amp/sky130_fd_bd_sram__openram_sense_amp.base.spice",

	"sram_write_driver/write_driver.lvs.calibre.sp":                "openram_write_driver/sky130_fd_bd_sram__openram_write_driver.lvs.calibre.spice",
	"sram_write_driver/write_driver.lvs.sp":                        "openram_write_driver/sky130_fd_bd_sram__openram_write_driver.lvs.spice",
	"sram_write_driver/write_driver.sp":                            "openram_write_driver/sky130_fd_bd_sram__openram_write_driver.base.spice",
}

_, src_dir, dst_dir = sys.argv

for src, dst in FILE_MAP.items():
    s = os.path.join(src_dir, src)
    d = os.path.join(dst_dir, dst)
    with open(s, "r") as f:
        data = f.read()

    sdir, sfile = src.split('/', 1)
    sbase, sext = sfile.split('.', 1)

    ddir, dfile = dst.split('/', 1)
    dbase, dext = dfile.split('.', 1)

    data = data.replace(sbase, dbase)
    data = change_names("sky130_fd_bd_sram", data)

    with open(d, "w") as f:
        f.write(header)
        f.write(data)

    print("Created", s, "from", d)

# "libraries/sky130_fd_bd_sram/v0.0.0/cells"
