def listComponents(self,libraryname=None): """ Return a list with all library components """ if libraryname==None: libraryname = self.getLibName() official_component_type = self.getOfficialLibraries() componentlist = [] if libraryname in official_component_type: componentlist = sy.listDirectory(settings.path+LIBRARYPATH+"/"+libraryname) elif libraryname in self.getPersonalLibName(): componentlist = sy.listDirectory(self.getPersonalLibPath(libraryname)) return componentlist
def listLibraries(self): """ Return a list of libraries availables """ componentlist = sy.listDirectory(settings.path + LIBRARYPATH ) componentlist.extend(self.getPersonalLibName()) componentlist.extend(self.getComponentsLibName()) return componentlist
def complete_addlibrary(self,text,line,begidx,endidx): """ complete addlibrary command with files under directory """ path = line.split(" ")[1] if path.find("/") == -1: # sub path = "" elif text.split() == "": # sub/sub/ path = "/".join(path)+"/" else: # sub/sub path = "/".join(path.split("/")[0:-1]) + "/" listdir = sy.listDirectory(path) return self.completelist(line,text,listdir)
def complete_selectprojecttree(self,text,line,begidx,endidx): """complete selectprojecttree command directories """ path = line.split(" ")[1] if path.find("/") == -1: # sub path = "" elif text.split() == "": # sub/sub/ path = "/".join(path)+"/" else: # sub/sub path = "/".join(path.split("/")[0:-1]) + "/" listdir = sy.listDirectory(path) return self.completelist(line,text,listdir)
def copyBSPDrivers(self): """ delete all directories under POD dir, then copy drivers in.""" bspdir = self.getBSPDirectory() if bspdir == None: raise Error("Set directory before",0) # deleting all directory in POD dir sy.deleteAllDir(bspdir) for directory in sy.listDirectory(settings.projectpath+DRIVERSPATH+"/"): sy.copyDirectory(settings.projectpath+DRIVERSPATH+"/"+directory, self.getBSPDirectory())
def complete_addtophdlfile(self,text,line,begidx,endidx): path = line.split(" ")[1] if path.find("/") == -1: # sub path = "" elif text.split() == "": # sub/sub/ path = "/".join(path)+"/" else: # sub/sub path = "/".join(path.split("/")[0:-1]) + "/" listdir = sy.listDirectory(path) listfile = sy.listFileType(path,"vhd") listfile.extend(listdir) return self.completelist(line,text,listfile)
def complete_load(self,text,line,begidx,endidx): """ complete load command with files under directory """ path = line.split(" ")[1] if path.find("/") == -1: # sub path = "" elif text.split() == "": # sub/sub/ path = "/".join(path)+"/" else: # sub/sub path = "/".join(path.split("/")[0:-1]) + "/" listdir = sy.listDirectory(path) listfile = sy.listFileType(path,XMLEXT[1:]) listfile.extend(listdir) return self.completelist(line,text,listfile)
def generateTCL(self,filename=None): """ generate tcl script for ise """ if filename is None: filename = settings.active_project.getName() + TCLEXT tclfile = open(settings.projectpath +SYNTHESISPATH+"/"+ filename,"w") tclfile.write("# TCL script automaticaly generated by POD\n") tclfile.write("cd .."+OBJSPATH+"\n") # create project tclfile.write("project new "+settings.active_project.getName()+"\n") # Configuration tclfile.write("# configure platform params\n") platform = settings.active_project.getPlatform() tclfile.write("project set family "+platform.getFamily()+"\n") tclfile.write("project set device "+platform.getDevice()+"\n") tclfile.write("project set package "+platform.getPackage()+"\n") tclfile.write("project set speed "+platform.getSpeed()+"\n") tclfile.write("project set {Preferred Language} VHDL\n") # Source files tclfile.write("## add components sources file\n") tclfile.write("# add top level sources file\n") tclfile.write("xfile add .."+SYNTHESISPATH+"/top_"+\ settings.active_project.getName()+VHDLEXT+"\n") for directory in sy.listDirectory(settings.projectpath+SYNTHESISPATH): for file in sy.listFiles(settings.projectpath+\ SYNTHESISPATH+\ "/"+directory): tclfile.write("xfile add .."+SYNTHESISPATH+"/"+directory+"/"+file+"\n") # Constraints files tclfile.write("# add constraint file\n") tclfile.write("xfile add .."+SYNTHESISPATH+"/"+\ settings.active_project.getName() + UCFEXT+" \n") # Run synthesis tclfile.write('process run "Generate Programming File"\n') # Run post synthesis model generation tclfile.write('process run "Generate Post-Synthesis Simulation Model"\n') # tclfile.write('cp netgen/synthesis/top_'+settings.active_project.getName()+\ # '_synthesis.vhd ../simulation/\n') # Run post place and route model generation tclfile.write('process run "Generate Post-Place & Route Simulation Model"\n') #tclfile.write('cp netgen/par/top_'+settings.active_project.getName()+\ # '_timesim.vhd ../simulation/\n') display.msg("TCL script generated with name : "+\ settings.active_project.getName()+TCLEXT) return settings.active_project.getName()+TCLEXT
def checkLib(self,path): """ check if lib and component are not duplicated """ libname = path.split("/")[-1] # check if lib name exist if libname in self.listLibraries(): raise Error("Library "+libname+" already exist",0) # check if components under library are new componentlist = sy.listDirectory(path) for component in componentlist: for libraryname in self.listLibraries(): if component in self.listComponents(libraryname): raise Error("Library "+libname+\ " contain a component that exist in '"+\ libraryname+"' : "+component,0)
def getOfficialLibraries(self): return sy.listDirectory(settings.path + LIBRARYPATH )