mirror of https://github.com/efabless/caravel.git
Changes to compositor.py to deal with compressed files.
- Uncompress caravel_core/caravan_core.mag if compressed. - Add mcw path to compose_final.tcl. - Return magic exit code.
This commit is contained in:
parent
ac6539c8b5
commit
9f0286ddeb
2
Makefile
2
Makefile
|
@ -674,7 +674,7 @@ final: check-env check-uid check-project unsplit unsplit-caravel
|
||||||
@echo "Final build completed." 2>&1 | tee -a ./signoff/build/final_build.out
|
@echo "Final build completed." 2>&1 | tee -a ./signoff/build/final_build.out
|
||||||
|
|
||||||
__final:
|
__final:
|
||||||
python3 $(CARAVEL_ROOT)/scripts/compositor.py $(USER_ID) $(PROJECT) $(shell pwd) $(CARAVEL_ROOT)/mag $(shell pwd)/gds -keep
|
python3 $(CARAVEL_ROOT)/scripts/compositor.py $(USER_ID) $(PROJECT) $(shell pwd) $(CARAVEL_ROOT)/mag $(shell pwd)/gds $(MCW_ROOT) -keep
|
||||||
#mv $(CARAVEL_ROOT)/mag/caravel_$(USER_ID).mag ./mag/
|
#mv $(CARAVEL_ROOT)/mag/caravel_$(USER_ID).mag ./mag/
|
||||||
@rm -rf ./mag/tmp
|
@rm -rf ./mag/tmp
|
||||||
|
|
||||||
|
|
|
@ -28,19 +28,17 @@ import subprocess
|
||||||
|
|
||||||
def usage():
|
def usage():
|
||||||
print("Usage:")
|
print("Usage:")
|
||||||
print("compositor.py <user_id_value> <project> <path_to_project> <path_to_mag_dir> <path_to_gds_dir [-keep]")
|
print("compositor.py <user_id_value> <project> <path_to_project> <path_to_mag_dir> <path_to_gds_dir> <path_to_mcw> [-keep]")
|
||||||
print("")
|
print("")
|
||||||
print("where:")
|
print("where:")
|
||||||
print(" <user_id_value> is a character string of eight hex digits, and")
|
print(" <user_id_value> is a character string of eight hex digits, and")
|
||||||
|
print(" <project> is a 'caravel' or 'caravan', and")
|
||||||
print(" <path_to_project> is the path to the project top level directory.")
|
print(" <path_to_project> is the path to the project top level directory.")
|
||||||
print(" <path_to_mag_dir> is the path to the mag directory.")
|
print(" <path_to_mag_dir> is the path to the mag directory.")
|
||||||
print(" <path_to_gds_dir> is the path to the gds directory.")
|
print(" <path_to_gds_dir> is the path to the gds directory.")
|
||||||
|
print(" <path_to_mcw> is the path to the management core wrapper directory.")
|
||||||
|
print("All arguments are required.")
|
||||||
print("")
|
print("")
|
||||||
print(" If <user_id_value> is not given, then it must exist in the info.yaml file.")
|
|
||||||
print(" If <path_to_project> is not given, then it is assumed to be the cwd.")
|
|
||||||
print(" If <path_to_mag_dir> is not given, then it is assumed to be the <path_to_project>/tmp.")
|
|
||||||
print(" If <path_to_gds_dir> is not given, then it is assumed to be the <path_to_project>/gds.")
|
|
||||||
print(" If '-keep' is specified, then keep the generation script.")
|
|
||||||
return 0
|
return 0
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
|
@ -57,7 +55,7 @@ if __name__ == '__main__':
|
||||||
else:
|
else:
|
||||||
arguments.append(option)
|
arguments.append(option)
|
||||||
|
|
||||||
if len(arguments) != 5:
|
if len(arguments) != 6:
|
||||||
print("Wrong number of arguments given to compositor.py.")
|
print("Wrong number of arguments given to compositor.py.")
|
||||||
usage()
|
usage()
|
||||||
sys.exit(0)
|
sys.exit(0)
|
||||||
|
@ -67,6 +65,7 @@ if __name__ == '__main__':
|
||||||
user_project_path = arguments[2]
|
user_project_path = arguments[2]
|
||||||
mag_dir_path = arguments[3]
|
mag_dir_path = arguments[3]
|
||||||
gds_dir_path = arguments[4]
|
gds_dir_path = arguments[4]
|
||||||
|
mcw_dir_path = arguments[5]
|
||||||
|
|
||||||
# if len(arguments) > 0:
|
# if len(arguments) > 0:
|
||||||
# user_id_value = arguments[0]
|
# user_id_value = arguments[0]
|
||||||
|
@ -166,6 +165,7 @@ if __name__ == '__main__':
|
||||||
print('drc off', file=ofile)
|
print('drc off', file=ofile)
|
||||||
print('crashbackups stop', file=ofile)
|
print('crashbackups stop', file=ofile)
|
||||||
print('locking disable', file=ofile)
|
print('locking disable', file=ofile)
|
||||||
|
print('addpath ' + mcw_dir_path + '/mag', file=ofile)
|
||||||
# Set the random seed from the project ID
|
# Set the random seed from the project ID
|
||||||
print('random seed ' + user_id_decimal, file=ofile)
|
print('random seed ' + user_id_decimal, file=ofile)
|
||||||
|
|
||||||
|
@ -219,6 +219,11 @@ if __name__ == '__main__':
|
||||||
# Abstract views are appropriate for final composition
|
# Abstract views are appropriate for final composition
|
||||||
myenv['MAGTYPE'] = 'maglef'
|
myenv['MAGTYPE'] = 'maglef'
|
||||||
|
|
||||||
|
if ( not os.path.isfile(magpath + "/" + project + "_core.mag") ):
|
||||||
|
if ( os.path.isfile(magpath + "/" + project + "_core.mag.gz") ):
|
||||||
|
print("Uncompressing " + project + "_core.mag")
|
||||||
|
subprocess.run(['gunzip', magpath + "/" + project + "_core.mag.gz"])
|
||||||
|
|
||||||
print('Building final GDS file ' + project_with_id + '.gds', flush=True)
|
print('Building final GDS file ' + project_with_id + '.gds', flush=True)
|
||||||
|
|
||||||
mproc = subprocess.run(['magic', '-dnull', '-noconsole',
|
mproc = subprocess.run(['magic', '-dnull', '-noconsole',
|
||||||
|
@ -250,6 +255,7 @@ if __name__ == '__main__':
|
||||||
print(line)
|
print(line)
|
||||||
if mproc.returncode != 0:
|
if mproc.returncode != 0:
|
||||||
print('ERROR: Magic exited with status ' + str(mproc.returncode))
|
print('ERROR: Magic exited with status ' + str(mproc.returncode))
|
||||||
|
exit(mproc.returncode)
|
||||||
|
|
||||||
if not keepmode:
|
if not keepmode:
|
||||||
os.remove(user_project_path + '/mag/compose_final.tcl')
|
os.remove(user_project_path + '/mag/compose_final.tcl')
|
||||||
|
|
Loading…
Reference in New Issue