예제 #1
0
	def generate_arbitrators(self, debug=False):
		#tags have already been set for this class
		if (not saparbitrator.is_arbitrator_required(self.project_tags, False)):
			return 0

		arb_size_list = []
		arbitrator_buffer = ""


		#we have some arbitrators, add the tag to the project
		#	(this is needed for gen_top)
#		arb_tags = saparbitrator.generate_arbitrator_tags(self.project_tags, False) 
#		self.project_tags["ARBITRATORS"] = arb_tags

		#for each of the items in the arbitrator list create a file tags
		#item that can be proecessed by sapfile.process file
		arb_tags = self.project_tags["ARBITRATORS"]
		for i in range (0, len(arb_tags.keys())):
			key = arb_tags.keys()[i]
			arb_size = len(arb_tags[key]) + 1
			if (arb_size in arb_size_list): 
				continue
			#we don't already have this size, so add it into the list
			arb_size_list.append(arb_size)
			fn = "arbitrator_" + str(arb_size) + "_masters.v"
			d = self.project_tags["BASE_DIR"] + "/rtl/bus/arbitrators"
			
			self.filegen.buf = saparbitrator.generate_arbitrator_buffer(arb_size)
			if debug:
				print "arbitrator buffer: " + self.filegen.buf
			self.filegen.write_file(d, fn)

		return len(arb_size_list)
예제 #2
0
    def generate_arbitrators(self, debug=False):
        """Generates all the arbitrators modules from the configuration file

    Searches for any required arbitrators in the configuration file.
    Then generates the required arbitrators (2 to 1, 3 to 1, etc...)

    Args:
      Nothing
    
    Return:
      The largest size arbitrator generated (used for testing purposes)

    Raises:
      TypeError
      IOError
    """
        #tags have already been set for this class
        if (not saparbitrator.is_arbitrator_required(self.project_tags,
                                                     False)):
            return 0

        arb_size_list = []
        arbitrator_buffer = ""

        #we have some arbitrators, add the tag to the project
        #  (this is needed for gen_top)
        #    arb_tags = saparbitrator.generate_arbitrator_tags(self.project_tags, False)
        #    self.project_tags["ARBITRATORS"] = arb_tags

        #for each of the items in the arbitrator list create a file tags
        #item that can be proecessed by sapfile.process file
        arb_tags = self.project_tags["ARBITRATORS"]
        for i in range(0, len(arb_tags.keys())):
            key = arb_tags.keys()[i]
            arb_size = len(arb_tags[key]) + 1
            if (arb_size in arb_size_list):
                continue
            #we don't already have this size, so add it into the list
            arb_size_list.append(arb_size)
            fn = "arbitrator_" + str(arb_size) + "_masters.v"
            d = self.project_tags["BASE_DIR"] + "/rtl/bus/arbitrators"

            self.filegen.buf = saparbitrator.generate_arbitrator_buffer(
                arb_size)
            if debug:
                print "arbitrator buffer: " + self.filegen.buf
            self.filegen.write_file(d, fn)

        return len(arb_size_list)
예제 #3
0
  def generate_arbitrators(self, debug=False):
    """Generates all the arbitrators modules from the configuration file

    Searches for any required arbitrators in the configuration file.
    Then generates the required arbitrators (2 to 1, 3 to 1, etc...)

    Args:
      Nothing
    
    Return:
      The largest size arbitrator generated (used for testing purposes)

    Raises:
      TypeError
      IOError
    """
    #tags have already been set for this class
    if (not saparbitrator.is_arbitrator_required(self.project_tags, False)):
      return 0

    arb_size_list = []
    arbitrator_buffer = ""


    #we have some arbitrators, add the tag to the project
    #  (this is needed for gen_top)
#    arb_tags = saparbitrator.generate_arbitrator_tags(self.project_tags, False)
#    self.project_tags["ARBITRATORS"] = arb_tags

    #for each of the items in the arbitrator list create a file tags
    #item that can be proecessed by sapfile.process file
    arb_tags = self.project_tags["ARBITRATORS"]
    for i in range (0, len(arb_tags.keys())):
      key = arb_tags.keys()[i]
      arb_size = len(arb_tags[key]) + 1
      if (arb_size in arb_size_list):
        continue
      #we don't already have this size, so add it into the list
      arb_size_list.append(arb_size)
      fn = "arbitrator_" + str(arb_size) + "_masters.v"
      d = self.project_tags["BASE_DIR"] + "/rtl/bus/arbitrators"

      self.filegen.buf = saparbitrator.generate_arbitrator_buffer(arb_size)
      if debug:
        print "arbitrator buffer: " + self.filegen.buf
      self.filegen.write_file(d, fn)

    return len(arb_size_list)
예제 #4
0
	def test_generate_arbitrator_buffer (self):
		"""generate an arbitrator buffer"""
		result = saparbitrator.generate_arbitrator_buffer(2, debug = self.dbg)
		if (self.dbg):
			print "generated arbitrator buffer: \n" + result
		self.assertEqual((len(result) > 0), True)
예제 #5
0
 def test_generate_arbitrator_buffer(self):
     """generate an arbitrator buffer"""
     result = saparbitrator.generate_arbitrator_buffer(2, debug=self.dbg)
     if (self.dbg):
         print "generated arbitrator buffer: \n" + result
     self.assertEqual((len(result) > 0), True)