| #!/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" |