mirror of https://github.com/VLSIDA/OpenRAM.git
Make DRC/LVS scripts use relative paths
This commit is contained in:
parent
d19e4edb98
commit
38bf12771b
|
|
@ -21,8 +21,8 @@ class openram_test(unittest.TestCase):
|
||||||
|
|
||||||
self.reset()
|
self.reset()
|
||||||
|
|
||||||
tempgds = "{0}{1}.gds".format(OPTS.openram_temp, w.name)
|
tempgds = "{}.gds".format(w.name)
|
||||||
w.gds_write(tempgds)
|
w.gds_write("{0}{1}".format(OPTS.openram_temp, tempgds))
|
||||||
import verify
|
import verify
|
||||||
|
|
||||||
result=verify.run_drc(w.name, tempgds, None)
|
result=verify.run_drc(w.name, tempgds, None)
|
||||||
|
|
@ -36,13 +36,13 @@ class openram_test(unittest.TestCase):
|
||||||
|
|
||||||
self.reset()
|
self.reset()
|
||||||
|
|
||||||
tempspice = "{0}{1}.sp".format(OPTS.openram_temp, a.name)
|
tempspice = "{}.sp".format(a.name)
|
||||||
tempgds = "{0}{1}.gds".format(OPTS.openram_temp, a.name)
|
tempgds = "{}.gds".format(a.name)
|
||||||
|
|
||||||
a.lvs_write(tempspice)
|
a.lvs_write("{0}{1}".format(OPTS.openram_temp, tempspice))
|
||||||
# cannot write gds in netlist_only mode
|
# cannot write gds in netlist_only mode
|
||||||
if not OPTS.netlist_only:
|
if not OPTS.netlist_only:
|
||||||
a.gds_write(tempgds)
|
a.gds_write("{0}{1}".format(OPTS.openram_temp, tempgds))
|
||||||
|
|
||||||
import verify
|
import verify
|
||||||
# Run both DRC and LVS even if DRC might fail
|
# Run both DRC and LVS even if DRC might fail
|
||||||
|
|
@ -80,15 +80,13 @@ class openram_test(unittest.TestCase):
|
||||||
self.cleanup()
|
self.cleanup()
|
||||||
|
|
||||||
def run_pex(self, a, output=None):
|
def run_pex(self, a, output=None):
|
||||||
if output == None:
|
tempspice = "{}.sp".format(a.name)
|
||||||
output = OPTS.openram_temp + a.name + ".pex.netlist"
|
tempgds = "{}.gds".format(a.name)
|
||||||
tempspice = "{0}{1}.sp".format(OPTS.openram_temp, a.name)
|
|
||||||
tempgds = "{0}{1}.gds".format(OPTS.openram_temp, a.name)
|
|
||||||
|
|
||||||
a.gds_write(tempgds)
|
a.gds_write("{0}{1}".format(OPTS.openram_temp, tempgds))
|
||||||
|
|
||||||
import verify
|
import verify
|
||||||
result=verify.run_pex(a.name, tempgds, tempspice, output=output, final_verification=False)
|
result=verify.run_pex(a.name, tempgds, tempspice, final_verification=False)
|
||||||
if result != 0:
|
if result != 0:
|
||||||
self.fail("PEX ERROR: {}".format(a.name))
|
self.fail("PEX ERROR: {}".format(a.name))
|
||||||
return output
|
return output
|
||||||
|
|
|
||||||
|
|
@ -63,8 +63,8 @@ def write_drc_script(cell_name, gds_name, extract, final_verification=False, out
|
||||||
run_file = output_path + "run_drc.sh"
|
run_file = output_path + "run_drc.sh"
|
||||||
f = open(run_file, "w")
|
f = open(run_file, "w")
|
||||||
f.write("#!/bin/sh\n")
|
f.write("#!/bin/sh\n")
|
||||||
cmd = "{0} -gui -drc {1}drc_runset -batch".format(OPTS.drc_exe[1],
|
cmd = "{0} -gui -drc drc_runset -batch".format(OPTS.drc_exe[1])
|
||||||
output_path)
|
|
||||||
f.write(cmd)
|
f.write(cmd)
|
||||||
f.write("\n")
|
f.write("\n")
|
||||||
f.close()
|
f.close()
|
||||||
|
|
@ -125,8 +125,8 @@ def write_lvs_script(cell_name, gds_name, sp_name, final_verification=False, out
|
||||||
run_file = output_path + "run_lvs.sh"
|
run_file = output_path + "run_lvs.sh"
|
||||||
f = open(run_file, "w")
|
f = open(run_file, "w")
|
||||||
f.write("#!/bin/sh\n")
|
f.write("#!/bin/sh\n")
|
||||||
cmd = "{0} -gui -lvs {1}lvs_runset -batch".format(OPTS.lvs_exe[1],
|
cmd = "{0} -gui -lvs lvs_runset -batch".format(OPTS.lvs_exe[1])
|
||||||
output_path)
|
|
||||||
f.write(cmd)
|
f.write(cmd)
|
||||||
f.write("\n")
|
f.write("\n")
|
||||||
f.close()
|
f.close()
|
||||||
|
|
@ -178,8 +178,8 @@ def write_pex_script(cell_name, extract, output, final_verification=False, outpu
|
||||||
run_file = output_path + "run_pex.sh"
|
run_file = output_path + "run_pex.sh"
|
||||||
f = open(run_file, "w")
|
f = open(run_file, "w")
|
||||||
f.write("#!/bin/sh\n")
|
f.write("#!/bin/sh\n")
|
||||||
cmd = "{0} -gui -pex {1}pex_runset -batch".format(OPTS.pex_exe[1],
|
cmd = "{0} -gui -pex pex_runset -batch".format(OPTS.pex_exe[1])
|
||||||
OPTS.openram_temp)
|
|
||||||
f.write(cmd)
|
f.write(cmd)
|
||||||
f.write("\n")
|
f.write("\n")
|
||||||
f.close()
|
f.close()
|
||||||
|
|
@ -204,13 +204,10 @@ def run_drc(cell_name, gds_name, sp_name, extract=False, final_verification=Fals
|
||||||
else:
|
else:
|
||||||
# Copy file to local dir if it isn't already
|
# Copy file to local dir if it isn't already
|
||||||
if not os.path.isfile(OPTS.openram_temp + os.path.basename(gds_name)):
|
if not os.path.isfile(OPTS.openram_temp + os.path.basename(gds_name)):
|
||||||
shutil.copy(gds_name, OPTS.openram_temp)
|
shutil.copy(gds_name, OPTS.openram_temp + os.path.basename(gds_name))
|
||||||
|
|
||||||
drc_runset = write_drc_script(cell_name, gds_name, extract, final_verification, OPTS.openram_temp)
|
drc_runset = write_drc_script(cell_name, gds_name, extract, final_verification, OPTS.openram_temp)
|
||||||
|
|
||||||
if not os.path.isfile(OPTS.openram_temp + os.path.basename(gds_name)):
|
|
||||||
shutil.copy(gds_name, OPTS.openram_temp + os.path.basename(gds_name))
|
|
||||||
|
|
||||||
(outfile, errfile, resultsfile) = run_script(cell_name, "drc")
|
(outfile, errfile, resultsfile) = run_script(cell_name, "drc")
|
||||||
|
|
||||||
# check the result for these lines in the summary:
|
# check the result for these lines in the summary:
|
||||||
|
|
|
||||||
|
|
@ -153,10 +153,10 @@ def write_drc_script(cell_name, gds_name, extract, final_verification, output_pa
|
||||||
from tech import blackbox_cells
|
from tech import blackbox_cells
|
||||||
except ImportError:
|
except ImportError:
|
||||||
blackbox_cells = []
|
blackbox_cells = []
|
||||||
for cell_name in blackbox_cells:
|
for blackbox_cell_name in blackbox_cells:
|
||||||
mag_file = OPTS.openram_tech + "maglef_lib/" + cell_name + ".mag"
|
mag_file = OPTS.openram_tech + "maglef_lib/" + blackbox_cell_name + ".mag"
|
||||||
debug.check(os.path.isfile(mag_file), "Could not find blackbox cell {}".format(mag_file))
|
debug.check(os.path.isfile(mag_file), "Could not find blackbox cell {}".format(mag_file))
|
||||||
f.write('cp {0} {1}\n'.format(mag_file, OPTS.openram_temp))
|
f.write('cp {0} .\n'.format(mag_file))
|
||||||
|
|
||||||
f.write('echo "$(date): Starting DRC using Magic {}"\n'.format(OPTS.drc_exe[1]))
|
f.write('echo "$(date): Starting DRC using Magic {}"\n'.format(OPTS.drc_exe[1]))
|
||||||
f.write('\n')
|
f.write('\n')
|
||||||
|
|
@ -164,10 +164,10 @@ def write_drc_script(cell_name, gds_name, extract, final_verification, output_pa
|
||||||
f.write("load {} -dereference\n".format(cell_name))
|
f.write("load {} -dereference\n".format(cell_name))
|
||||||
f.write('puts "Finished loading cell {}"\n'.format(cell_name))
|
f.write('puts "Finished loading cell {}"\n'.format(cell_name))
|
||||||
f.write("cellname delete \\(UNNAMED\\)\n")
|
f.write("cellname delete \\(UNNAMED\\)\n")
|
||||||
f.write("writeall force\n")
|
|
||||||
f.write("select top cell\n")
|
f.write("select top cell\n")
|
||||||
f.write("expand\n")
|
f.write("expand\n")
|
||||||
f.write('puts "Finished expanding"\n')
|
f.write('puts "Finished expanding"\n')
|
||||||
|
f.write("drc euclidean on\n")
|
||||||
f.write("drc check\n")
|
f.write("drc check\n")
|
||||||
f.write('puts "Finished drc check"\n')
|
f.write('puts "Finished drc check"\n')
|
||||||
f.write("drc catchup\n")
|
f.write("drc catchup\n")
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue