def generateProject(self): """ copy all hdl file in synthesis project directory """ for component in self.parent.getInstancesList(): if component.getNum() == "0": # Make directory compdir = settings.projectpath+SYNTHESISPATH+"/"+\ component.getName() if sy.dirExist(compdir): display.msg("Directory "+compdir+" exist, will be deleted") sy.delDirectory(compdir) sy.makeDirectory(compdir) display.msg("Make directory for "+component.getName()) # copy hdl files for hdlfile in component.getHdl_filesList(): try: sy.copyFile(settings.projectpath+\ COMPONENTSPATH+\ "/"+\ component.getInstanceName()+\ "/hdl/"+\ hdlfile.getFileName(), compdir+"/") except IOError,e: print display raise Error(str(e),0)
def generateBitStream(self,commandname,scriptname): """ generate the bitstream """ pwd = sy.pwd() sy.deleteAll(settings.projectpath+OBJSPATH) sy.chdir(settings.projectpath+SYNTHESISPATH) for line in sy.launchAShell(commandname,scriptname): if settings.color()==1: print COLOR_SHELL+line+COLOR_END, else: print "SHELL>"+line, try: sy.copyFile(settings.projectpath+OBJSPATH+"/"+\ BINARY_PREFIX+settings.active_project.getName()+\ BINARY_SUFFIX, settings.projectpath+BINARYPROJECTPATH+"/") except IOError: raise Error("Can't copy bitstream") sy.chdir(pwd)
def setHDLfile(self,hdlfilepath,istop=0,scope="both"): """ Add HDL file in library component """ if not sy.fileExist(hdlfilepath): raise Error("File "+hdlfilepath+" doesn't exist") hdl_file_name = os.path.basename(hdlfilepath) if hdl_file_name in [hdlfile.getFileName() for hdlfile in self.getHdl_filesList()]: raise Error("File "+hdlfilepath+" is already in component") if istop: topfile = self.getHDLTop() if topfile != None: raise Error("There is a top HDL file in component named "+\ topfile.getFileName()) # copy file in component directory hdlpath = os.path.join(self.getComponentPath(),"hdl") sy.copyFile(hdlfilepath,hdlpath) # create hdl_file node hdl_file_object = Hdl_file(self, filename=hdl_file_name, istop=istop, scope=scope) if istop: if hdl_file_object.getEntityName() != self.getName(): raise Error("Entity name must be the same of component name") # automaticaly add generics generic_list = hdl_file_object.getGenericsList() for generic in generic_list: self.addGeneric(generic) display.msg(str(Error("Generic "+generic.getName()+\ " added in component",2))) # add node in component self.addSubNode(nodename="hdl_files",subnode=hdl_file_object) filelist = self.hdl_fileslist.append(hdl_file_object) return filelist