def load_new_instance(self, libraryname, componentname, componentversion, instancename): """ Load a new component from library """ project = self.parent # verify component name if project.name == instancename: raise PodError( "Instance name can't be " + "the same name as projectname", 0) # test if component exist if not sy.file_exist( project.library.library_path(libraryname) + "/" + componentname): raise PodError( "No component with name " + libraryname + "." + componentname, 0) # test if several componentversion if componentversion is None: if len(project.get_components_versions(libraryname, componentname)) > 1: raise PodError( "Component version must be chosen :" + str( project.get_components_versions( libraryname, componentname)), 0) else: try: componentversion = project.get_components_versions( libraryname, componentname)[0] except IndexError: raise PodError("No xml description of component", 0) if instancename is None: instancename =\ componentname + "%02d" %\ len(project.get_instances_list_of_component(componentname)) # copy and rename directory sy.cp_dir( project.library.library_path(libraryname) + "/" + componentname, self.parent.projectpath + COMPONENTSPATH) try: sy.rename_dir( self.parent.projectpath + COMPONENTSPATH + "/" + componentname, self.parent.projectpath + COMPONENTSPATH + "/" + instancename) except PodError: # if directory exist pass # Rename xml file sy.rename_file( self.parent.projectpath + COMPONENTSPATH + "/" + instancename + "/" + componentversion + XMLEXT, self.parent.projectpath + COMPONENTSPATH + "/" + instancename + "/" + instancename + XMLEXT) # load component self.load(instancename) # Connect platform connection self.autoconnect_pins()
def load_new_instance(self, libraryname, componentname, componentversion, instancename): """ Load a new component from library """ project = self.parent # verify component name if project.name == instancename: raise PodError("Instance name can't be " + "the same name as projectname", 0) # test if component exist if not sy.file_exist(project.library.library_path(libraryname) + "/" + componentname): raise PodError("No component with name " + libraryname + "." + componentname, 0) # test if several componentversion if componentversion is None: if len(project.get_components_versions(libraryname, componentname)) > 1: raise PodError("Component version must be chosen :" + str(project.get_components_versions( libraryname, componentname)), 0) else: try: componentversion = project.get_components_versions( libraryname, componentname)[0] except IndexError: raise PodError("No xml description of component", 0) if instancename is None: instancename =\ componentname + "%02d" %\ len(project.get_instances_list_of_component(componentname)) # copy and rename directory sy.cp_dir(project.library.library_path(libraryname) + "/" + componentname, self.parent.projectpath + COMPONENTSPATH) try: sy.rename_dir(self.parent.projectpath + COMPONENTSPATH + "/" + componentname, self.parent.projectpath + COMPONENTSPATH + "/" + instancename) except PodError: # if directory exist pass # Rename xml file sy.rename_file(self.parent.projectpath + COMPONENTSPATH + "/" + instancename + "/" + componentversion + XMLEXT, self.parent.projectpath + COMPONENTSPATH + "/" + instancename + "/" + instancename + XMLEXT) # load component self.load(instancename) # Connect platform connection self.autoconnect_pins()
def driver_toolchain(self, toolchainname): """ set driver toolchain """ if toolchainname not in self.get_driver_toolchains(): raise PodError("No toolchain named " + toolchainname + " in POD") sy.cp_file( SETTINGS.path + TOOLCHAINPATH + DRIVERSPATH + "/" + toolchainname + "/" + toolchainname + XMLEXT, self.projectpath + DRIVERSPATH + "/") sy.rename_file( self.projectpath + DRIVERSPATH + "/" + toolchainname + XMLEXT, self.projectpath + DRIVERSPATH + "/drivers" + XMLEXT) self.driver = Driver(self) self.save()
def driver_toolchain(self, toolchainname): """ set driver toolchain """ if toolchainname not in self.get_driver_toolchains(): raise PodError("No toolchain named " + toolchainname + " in POD") sy.cp_file(SETTINGS.path + TOOLCHAINPATH + DRIVERSPATH + "/" + toolchainname + "/" + toolchainname + XMLEXT, self.projectpath + DRIVERSPATH + "/") sy.rename_file(self.projectpath + DRIVERSPATH + "/" + toolchainname + XMLEXT, self.projectpath + DRIVERSPATH + "/drivers" + XMLEXT) self.driver = Driver(self) self.save()
def simulation_toolchain(self, toolchainname): """ Set simulation toolchain """ if toolchainname not in self.get_simulation_toolchains(): raise PodError("No toolchain named " + toolchainname + " in POD") sy.cp_file(SETTINGS.path + TOOLCHAINPATH + SIMULATIONPATH + "/" + toolchainname + "/" + toolchainname + XMLEXT, self.projectpath + SIMULATIONPATH + "/") sy.rename_file(self.projectpath + SIMULATIONPATH + "/" + toolchainname + XMLEXT, self.projectpath + SIMULATIONPATH + "/simulation" + XMLEXT) self.simulation = Simulation(self) self.save()
def simulation_toolchain(self, toolchainname): """ Set simulation toolchain """ if toolchainname not in self.get_simulation_toolchains(): raise PodError("No toolchain named " + toolchainname + " in POD") sy.cp_file( SETTINGS.path + TOOLCHAINPATH + SIMULATIONPATH + "/" + toolchainname + "/" + toolchainname + XMLEXT, self.projectpath + SIMULATIONPATH + "/") sy.rename_file( self.projectpath + SIMULATIONPATH + "/" + toolchainname + XMLEXT, self.projectpath + SIMULATIONPATH + "/simulation" + XMLEXT) self.simulation = Simulation(self) self.save()
def generate_template(): """ generate Template Testbench """ filename = SETTINGS.projectpath + SIMULATIONPATH +\ "/top_" + SETTINGS.active_project.name +\ "_tb" + VHDLEXT clockportlist = SETTINGS.active_project.clock_ports if len(clockportlist) == 0: raise PodError("No external clock signal found", 0) if len(clockportlist) != 1: DISPLAY.msg("More than one external clock in design", 1) clockport = clockportlist[0] clockname = clockport.parent.parent.instancename +\ "_" + clockport.name ################### # header out = header() out = out + include() out = out + entity() out = out + architecturehead() freq = clockport.dest_port.frequency clockhalfperiod = (1000 / float(freq)) / 2 out = out + constant(clockhalfperiod) portlist = SETTINGS.active_project.platform.connect_ports out = out + signals(portlist) out = out + declareTop(portlist) out = out + beginarch() out = out + connectTop(portlist) out = out + stimulis() out = out + "\n" out = out + clock(clockname) out = out + "\n" out = out + endarch() ####################### # save file if sy.file_exist(filename): DISPLAY.msg( "[WARNING] File exist, file renamed in " + filename + "old", 0) sy.rename_file(filename, filename + "old") try: afile = open(filename, "w") except IOError as error: raise error afile.write(out) afile.close() return filename
def generate_template(): """ generate Template Testbench """ filename = SETTINGS.projectpath + SIMULATIONPATH +\ "/top_" + SETTINGS.active_project.name +\ "_tb" + VHDLEXT clockportlist = SETTINGS.active_project.clock_ports if len(clockportlist) == 0: raise PodError("No external clock signal found", 0) if len(clockportlist) != 1: DISPLAY.msg("More than one external clock in design", 1) clockport = clockportlist[0] clockname = clockport.parent.parent.instancename +\ "_" + clockport.name ################### # header out = header() out = out + include() out = out + entity() out = out + architecturehead() freq = clockport.dest_port.frequency clockhalfperiod = (1000 / float(freq)) / 2 out = out + constant(clockhalfperiod) portlist = SETTINGS.active_project.platform.connect_ports out = out + signals(portlist) out = out + declareTop(portlist) out = out + beginarch() out = out + connectTop(portlist) out = out + stimulis() out = out + "\n" out = out + clock(clockname) out = out + "\n" out = out + endarch() ####################### # save file if sy.file_exist(filename): DISPLAY.msg("[WARNING] File exist, file renamed in " + filename + "old", 0) sy.rename_file(filename, filename + "old") try: afile = open(filename, "w") except IOError as error: raise error afile.write(out) afile.close() return filename