Model a transformation on a address, typicaly, an address decoder may apply an offset to each of its outputs
Bus slave factory is a tool that provide an abstract and smooth way to define register bank
Configuration of the bus Slave Factory
BusSlaveFactoryDelayed captures each primitives (BusSlaveFactoryElement) into a data-model
BusSlaveFactoryDelayed captures each primitives (BusSlaveFactoryElement) into a data-model
class Apb3SlaveFactory(bus : Apb3) extends BusSlaveFactoryDelayed{ override def build(): Unit = { ... } override def busDataWidth: Int = bus.config.dataWidth }
Base element
Ask to constantly drive that with the data bus bitOffset specify where that get bits from the request
Ask to execute doThat when a read access is done on address
Ask to execute doThat when a write access is done on address
Ask to make that readable when an access is done on address bitOffset specify where that is placed on the answer
Ask to make that writable when a access is done on address.
Ask to make that writable when a access is done on address.
bitOffset specify where that
get bits from the request
Creates an address mapping using a bit mask.
Creates an address mapping using a bit mask.
MaskMapping(0x0000, 0x8000) => matches 0x0000-0x8000 MaskMapping(0x40, 0xF0) => matches 0x40 - 0x4F
Address offset to use. Must be inside the mask
Bit mask applied to the address before the check
For instance, if a slave is mapped at address 0x100 of a master => offset = 0x100
Configuration of the bus Slave Factory
Endianness for the multiWrite or multiRead operations