Esempio n. 1
0
 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
Esempio n. 2
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()
Esempio n. 3
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()
Esempio n. 4
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
Esempio n. 5
0
    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
Esempio n. 6
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
Esempio n. 7
0
 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
Esempio n. 8
0
 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
Esempio n. 9
0
 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
Esempio n. 10
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
Esempio n. 11
0
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
Esempio n. 12
0
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
Esempio n. 13
0
    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)
Esempio n. 14
0
 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
Esempio n. 15
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
Esempio n. 16
0
    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)
Esempio n. 17
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