def substep3(depth="", diedepth="", **args): sshaft.beginstep('substep3', args) depth = depth + ":substep3" if (depth == diedepth): sshaft.dief("ERROR: Error depth reached: " + diedepth) return sshaft.endstep()
def substep3(depth="", diedepth="", **args): sshaft.beginstep('substep3',args) depth=depth+":substep3" if (depth==diedepth): sshaft.dief("ERROR: Error depth reached: "+diedepth) return sshaft.endstep()
def substep1(depth="", diedepth="", **args): sshaft.beginstep('substep1', args) depth = depth + ":substep1" if (depth == diedepth): sshaft.dief("ERROR: Error depth reached: " + diedepth) sshaft.substep(cmd=[substep2, [], {'depth': depth, 'diedepth': diedepth}]) return sshaft.endstep()
def substep1(depth="", diedepth="", **args): sshaft.beginstep('substep1',args) depth=depth+":substep1" if (depth==diedepth): sshaft.dief("ERROR: Error depth reached: "+diedepth) sshaft.substep(cmd=[substep2,[],{'depth':depth, 'diedepth':diedepth }]) return sshaft.endstep()
def substep2(depth="", diedepth="", **args): sshaft.beginstep('substep2', args) depth = depth + ":substep2" if (depth == diedepth): sshaft.dief("ERROR: Error depth reached: " + diedepth) cmd = "testsshaft.tcl" cmd = cmd + " -depth " + depth cmd = cmd + " -return" if (diedepth): cmd = cmd + " -die " + diedepth sshaft.substep(mode='unix_step', cmd=cmd) for app in string.split(sshaft.gettechvar('Sshaft::Apps::AppList')): sshaft.dir_init('run/' + app, app) cmd = sshaft.gettechvar('Sshaft::Apps::' + app + '::TestCmd') sshaft.substep(mode=app + '_step', cmd=cmd, rundir='run/' + app) return sshaft.endstep()
def substep2(depth="", diedepth="", **args): sshaft.beginstep('substep2',args) depth=depth+":substep2" if (depth==diedepth): sshaft.dief("ERROR: Error depth reached: "+diedepth) cmd="testsshaft.tcl" cmd=cmd+" -depth "+depth cmd=cmd+" -return" if (diedepth): cmd=cmd+" -die "+diedepth sshaft.substep(mode='unix_step',cmd=cmd) for app in string.split(sshaft.gettechvar('Sshaft::Apps::AppList')): sshaft.dir_init('run/'+app,app) cmd=sshaft.gettechvar('Sshaft::Apps::'+app+'::TestCmd') sshaft.substep(mode=app+'_step',cmd=cmd,rundir='run/'+app) return sshaft.endstep()
+ m.group(1) + " in section " + section + " of file FreePDK45.tf is not in master layer list", ) continue m = re.search(r"^\s*\(\s*\w+\s+(\w+)\s+(\w+)", line) if m: if m.group(1) not in layers: sshaft.logf( "LOG_WARN", "WARNING: Layer " + m.group(1) + " in section " + section + " of file FreePDK45.tf is not in master layer list", ) if m.group(2) not in layers: sshaft.logf( "LOG_WARN", "WARNING: Layer " + m.group(2) + " in section " + section + " of file FreePDK45.tf is not in master layer list", ) f.close() sshaft.endstep()
libname = 'NCSU_TechLib_FreePDK45' pycellname = os.environ['PDK_DIR'] + '/ncsu_basekit/lib/' + libname path = os.environ['PDK_DIR'] + '/ncsu_basekit/lib/' + libname if os.access(path, os.F_OK): os.system('rm -rf ' + path) os.system('rm -rf ' + pycellname) #cmd='cngenlib -c --techfile '+filename+' tech:only '+libname+' '+path+' >& cngenlib.log' #cmd2='cngenlib --techlib '+libname+' pkg:pycells Xtors '+pycellname+' >& cngenlib2.log' cmd = 'cngenlib -c --techfile ' + filename + ' pkg:pycells ' + libname + ' ' + path + ' >& cngenlib.log' sshaft.substep(mode='unix_prog', cmd=cmd, env='cadence') #sshaft.substep(mode='unix_prog', cmd=cmd2, env='pycell') # log='cngenlib.log', logcheck=r"Error", checkmode='fail') sshaft.dir_init('run/cds', 'cds') sshaft.substep(mode='cds_step', cmd='pdkAppendTechfile()', rundir='run/cds') #inpath=os.environ['PDK_DIR']+'/techfile' #outpath=path #os.environ['PDK_DIR']+'/techfile/assura' #sshaft.verify_dir(outpath) #cmd='genDRC.py -in '+inpath+' -out '+outpath+' >& genDRC.log' #sshaft.substep(mode='unix_prog',cmd=cmd) #calibrefile = os.environ['PDK_DIR']+'/ncsu_basekit/techfile/calibre/calibreDRC.rul' #cmd = 'cp '+calibrefile+' '+path #sshaft.substep(mode='unix_prog',cmd=cmd) viadir = os.environ['PDK_DIR'] + '/ncsu_basekit/techfile/customvia/*' cmd = 'cp -r ' + viadir + ' ' + path sshaft.substep(mode='unix_prog', cmd=cmd) sshaft.endstep()