Trait

spinal.lib.bus.misc

BusSlaveFactory

Related Doc: package misc

Permalink

trait BusSlaveFactory extends Area

Bus slave factory is a tool that provide an abstract and smooth way to define register bank

Linear Supertypes
Area, OverridedEqualsHashCode, ValCallbackRec, ValCallback, NameableByComponent, Nameable, ContextUser, ScalaLocated, GlobalDataUser, OwnableRef, AnyRef, Any
Known Subclasses
Ordering
  1. Alphabetic
  2. By Inheritance
Inherited
  1. BusSlaveFactory
  2. Area
  3. OverridedEqualsHashCode
  4. ValCallbackRec
  5. ValCallback
  6. NameableByComponent
  7. Nameable
  8. ContextUser
  9. ScalaLocated
  10. GlobalDataUser
  11. OwnableRef
  12. AnyRef
  13. Any
  1. Hide All
  2. Show All
Visibility
  1. Public
  2. All

Type Members

  1. abstract type RefOwnerType

    Permalink
    Definition Classes
    OwnableRef

Abstract Value Members

  1. abstract def busDataWidth: Int

    Permalink

    Return the data width of the bus

  2. abstract def nonStopWrite[T <: Data](that: T, bitOffset: Int = 0, documentation: String = null): T

    Permalink

    Permanently assign that by the bus write data from bitOffset

  3. abstract def onReadPrimitive(address: AddressMapping, haltSensitive: Boolean, documentation: String)(doThat: ⇒ Unit): Unit

    Permalink
  4. abstract def onWritePrimitive(address: AddressMapping, haltSensitive: Boolean, documentation: String)(doThat: ⇒ Unit): Unit

    Permalink
  5. abstract def readAddress(): UInt

    Permalink
  6. abstract def readHalt(): Unit

    Permalink
  7. abstract def readPrimitive[T <: Data](that: T, address: AddressMapping, bitOffset: Int, documentation: String): Unit

    Permalink
  8. abstract def writeAddress(): UInt

    Permalink
  9. abstract def writeHalt(): Unit

    Permalink
  10. abstract def writePrimitive[T <: Data](that: T, address: AddressMapping, bitOffset: Int, documentation: String): Unit

    Permalink

