Open
Description
For the simple but very usual case of a memory range mapping a device that does not need internal decoding (ram, rom, that kind of stuff) the boilerplate is a little annoying. Specifically it is:
self.bus = wishbone.Interface(addr_width = self.ram_width-2, data_width = 32, granularity = 8, name="ram")
map = memory.MemoryMap(addr_width = self.ram_width, data_width=8, name="ram")
map.add_resource(self.ram, name="ram", size=self.ram_size)
self.bus.memory_map = map
The redundancy I suspect makes things error-prone, especially with the data_width/granularity issues between the Interface and the MemoryMap. It probably could be done in one helper function call, not sure what it should look like though.