Esempio n. 1
0
    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()
Esempio n. 2
0
    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()
Esempio n. 3
0
 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()
Esempio n. 4
0
 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()
Esempio n. 5
0
 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()
Esempio n. 6
0
 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()
Esempio n. 7
0
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
Esempio n. 8
0
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