def register_device(self, word_device):
		"""
		.. _register_device:

		Register the WordDevice_ ``word_device`` in the bus
		returns the start address of the device.

		raises: BUSSetupError_, if the device cannot be registered.

		"""
		if(self._lock):
			raise BUSSetupError("BUS already locked.")
		size = word_device.size
		if(self.current_max_offset + size >= self.max_addr):
			raise BUSSetupError("Addresspace({}) would exceed width of BUS({})".format(self.current_max_offset+ size,
						self.width))
		self.start_addresses[word_device] = self.current_max_offset
		res = self.current_max_offset
		self.current_max_offset += size
		self.index[range(res, self.current_max_offset)] = word_device
		self.devices.append(word_device)
		return res
.. _register_device:

		Register the WordDevice_ ``word_device`` in the bus
		returns the start address of the device.

		raises: BUSSetupError_, if the device cannot be registered.