def PickView(self,*v): if (self.mInPickLibrary): return if (self.mInPickCell): return ns=openaccess22.oaNativeNS() libtext=self.mLibrary.get() libName=openaccess22.oaScalarName(ns,libtext) lib=OpenLibrary(libtext) if (lib==None): return cellName=openaccess22.oaScalarName(ns,self.mCell.get()) cell=openaccess22.oaCell.static_find(lib,cellName) if (cell==None): return viewName=openaccess22.oaScalarName(ns,self.mView.get()) design=openaccess22.oaDesign.static_open(libName,cellName,viewName,'r') if (design==None): return self.mInView=1 self.EmptyModule() self.mModuleNames.append(' -Design-') self.mModuleNames.append(' -TopBlock-') self.mModuleNames.append(' -TopModule-') self.mModuleNames.append(' -TopOccurrence-') s=openaccess22.oaString() for mod in design.getModulesIter(): mod.getName(ns,s) self.mModuleNames.append(str(s)) self.mModule.setvalues(self.mModuleNames) design.close() self.mInView=0
def OpenDesign(self, data): ns = openaccess22.oaNativeNS() try: self.mData = None lib = OpenLibrary(data[0]) libName = openaccess22.oaScalarName(ns, data[0]) cellName = openaccess22.oaScalarName(ns, data[1]) viewName = openaccess22.oaScalarName(ns, data[2]) design = openaccess22.oaDesign.static_open(libName, cellName, viewName, "r") if design: if data[3] == " -Design-": self.mDesign = design elif data[3] == " -TopBlock-": self.mDesign = design.getTopBlock() elif data[3] == " -TopModule-": self.mDesign = design.getTopModule() elif data[3] == " -TopOccurrence-": self.mDesign = design.getTopOccurrence() else: modName = openaccess22.oaScalarName(ns, data[3]) self.mDesign = openaccess22.oaModule.static_find(design, modName) # self.mCloseFun=design.close self.mData = self.mDesign except: traceback.print_exc()
def OpenDesign(self,data): ns=openaccess22.oaNativeNS() try: self.mData=None lib=OpenLibrary(data[0]) libName=openaccess22.oaScalarName(ns,data[0]) cellName=openaccess22.oaScalarName(ns,data[1]) viewName=openaccess22.oaScalarName(ns,data[2]) design=openaccess22.oaDesign.static_open(libName,cellName,viewName,'r') if (design): if (data[3]==' -Design-'): self.mDesign=design elif (data[3]==' -TopBlock-'): self.mDesign=design.getTopBlock() elif (data[3]==' -TopModule-'): self.mDesign=design.getTopModule() elif (data[3]==' -TopOccurrence-'): self.mDesign=design.getTopOccurrence() else: modName=openaccess22.oaScalarName(ns,data[3]) self.mDesign=openaccess22.oaModule.static_find(design,modName) #self.mCloseFun=design.close self.mData=self.mDesign except: traceback.print_exc()
def OpenLibrary(libname): ns = openaccess22.oaNativeNS() slibname = openaccess22.oaScalarName(ns, libname) # set mode to apped oas = openaccess22.oaString("lib.defs") liblist = openaccess22.oaLibDefList.static_get(oas, "r") found = 0 # We only check top level members for the entry for libdefmem in liblist.getMembersIter(): if libdefmem.getType().oaTypeEnum() != openaccess22.oacLibDefType: continue sname = openaccess22.oaScalarName() libdefmem.getLibName(sname) sname.get(ns, oas) name = str(oas) if name == libname: ostr = openaccess22.oaString() libdefmem.getLibPath(ostr) libpath = str(ostr) found = 1 break liblist.destroy() if not found: return None lib = openaccess22.oaLib.static_find(slibname) if not lib: lib = openaccess22.oaLib.static_open(slibname, libpath) access = openaccess22.oaLibAccessLevelEnum(openaccess22.oacReadLibAccessLevel) access = openaccess22.oaLibAccess(access) lib.getAccess(access) return lib
def PickView(self, *v): if self.mInPickLibrary: return if self.mInPickCell: return ns = openaccess22.oaNativeNS() libtext = self.mLibrary.get() libName = openaccess22.oaScalarName(ns, libtext) lib = OpenLibrary(libtext) if lib == None: return cellName = openaccess22.oaScalarName(ns, self.mCell.get()) cell = openaccess22.oaCell.static_find(lib, cellName) if cell == None: return viewName = openaccess22.oaScalarName(ns, self.mView.get()) design = openaccess22.oaDesign.static_open(libName, cellName, viewName, "r") if design == None: return self.mInView = 1 self.EmptyModule() self.mModuleNames.append(" -Design-") self.mModuleNames.append(" -TopBlock-") self.mModuleNames.append(" -TopModule-") self.mModuleNames.append(" -TopOccurrence-") s = openaccess22.oaString() for mod in design.getModulesIter(): mod.getName(ns, s) self.mModuleNames.append(str(s)) self.mModule.setvalues(self.mModuleNames) design.close() self.mInView = 0
def OpenLibrary(libname): ns=openaccess22.oaNativeNS() slibname=openaccess22.oaScalarName(ns,libname) # set mode to apped oas=openaccess22.oaString("lib.defs") liblist=openaccess22.oaLibDefList.static_get(oas,'r') found=0 # We only check top level members for the entry for libdefmem in liblist.getMembersIter(): if (libdefmem.getType().oaTypeEnum()!=openaccess22.oacLibDefType): continue sname=openaccess22.oaScalarName() libdefmem.getLibName(sname) sname.get(ns,oas) name=str(oas) if (name==libname): ostr=openaccess22.oaString() libdefmem.getLibPath(ostr) libpath=str(ostr) found=1 break liblist.destroy() if (not found): return None lib=openaccess22.oaLib.static_find(slibname) if (not lib): lib=openaccess22.oaLib.static_open(slibname,libpath) access=openaccess22.oaLibAccessLevelEnum(openaccess22.oacReadLibAccessLevel) access=openaccess22.oaLibAccess(access) lib.getAccess(access) return lib
def trace_topocc_list(self, cmd, names): data = self.validate(cmd, names) if len(data) == 3: ns = openaccess22.oaNativeNS() libName = openaccess22.oaScalarName(ns, data[0]) cellName = openaccess22.oaScalarName(ns, data[1]) viewName = openaccess22.oaScalarName(ns, data[2]) design = openaccess22.oaDesign.static_open(libName, cellName, viewName, "r") if design: self.mDesign = design.getTopOccurrence() if self.mFirstObj == None: self.mFirstObj = self.mDesign
def trace_designmodule_list(self, cmd, names): data = self.validate(cmd, names) if len(data) == 4: ns = openaccess22.oaNativeNS() libName = openaccess22.oaScalarName(ns, data[0]) cellName = openaccess22.oaScalarName(ns, data[1]) viewName = openaccess22.oaScalarName(ns, data[2]) modName = openaccess22.oaScalarName(ns, data[3]) design = openaccess22.oaDesign.static_open(libName, cellName, viewName, "r") if design: module = openaccess22.oaModule.static_find(design, modName) if module: self.mDesign = module if self.mFirstObj == None: self.mFirstObj = self.mDesign
def PickCell(self, *v): if self.mInPickLibrary: return ns = openaccess22.oaNativeNS() try: s = self.mLibrary.get() except: return lib = OpenLibrary(s) if lib == None: return try: s = openaccess22.oaScalarName(ns, self.mCell.get()) except: return cell = openaccess22.oaCell.static_find(lib, s) if cell == None: return self.mInPickCell = 1 self.EmptyView() s = openaccess22.oaString() for cv in cell.getCellViewsIter(): view = cv.getView() view.getName(ns, s) self.mViewNames.append(str(s)) self.mView.setvalues(self.mViewNames) self.mInPickCell = 0
def trace_module_list(self, cmd, names): data = self.validate(cmd, names) if len(data) == 1: ns = openaccess22.oaNativeNS() modName = openaccess22.oaScalarName(ns, data[0]) module = openaccess22.oaModule.static_find(self.mDesign.getDesign(), modName) if module: self.mDesign = module if self.mFirstObj == None: self.mFirstObj = self.mDesign
def GetLibraryList(): ns=openaccess22.oaNativeNS() # set mode to apped oas=openaccess22.oaString("lib.defs") liblist=openaccess22.oaLibDefList.static_get(oas,'r') result=[] # We only check top level members for the entry for libdefmem in liblist.getMembersIter(): if (libdefmem.getType().oaTypeEnum()!=openaccess22.oacLibDefType): continue sname=openaccess22.oaScalarName() libdefmem.getLibName(sname) sname.get(ns,oas) name=str(oas) result.append(name) return result
def GetLibraryList(): ns = openaccess22.oaNativeNS() # set mode to apped oas = openaccess22.oaString("lib.defs") liblist = openaccess22.oaLibDefList.static_get(oas, "r") result = [] # We only check top level members for the entry for libdefmem in liblist.getMembersIter(): if libdefmem.getType().oaTypeEnum() != openaccess22.oacLibDefType: continue sname = openaccess22.oaScalarName() libdefmem.getLibName(sname) sname.get(ns, oas) name = str(oas) result.append(name) return result
def trace_net_list(self, cmd, names): list = self.validate(cmd, names) for netname in list: name = openaccess22.oaName(self.mNS, netname) net = None typname = self.mDesign.getType().oaTypeEnum() if typname == openaccess22.oacBlockType: net = openaccess22.oaNet.static_find(self.mDesign, name) if typname == openaccess22.oacModuleType: net = openaccess22.oaModNet.static_find(self.mDesign, name) if typname == openaccess22.oacOccurrenceType: net = openaccess22.oaOccNet.static_find(self.mDesign.getTopOccurrence(), name) if net == None: if name.getType().oaNameTypeEnum() == openaccess22.oacVectorBitNameType: sname = openaccess22.oaScalarName() vname = name.getVectorBit() vname.getBaseName(sname) if typname == openaccess22.oacBlockType: net = openaccess22.oaBusNetBit.static_find(self.mDesign, sname, vname.getIndex()) if typname == openaccess22.oacModuleType: net = openaccess22.oaModBusNetBit.static_find(self.mDesign, sname, vname.getIndex()) if typname == openaccess22.oacOccurrenceType: net = openaccess22.oaOccBusNetBit.static_find( self.mDesign.getTopOccurrence(), sname, vname.getIndex() ) if net == None: print "Can't Find Net: ", netname continue for snet in net.getSingleBitMembersIter(): net = snet.getPreferredEquivalent() fo = self.trace_net_fo(net) repname = openaccess22.oaString() if net.isOccObject(): net.getPathName(self.mNS, repname) else: net.getName(self.mNS, repname) rep = "Net: " + str(repname) + " { fanout=" + str(fo) + " }" self.mReport.append(rep) if self.mFirstObj == None: self.mFirstObj = net self.trace_net(net, self.mDir, 1) self.log_report(cmd, names)
def PickCell(self,*v): if (self.mInPickLibrary): return ns=openaccess22.oaNativeNS() try: s=self.mLibrary.get() except: return lib=OpenLibrary(s) if (lib==None): return try: s=openaccess22.oaScalarName(ns,self.mCell.get()) except: return cell=openaccess22.oaCell.static_find(lib,s) if (cell==None): return self.mInPickCell=1 self.EmptyView() s=openaccess22.oaString() for cv in cell.getCellViewsIter(): view=cv.getView() view.getName(ns,s) self.mViewNames.append(str(s)) self.mView.setvalues(self.mViewNames) self.mInPickCell=0
def ProcessStdArgs(self): if len(self.mArgs) < 1: return None if self.mArgs[0] == "-topblock": if len(self.mArgs) < 4: print "topblock requires: -topblock libName cellName viewName" return (data, commands) ns = openaccess22.oaNativeNS() try: lib = OpenLibrary(self.mArgs[1]) libName = openaccess22.oaScalarName(ns, self.mArgs[1]) cellName = openaccess22.oaScalarName(ns, self.mArgs[2]) viewName = openaccess22.oaScalarName(ns, self.mArgs[3]) design = openaccess22.oaDesign.static_open(libName, cellName, viewName, "r") if design != None: # self.mCloseFun=design.close self.mDesign = design.getTopBlock() self.mData = self.mDesign return 1 except: traceback.print_exc() if self.mArgs[0] == "-topmodule": if len(self.mArgs) < 4: print "topmodule requires: -topmodule libName cellName viewName" return (data, commands) ns = openaccess22.oaNativeNS() try: lib = OpenLibrary(self.mArgs[1]) libName = openaccess22.oaScalarName(ns, self.mArgs[1]) cellName = openaccess22.oaScalarName(ns, self.mArgs[2]) viewName = openaccess22.oaScalarName(ns, self.mArgs[3]) self.mDesign = openaccess22.oaDesign.static_open(libName, cellName, viewName, "r") design = openaccess22.oaDesign.static_open(libName, cellName, viewName, "r") if design != None: # self.mCloseFun=design.close self.mDesign = self.mDesign.getTopModule() self.mData = self.mDesign return 1 except: traceback.print_exc() if self.mArgs[0] == "-topocc": if len(self.mArgs) < 4: print "topocc requires: -topocc libName cellName viewName" return (data, commands) ns = openaccess22.oaNativeNS() try: lib = OpenLibrary(self.mArgs[1]) libName = openaccess22.oaScalarName(ns, self.mArgs[1]) cellName = openaccess22.oaScalarName(ns, self.mArgs[2]) viewName = openaccess22.oaScalarName(ns, self.mArgs[3]) self.mDesign = openaccess22.oaDesign.static_open(libName, cellName, viewName, "r") design = openaccess22.oaDesign.static_open(libName, cellName, viewName, "r") if design != None: # self.mCloseFun=design.close self.mDesign = self.mDesign.getTopOccurrence() self.mData = self.mDesign return 1 except: traceback.print_exc() if self.mArgs[0] == "-module": if len(self.mArgs) < 5: print "module requires: -module libName cellName viewName modName" return (data, commands) ns = openaccess22.oaNativeNS() try: self.mData = None lib = OpenLibrary(self.mArgs[1]) libName = openaccess22.oaScalarName(ns, self.mArgs[1]) cellName = openaccess22.oaScalarName(ns, self.mArgs[2]) viewName = openaccess22.oaScalarName(ns, self.mArgs[3]) modName = openaccess22.oaScalarName(ns, self.mArgs[4]) design = openaccess22.oaDesign.static_open(libName, cellName, viewName, "r") if design != None: module = openaccess22.oaModule.static_find(design, modName) if module: # self.mCloseFun=design.close self.mDesign = module self.mData = self.mDesign return 1 except: traceback.print_exc() elif self.mArgs[0] == "-pick": self.mPickMode = 1 return 1 return None
def trace_term_list(self, cmd, names): list = self.validate(cmd, names) for termname in list: name = openaccess22.oaName(self.mNS, termname) term = None typname = self.mDesign.getType().oaTypeEnum() if typname == openaccess22.oacBlockType: term = openaccess22.oaTerm.static_find(self.mDesign, name) if typname == openaccess22.oacModuleType: term = openaccess22.oaModTerm.static_find(self.mDesign, name) if typname == openaccess22.oacOccurrenceType: term = openaccess22.oaOccTerm.static_find(self.mDesign, name) if term == None: if name.getType().oaNameTypeEnum() == openaccess22.oacVectorBitNameType: sname = openaccess22.oaScalarName() vname = name.getVectorBit() vname.getBaseName(sname) if typname == openaccess22.oacBlockType: term = openaccess22.oaBusTermBit.static_find(self.mDesign, sname, vname.getIndex()) if typname == openaccess22.oacModuleType: term = openaccess22.oaModBusTermBit.static_find(self.mDesign, sname, vname.getIndex()) if typname == openaccess22.oacOccurrenceType: term = openaccess22.oaOccBusTermBit.static_find(self.mDesign, sname, vname.getIndex()) if term == None: print "Can't Find Term: ", termname continue termname = openaccess22.oaString() term.getName(self.mNS, termname) termname = str(termname) rep = "Term: " + termname + " (" termtype = term.getTermType().oaTermTypeEnum() if termtype == "oacInputTermType": rep = rep + "I" elif termtype == "oacOutputTermType": rep = rep + "O" elif termtype == "oacInputOutputTermType": rep = rep + "B" else: rep = rep + "X" rep = rep + ")" if self.mFirstObj == None: self.mFirstObj = term self.mReport.append(rep) net = term.getNet() netname = openaccess22.oaString() if net.isOccObject(): net.getPathName(self.mNS, netname) else: net.getName(self.mNS, netname) netname = str(netname) rep = "Net: " + netname self.mReport.append(rep) # self.trace_net(net,self.mDir,1) for snet in net.getSingleBitMembersIter(): net = snet.getPreferredEquivalent() fo = self.trace_net_fo(net) repname = openaccess22.oaString() if net.isOccObject(): net.getPathName(self.mNS, repname) else: net.getName(self.mNS, repname) rep = "Net: " + str(repname) + " { fanout=" + str(fo) + " }" self.mReport.append(rep) if self.mFirstObj == None: self.mFirstObj = net self.trace_net(net, self.mDir, 1) self.log_report(cmd, names)
def ProcessStdArgs(self): if (len(self.mArgs)<1): return None if (self.mArgs[0]=='-topblock'): if (len(self.mArgs)<4): print "topblock requires: -topblock libName cellName viewName" return (data,commands) ns=openaccess22.oaNativeNS() try: lib=OpenLibrary(self.mArgs[1]) libName=openaccess22.oaScalarName(ns,self.mArgs[1]) cellName=openaccess22.oaScalarName(ns,self.mArgs[2]) viewName=openaccess22.oaScalarName(ns,self.mArgs[3]) design=openaccess22.oaDesign.static_open(libName,cellName,viewName,'r') if (design!=None): #self.mCloseFun=design.close self.mDesign=design.getTopBlock() self.mData=self.mDesign return 1 except: traceback.print_exc() if (self.mArgs[0]=='-topmodule'): if (len(self.mArgs)<4): print "topmodule requires: -topmodule libName cellName viewName" return (data,commands) ns=openaccess22.oaNativeNS() try: lib=OpenLibrary(self.mArgs[1]) libName=openaccess22.oaScalarName(ns,self.mArgs[1]) cellName=openaccess22.oaScalarName(ns,self.mArgs[2]) viewName=openaccess22.oaScalarName(ns,self.mArgs[3]) self.mDesign=openaccess22.oaDesign.static_open(libName,cellName,viewName,'r') design=openaccess22.oaDesign.static_open(libName,cellName,viewName,'r') if (design!=None): #self.mCloseFun=design.close self.mDesign=self.mDesign.getTopModule() self.mData=self.mDesign return 1 except: traceback.print_exc() if (self.mArgs[0]=='-topocc'): if (len(self.mArgs)<4): print "topocc requires: -topocc libName cellName viewName" return (data,commands) ns=openaccess22.oaNativeNS() try: lib=OpenLibrary(self.mArgs[1]) libName=openaccess22.oaScalarName(ns,self.mArgs[1]) cellName=openaccess22.oaScalarName(ns,self.mArgs[2]) viewName=openaccess22.oaScalarName(ns,self.mArgs[3]) self.mDesign=openaccess22.oaDesign.static_open(libName,cellName,viewName,'r') design=openaccess22.oaDesign.static_open(libName,cellName,viewName,'r') if (design!=None): #self.mCloseFun=design.close self.mDesign=self.mDesign.getTopOccurrence() self.mData=self.mDesign return 1 except: traceback.print_exc() if (self.mArgs[0]=='-module'): if (len(self.mArgs)<5): print "module requires: -module libName cellName viewName modName" return (data,commands) ns=openaccess22.oaNativeNS() try: self.mData=None lib=OpenLibrary(self.mArgs[1]) libName=openaccess22.oaScalarName(ns,self.mArgs[1]) cellName=openaccess22.oaScalarName(ns,self.mArgs[2]) viewName=openaccess22.oaScalarName(ns,self.mArgs[3]) modName=openaccess22.oaScalarName(ns,self.mArgs[4]) design=openaccess22.oaDesign.static_open(libName,cellName,viewName,'r') if (design!=None): module=openaccess22.oaModule.static_find(design,modName) if (module): #self.mCloseFun=design.close self.mDesign=module self.mData=self.mDesign return 1 except: traceback.print_exc() elif (self.mArgs[0]=="-pick"): self.mPickMode=1 return 1 return None