Concrete Value Members

  1. final def !=(arg0: Any): Boolean

    Permalink
    Definition Classes
    AnyRef → Any
  2. final def ##(): Int

    Permalink
    Definition Classes
    AnyRef → Any
  3. final def ==(arg0: Any): Boolean

    Permalink
    Definition Classes
    AnyRef → Any
  4. var _config: BusSlaveFactoryConfig

    Permalink

    Configuration of the BusSlaveFactory

    Configuration of the BusSlaveFactory

    Attributes
    protected
  5. val _context: Capture

    Permalink
    Definition Classes
    Area
  6. final def asInstanceOf[T0]: T0

    Permalink
    Definition Classes
    Any
  7. def childNamePriority: Byte

    Permalink
    Definition Classes
    Area
  8. def clearOnSet[T <: Data](that: T, address: BigInt, bitOffset: Int = 0): T

    Permalink
  9. def clone(): AnyRef

    Permalink
    Attributes
    protected[java.lang]
    Definition Classes
    AnyRef
    Annotations
    @HotSpotIntrinsicCandidate() @throws( ... )
  10. def component: Component

    Permalink
    Definition Classes
    ContextUser
  11. def createAndDriveFlow[T <: Data](dataType: T, address: BigInt, bitOffset: Int = 0): Flow[T]

    Permalink

    Create a writable Flow register of type dataType at address and placed at bitOffset in the word

  12. def createReadAndClearOnSet[T <: Data](dataType: T, address: BigInt, bitOffset: Int = 0): T

    Permalink
  13. def createReadAndSetOnSet[T <: Data](dataType: T, address: BigInt, bitOffset: Int = 0): T

    Permalink
  14. def createReadAndWrite[T <: Data](dataType: T, address: BigInt, bitOffset: Int = 0, documentation: String = null): T

    Permalink

    Create a read write register of type dataType at address and placed at bitOffset in the word

  15. def createReadMultiWord[T <: Data](that: T, address: BigInt, documentation: String = null): T

    Permalink

    Create multi-words read register of type dataType

  16. def createReadOnly[T <: Data](dataType: T, address: BigInt, bitOffset: Int = 0, documentation: String = null): T

    Permalink

    Create a read only register of type dataType at address and placed at bitOffset in the word

  17. def createWriteAndReadMultiWord[T <: Data](that: T, address: BigInt, documentation: String = null): T

    Permalink

    Create multi-words write and read register of type dataType

  18. def createWriteMultiWord[T <: Data](that: T, address: BigInt, documentation: String = null): T

    Permalink

    Create multi-words write register of type dataType

  19. def createWriteOnly[T <: Data](dataType: T, address: BigInt, bitOffset: Int = 0, documentation: String = null): T

    Permalink

    Create a write only register of type dataType at address and placed at bitOffset in the word

  20. def doBitsAccumulationAndClearOnRead(that: Bits, address: BigInt, bitOffset: Int = 0): Unit

    Permalink

    Instantiate an internal register which at each cycle do : reg := reg | that Then when a read occur, the register is cleared.

    Instantiate an internal register which at each cycle do : reg := reg | that Then when a read occur, the register is cleared. This register is readable at address and placed at bitOffset in the word

  21. def drive[T <: Data](address: BigInt, bitMapping: (Int, Data)*): Unit

    Permalink
  22. def drive[T <: Data](that: T, address: BigInt, bitOffset: Int = 0, documentation: String = null): T

    Permalink

    Drive that with a register writable at address placed at bitOffset in the word

  23. def driveAndRead[T <: Data](that: T, address: BigInt, bitOffset: Int = 0, documentation: String = null): T

    Permalink

    Drive that with a register writable and readable at address placed at bitOffset in the word

  24. def driveAndReadMultiWord[T <: Data](that: T, address: BigInt, documentation: String = null): T

    Permalink

    Drive and read that on multi-word

  25. def driveFlow[T <: Data](that: Flow[T], address: BigInt, bitOffset: Int = 0): Unit

    Permalink

    Emit on that a transaction when a write happen at address by using data placed at bitOffset in the word

  26. def driveMultiWord[T <: Data](that: T, address: BigInt, documentation: String = null): T

    Permalink

    Drive that on multi-words

  27. final def eq(arg0: AnyRef): Boolean

    Permalink
    Definition Classes
    AnyRef
  28. def equals(obj: Any): Boolean

    Permalink
    Definition Classes
    OverridedEqualsHashCode → AnyRef → Any
  29. def foreachReflectableNameables(doThat: (Any) ⇒ Unit): Unit

    Permalink
    Definition Classes
    Nameable
  30. final def getClass(): Class[_]

    Permalink
    Definition Classes
    AnyRef → Any
    Annotations
    @HotSpotIntrinsicCandidate()
  31. def getConfig: BusSlaveFactoryConfig

    Permalink
  32. def getDisplayName(): String

    Permalink
    Definition Classes
    Nameable
  33. def getInstanceCounter: Int

    Permalink
    Definition Classes
    ContextUser
  34. def getMode: Byte

    Permalink
    Attributes
    protected
    Definition Classes
    Nameable
  35. def getName(default: String): String

    Permalink
    Definition Classes
    NameableByComponent → Nameable
  36. def getName(): String

    Permalink
    Definition Classes
    NameableByComponent → Nameable
  37. def getPartialName(): String

    Permalink
    Definition Classes
    Nameable
  38. def getPath(from: Component, to: Component): Seq[Component]

    Permalink
    Definition Classes
    NameableByComponent
  39. def getRefOwnersChain(): List[Any]

    Permalink
    Definition Classes
    OwnableRef
  40. def getScalaLocationLong: String

    Permalink
    Definition Classes
    ScalaLocated
  41. def getScalaLocationShort: String

    Permalink
    Definition Classes
    ScalaLocated
  42. def getScalaTrace(): Throwable

    Permalink
    Definition Classes
    ScalaLocated
  43. val globalData: GlobalData

    Permalink
    Definition Classes
    GlobalDataUser
  44. def hashCode(): Int

    Permalink
    Definition Classes
    OverridedEqualsHashCode → AnyRef → Any
  45. def isCompletelyUnnamed: Boolean

    Permalink
    Definition Classes
    Nameable
  46. final def isInstanceOf[T0]: Boolean

    Permalink
    Definition Classes
    Any
  47. def isNamed: Boolean

    Permalink
    Definition Classes
    NameableByComponent → Nameable
  48. def isPriorityApplicable(namePriority: Byte): Boolean

    Permalink
    Definition Classes
    Nameable
  49. def isReading(address: BigInt): Bool

    Permalink

    Return true if the bus is reading

  50. def isUnnamed: Boolean

    Permalink
    Definition Classes
    Nameable
  51. def isWriting(address: BigInt): Bool

    Permalink

    Return true if the bus is writing

  52. def multiCycleRead(address: AddressMapping, cycles: BigInt): Unit

    Permalink
  53. var name: String

    Permalink
    Definition Classes
    Nameable
  54. var nameableRef: Nameable

    Permalink
    Attributes
    protected
    Definition Classes
    Nameable
  55. final def ne(arg0: AnyRef): Boolean

    Permalink
    Definition Classes
    AnyRef
  56. final def notify(): Unit

    Permalink
    Definition Classes
    AnyRef
    Annotations
    @HotSpotIntrinsicCandidate()
  57. final def notifyAll(): Unit

    Permalink
    Definition Classes
    AnyRef
    Annotations
    @HotSpotIntrinsicCandidate()
  58. def onRead(address: BigInt, documentation: String = null)(doThat: ⇒ Unit): Unit

    Permalink

    Call doThat when a read transaction occurs on address

  59. def onWrite(address: BigInt, documentation: String = null)(doThat: ⇒ Unit): Unit

    Permalink

    Call doThat when a write transaction occurs on address

  60. def overrideLocalName(name: String): BusSlaveFactory.this.type

    Permalink
    Definition Classes
    Nameable
  61. var parentScope: ScopeStatement

    Permalink
    Definition Classes
    ContextUser
  62. def read[T <: Data](address: BigInt, bitMapping: (Int, Data)*): Unit

    Permalink
  63. def read[T <: Data](that: T, address: BigInt, bitOffset: Int = 0, documentation: String = null): T

    Permalink

    When the bus read the address, fill the response with that at bitOffset

  64. def readAddress(address: AddressMapping): UInt

    Permalink
  65. def readAndClearOnSet[T <: Data](that: T, address: BigInt, bitOffset: Int = 0): T

    Permalink
  66. def readAndSetOnSet[T <: Data](that: T, address: BigInt, bitOffset: Int = 0): T

    Permalink
  67. def readAndWrite(that: Data, address: BigInt, bitOffset: Int = 0, documentation: String = null): Unit

    Permalink

    Make that readable and writable at address and placed at bitOffset in the word

  68. def readAndWriteMultiWord(that: Data, address: BigInt, documentation: String = null): Unit

    Permalink

    Create the memory mapping to write/read that from address

  69. def readError(): Unit

    Permalink
  70. val readErrorFlag: Bool

    Permalink
  71. def readFire(): Bool

    Permalink
  72. def readMultiWord(that: Data, address: BigInt, documentation: String = null): Unit

    Permalink

    Create the memory mapping to read that from address If that is bigger than one word it extends the register on following addresses.

  73. def readStreamNonBlocking[T <: Data](that: Stream[T], address: BigInt, validBitOffset: Int, payloadBitOffset: Int, validInverted: Boolean = false): Unit

    Permalink

    Read that and consume the transaction when a read happen at address.

  74. def readStreamNonBlocking[T <: Data](that: Stream[T], address: BigInt): Unit

    Permalink

    Read that (that is bigger than the busWidth) and consume the transaction when a read happen at address.

    Read that (that is bigger than the busWidth) and consume the transaction when a read happen at address.

    Note

    in order to avoid to read wrong data read first the address which contains the valid signal. Little : payload - valid at address 0x00 Big : valid - payload at address 0x00 Once the valid signal is true you can read all registers

  75. def readSyncMemMultiWord[T <: Data](mem: Mem[T], addressOffset: BigInt): Mem[T]

    Permalink

    Memory map a Mem to bus for reading.

    Memory map a Mem to bus for reading. Elements can be larger than bus data width in bits.

  76. def readSyncMemWordAligned[T <: Data](mem: Mem[T], addressOffset: BigInt, bitOffset: Int = 0): Mem[T]

    Permalink
  77. var refOwner: RefOwnerType

    Permalink
    Definition Classes
    OwnableRef
  78. def reflectNames(): Unit

    Permalink
    Definition Classes
    Nameable
  79. def rework[T](body: ⇒ T): T

    Permalink
    Definition Classes
    Area
  80. var scalaTrace: Throwable

    Permalink
    Definition Classes
    ScalaLocated
  81. def setCompositeName(nameable: Nameable, postfix: String, namePriority: Byte): BusSlaveFactory.this.type

    Permalink
    Definition Classes
    Nameable
  82. def setCompositeName(nameable: Nameable, postfix: String, weak: Boolean): BusSlaveFactory.this.type

    Permalink
    Definition Classes
    Nameable
  83. def setCompositeName(nameable: Nameable, postfix: String): BusSlaveFactory.this.type

    Permalink
    Definition Classes
    Nameable
  84. def setCompositeName(nameable: Nameable, namePriority: Byte): BusSlaveFactory.this.type

    Permalink
    Definition Classes
    Nameable
  85. def setCompositeName(nameable: Nameable, weak: Boolean): BusSlaveFactory.this.type

    Permalink
    Definition Classes
    Nameable
  86. def setCompositeName(nameable: Nameable): BusSlaveFactory.this.type

    Permalink
    Definition Classes
    Nameable
  87. def setConfig(value: BusSlaveFactoryConfig): BusSlaveFactory.this.type

    Permalink
  88. def setLambdaName(isNameBody: ⇒ Boolean)(nameGen: ⇒ String): BusSlaveFactory.this.type

    Permalink
    Definition Classes
    Nameable
  89. def setName(name: String, namePriority: Byte): BusSlaveFactory.this.type

    Permalink
    Definition Classes
    Nameable
  90. def setName(name: String, weak: Boolean): BusSlaveFactory.this.type

    Permalink
    Definition Classes
    Nameable
  91. def setName(name: String): BusSlaveFactory.this.type

    Permalink
    Definition Classes
    Nameable
  92. def setNameAsWeak(): BusSlaveFactory.this.type

    Permalink
    Definition Classes
    Nameable
  93. def setOnClear[T <: Data](that: T, address: BigInt, bitOffset: Int = 0): T

    Permalink
  94. def setOnSet[T <: Data](that: T, address: BigInt, bitOffset: Int = 0): T

    Permalink
  95. def setPartialName(name: String, namePriority: Byte, owner: Any): BusSlaveFactory.this.type

    Permalink
    Definition Classes
    Nameable
  96. def setPartialName(name: String, namePriority: Byte): BusSlaveFactory.this.type

    Permalink
    Definition Classes
    Nameable
  97. def setPartialName(name: String, weak: Boolean): BusSlaveFactory.this.type

    Permalink
    Definition Classes
    Nameable
  98. def setPartialName(owner: Nameable, name: String, namePriority: Byte): BusSlaveFactory.this.type

    Permalink
    Definition Classes
    Nameable
  99. def setPartialName(owner: Nameable, name: String, weak: Boolean): BusSlaveFactory.this.type

    Permalink
    Definition Classes
    Nameable
  100. def setPartialName(name: String): BusSlaveFactory.this.type

    Permalink
    Definition Classes
    Nameable
  101. def setPartialName(owner: Nameable, name: String): BusSlaveFactory.this.type

    Permalink
    Definition Classes
    Nameable
  102. def setPartialName(owner: Nameable): BusSlaveFactory.this.type

    Permalink
    Definition Classes
    Nameable
  103. def setRefOwner(that: Any): Unit

    Permalink
    Definition Classes
    OwnableRef
  104. def setScalaLocated(source: ScalaLocated): BusSlaveFactory.this.type

    Permalink
    Definition Classes
    ScalaLocated
  105. def setWeakName(name: String): BusSlaveFactory.this.type

    Permalink
    Definition Classes
    Nameable
  106. def setWordEndianness(value: Endianness): BusSlaveFactory

    Permalink

    Set the endianness during write/read multiword

  107. final def synchronized[T0](arg0: ⇒ T0): T0

    Permalink
    Definition Classes
    AnyRef
  108. def toString(): String

    Permalink
    Definition Classes
    Area → Nameable → AnyRef → Any
  109. def unsetName(): BusSlaveFactory.this.type

    Permalink
    Definition Classes
    Nameable
  110. def valCallback[T](ref: T, name: String): T

    Permalink
    Definition Classes
    ValCallbackRec → ValCallback
  111. def valCallbackOn(ref: Any, name: String, refs: Set[Any]): Unit

    Permalink
    Definition Classes
    ValCallbackRec
  112. def valCallbackRec(obj: Any, name: String): Unit

    Permalink
    Definition Classes
    Area → ValCallbackRec
  113. final def wait(arg0: Long, arg1: Int): Unit

    Permalink
    Definition Classes
    AnyRef
    Annotations
    @throws( ... )
  114. final def wait(arg0: Long): Unit

    Permalink
    Definition Classes
    AnyRef
    Annotations
    @throws( ... )
  115. final def wait(): Unit

    Permalink
    Definition Classes
    AnyRef
    Annotations
    @throws( ... )
  116. def withOffset(offset: BigInt): BusSlaveFactoryAddressWrapper

    Permalink
  117. def wordAddressInc: Int

    Permalink

    Address incrementation used by the read and write multi words registers

  118. def write[T <: Data](address: BigInt, bitMapping: (Int, Data)*): Unit

    Permalink
  119. def write[T <: Data](that: T, address: BigInt, bitOffset: Int = 0, documentation: String = null): T

    Permalink

    When the bus write the address, assign that with bus’s data from bitOffset

  120. def writeAddress(address: AddressMapping): UInt

    Permalink
  121. def writeByteEnable(): Bits

    Permalink

    Byte enable bits, defaulting to all ones

  122. def writeError(): Unit

    Permalink
  123. val writeErrorFlag: Bool

    Permalink
  124. def writeFire(): Bool

    Permalink
  125. def writeMemMultiWord[T <: Data](mem: Mem[T], addressOffset: BigInt): Mem[T]

    Permalink

    Memory map a Mem to bus for writing.

    Memory map a Mem to bus for writing. Elements can be larger than bus data width in bits.

  126. def writeMemWordAligned[T <: Data](mem: Mem[T], addressOffset: BigInt, bitOffset: Int = 0): Mem[T]

    Permalink
  127. def writeMultiWord(that: Data, address: BigInt, documentation: String = null): Unit

    Permalink

    Create the memory mapping to write that at address.

    Create the memory mapping to write that at address. If that is bigger than one word it extends the register on following addresses.

Deprecated Value Members

  1. def createReadWrite[T <: Data](dataType: T, address: BigInt, bitOffset: Int = 0): T

    Permalink
    Annotations
    @deprecated
    Deprecated

    (Since version ???) Use createReadAndWrite instead

  2. def finalize(): Unit

    Permalink
    Attributes
    protected[java.lang]
    Definition Classes
    AnyRef
    Annotations
    @Deprecated @deprecated @throws( classOf[java.lang.Throwable] )
    Deprecated

    (Since version ) see corresponding Javadoc for more information.

Inherited from Area

Inherited from OverridedEqualsHashCode

Inherited from ValCallbackRec

Inherited from ValCallback

Inherited from NameableByComponent

Inherited from Nameable

Inherited from ContextUser

Inherited from ScalaLocated

Inherited from GlobalDataUser

Inherited from OwnableRef

Inherited from AnyRef

Inherited from Any

Ungrouped