c

vexiiriscv.execute

CsrAccessPlugin

class CsrAccessPlugin extends FiberPlugin with CsrService

Implements the RISC-V CSR read/write instructions, aswell as provide an API for other plugin to populate the CSR space. In other words, this plugin do not define any CSR, but provide an API to define them (that API is defined in CsrService).

To help with the FMax, CSR accesses are implemented by using a state-machine. Accesses are done over 4 cycles : idle -> read -> write -> completion

This maybe a bit overkilled, but as the CSR access isn't critical for the IPC, better to much cycles than not enough.

Linear Supertypes
CsrService, FiberPlugin, Hostable, Area, OverridedEqualsHashCode, ValCallbackRec, ValCallback, NameableByComponent, Nameable, ContextUser, ScalaLocated, GlobalDataUser, OwnableRef, AnyRef, Any
Ordering
  1. Alphabetic
  2. By Inheritance
Inherited
  1. CsrAccessPlugin
  2. CsrService
  3. FiberPlugin
  4. Hostable
  5. Area
  6. OverridedEqualsHashCode
  7. ValCallbackRec
  8. ValCallback
  9. NameableByComponent
  10. Nameable
  11. ContextUser
  12. ScalaLocated
  13. GlobalDataUser
  14. OwnableRef
  15. AnyRef
  16. Any
  1. Hide All
  2. Show All
Visibility
  1. Public
  2. All

Instance Constructors

  1. new CsrAccessPlugin(layer: LaneLayer, writeBackKey: Any, injectAt: Int = 0, wbAt: Int = 1)

Type Members

  1. abstract type RefOwnerType
    Definition Classes
    OwnableRef

Value Members

  1. final def !=(arg0: Any): Boolean
    Definition Classes
    AnyRef → Any
  2. final def ##(): Int
    Definition Classes
    AnyRef → Any
  3. final def ==(arg0: Any): Boolean
    Definition Classes
    AnyRef → Any
  4. val CSR_ADDRESS: NamedType[UInt]
  5. val CSR_CLEAR: NamedType[Bool]
  6. val CSR_IMM: NamedType[Bool]
  7. val CSR_MASK: NamedType[Bool]
  8. val CSR_READ: NamedType[Bool]
  9. val CSR_WRITE: NamedType[Bool]
  10. val SEL: NamedType[Bool]
  11. val TO_RF: NamedType[Bits]
  12. val _context: Capture
    Definition Classes
    Area
  13. def addService[T](that: T): T
    Definition Classes
    FiberPlugin
  14. def allowCsr(csrFilter: Any): ArrayBuffer[CsrSpec]
    Definition Classes
    CsrService
  15. final def asInstanceOf[T0]: T0
    Definition Classes
    Any
  16. def awaitBuild(): Unit
    Definition Classes
    FiberPlugin
  17. def buildBefore(l: ⇒ Lock): Unit
    Definition Classes
    FiberPlugin
  18. var buildCount: Int
    Definition Classes
    FiberPlugin
  19. val bus: Handle[CsrBus]
    Definition Classes
    CsrAccessPluginCsrService
  20. def childNamePriority: Byte
    Definition Classes
    Area
  21. def clone(): AnyRef
    Attributes
    protected[lang]
    Definition Classes
    AnyRef
    Annotations
    @throws( ... ) @native() @IntrinsicCandidate()
  22. def component: Component
    Definition Classes
    ContextUser
  23. val csrLock: Retainer
    Definition Classes
    CsrService
  24. def during: AnyRef { ... /* 2 definitions in type refinement */ }
    Definition Classes
    FiberPlugin
  25. final def eq(arg0: AnyRef): Boolean
    Definition Classes
    AnyRef
  26. def equals(obj: Any): Boolean
    Definition Classes
    OverridedEqualsHashCode → AnyRef → Any
  27. def flushOnWrite(csrFilter: Any): Unit
    Definition Classes
    CsrService
  28. def foreachReflectableNameables(doThat: (Any) ⇒ Unit): Unit
    Definition Classes
    Nameable
  29. final def getClass(): Class[_]
    Definition Classes
    AnyRef → Any
    Annotations
    @native() @IntrinsicCandidate()
  30. def getDisplayName(): String
    Definition Classes
    Nameable
  31. def getInstanceCounter: Int
    Definition Classes
    ContextUser
  32. def getMode: Byte
    Attributes
    protected
    Definition Classes
    Nameable
  33. def getName(default: String): String
    Definition Classes
    NameableByComponent → Nameable
  34. def getName(): String
    Definition Classes
    NameableByComponent → Nameable
  35. def getPartialName(): String
    Definition Classes
    Nameable
  36. def getPath(from: Component, to: Component): Seq[Component]
    Definition Classes
    NameableByComponent
  37. def getRefOwnersChain(): List[Any]
    Definition Classes
    OwnableRef
  38. def getScalaLocationLong: String
    Definition Classes
    ScalaLocated
  39. def getScalaLocationShort: String
    Definition Classes
    ScalaLocated
  40. def getScalaTrace(): Throwable
    Definition Classes
    ScalaLocated
  41. val globalData: GlobalData
    Definition Classes
    GlobalDataUser
  42. def hart(hartId: Int): CsrHartApi
    Definition Classes
    CsrService
  43. def hashCode(): Int
    Definition Classes
    OverridedEqualsHashCode → AnyRef → Any
  44. var host: PluginHost
    Definition Classes
    FiberPlugin
  45. val hostLock: Lock
    Definition Classes
    FiberPlugin
  46. def isCompletelyUnnamed: Boolean
    Definition Classes
    Nameable
  47. final def isInstanceOf[T0]: Boolean
    Definition Classes
    Any
  48. final def isNamed: Boolean
    Definition Classes
    Nameable
  49. def isPriorityApplicable(namePriority: Byte): Boolean
    Definition Classes
    Nameable
  50. val isReadingCsrMap: LinkedHashMap[Any, CsrIsReadingCsr]
    Definition Classes
    CsrService
  51. val isReadingHartIdCsrMap: LinkedHashMap[(Int, Any), Bool]
    Definition Classes
    CsrService
  52. def isUnnamed: Boolean
    Definition Classes
    NameableByComponent → Nameable
  53. val layer: LaneLayer
  54. val lockables: LinkedHashSet[() ⇒ Lock]
    Definition Classes
    FiberPlugin
  55. val logic: Handle[Area { ... /* 19 definitions in type refinement */ }]
  56. val name: String
    Definition Classes
    Nameable
  57. val nameableRef: Nameable
    Attributes
    protected
    Definition Classes
    Nameable
    Annotations
    @DontName()
  58. final def ne(arg0: AnyRef): Boolean
    Definition Classes
    AnyRef
  59. final def notify(): Unit
    Definition Classes
    AnyRef
    Annotations
    @native() @IntrinsicCandidate()
  60. final def notifyAll(): Unit
    Definition Classes
    AnyRef
    Annotations
    @native() @IntrinsicCandidate()
  61. def onDecode(csrFilter: Any, priority: Int = 0)(body: ⇒ Unit): ArrayBuffer[CsrSpec]
    Definition Classes
    CsrService
  62. def onRead(csrFilter: Any, onlyOnFire: Boolean)(body: ⇒ Unit): ArrayBuffer[CsrSpec]
    Definition Classes
    CsrService
  63. def onReadToWrite(csrFilter: Any)(body: ⇒ Unit): ArrayBuffer[CsrSpec]
    Definition Classes
    CsrService
  64. val onReadingHartIdMap: LinkedHashMap[Int, Bool]
    Definition Classes
    CsrService
  65. def onWrite(csrFilter: Any, onlyOnFire: Boolean)(body: ⇒ Unit): ArrayBuffer[CsrSpec]
    Definition Classes
    CsrService
  66. val onWritingHartIdMap: LinkedHashMap[Int, Bool]
    Definition Classes
    CsrService
  67. def overrideLocalName(name: String): CsrAccessPlugin.this.type
    Definition Classes
    Nameable
  68. val parentScope: ScopeStatement
    Definition Classes
    ContextUser
  69. var pluginEnabled: Boolean
    Definition Classes
    FiberPlugin
  70. def read(csrAddress: Int, thats: (Int, Data)*): Unit
    Definition Classes
    CsrService
  71. def read[T <: Data](value: T, csrFilter: Any, bitOffset: Int = 0): Unit
    Definition Classes
    CsrService
  72. def readAlways[T <: Data](value: T, bitOffset: Int = 0): Unit
    Definition Classes
    CsrService
  73. def readToWrite[T <: Data](value: T, csrFilter: Any, bitOffset: Int = 0): Unit
    Definition Classes
    CsrService
  74. def readWrite(csrAddress: Int, thats: (Int, Data)*): Unit
    Definition Classes
    CsrService
  75. def readWrite[T <: Data](value: T, csrId: Int, bitOffset: Int = 0): T
    Definition Classes
    CsrService
  76. def readingCsr(csrFilter: Any): Bool
    Definition Classes
    CsrService
  77. def readingHartId(hartId: Int): Bool
    Definition Classes
    CsrService
  78. def readingHartIdCsr(hartId: Int, csrFilter: Any): Bool
    Definition Classes
    CsrService
  79. val reads: ArrayBuffer[CsrOnReadData]
    Definition Classes
    CsrService
  80. val refOwner: RefOwnerType
    Definition Classes
    OwnableRef
    Annotations
    @DontName()
  81. def reflectNames(): Unit
    Definition Classes
    Nameable
  82. def retains(head: Any, tail: Any*): RetainerGroup
    Definition Classes
    FiberPlugin
  83. def retains(that: Seq[Any]): RetainerGroup
    Definition Classes
    FiberPlugin
  84. def rework[T](body: ⇒ T): T
    Definition Classes
    Area
  85. val scalaTrace: Throwable
    Definition Classes
    ScalaLocated
  86. def setCompositeName(nameable: Nameable, postfix: String, namePriority: Byte): CsrAccessPlugin.this.type
    Definition Classes
    Nameable
  87. def setCompositeName(nameable: Nameable, postfix: String, weak: Boolean): CsrAccessPlugin.this.type
    Definition Classes
    Nameable
  88. def setCompositeName(nameable: Nameable, postfix: String): CsrAccessPlugin.this.type
    Definition Classes
    Nameable
  89. def setCompositeName(nameable: Nameable, namePriority: Byte): CsrAccessPlugin.this.type
    Definition Classes
    Nameable
  90. def setCompositeName(nameable: Nameable, weak: Boolean): CsrAccessPlugin.this.type
    Definition Classes
    Nameable
  91. def setCompositeName(nameable: Nameable): CsrAccessPlugin.this.type
    Definition Classes
    Nameable
  92. def setHost(h: PluginHost): Unit
    Definition Classes
    FiberPlugin → Hostable
  93. def setLambdaName(isNameBody: ⇒ Boolean)(nameGen: ⇒ String): CsrAccessPlugin.this.type
    Definition Classes
    Nameable
  94. def setName(name: String, namePriority: Byte): CsrAccessPlugin.this.type
    Definition Classes
    Nameable
  95. def setName(name: String, weak: Boolean): CsrAccessPlugin.this.type
    Definition Classes
    Nameable
  96. def setName(name: String): CsrAccessPlugin.this.type
    Definition Classes
    Nameable
  97. def setNameAsWeak(): CsrAccessPlugin.this.type
    Definition Classes
    Nameable
  98. def setPartialName(name: String, namePriority: Byte, owner: Any): CsrAccessPlugin.this.type
    Definition Classes
    Nameable
  99. def setPartialName(name: String, namePriority: Byte): CsrAccessPlugin.this.type
    Definition Classes
    Nameable
  100. def setPartialName(name: String, weak: Boolean): CsrAccessPlugin.this.type
    Definition Classes
    Nameable
  101. def setPartialName(owner: Nameable, name: String, namePriority: Byte): CsrAccessPlugin.this.type
    Definition Classes
    Nameable
  102. def setPartialName(owner: Nameable, name: String, weak: Boolean): CsrAccessPlugin.this.type
    Definition Classes
    Nameable
  103. def setPartialName(name: String): CsrAccessPlugin.this.type
    Definition Classes
    Nameable
  104. def setPartialName(owner: Nameable, name: String): CsrAccessPlugin.this.type
    Definition Classes
    Nameable
  105. def setPartialName(owner: Nameable): CsrAccessPlugin.this.type
    Definition Classes
    Nameable
  106. def setRefOwner(that: Any): Unit
    Definition Classes
    OwnableRef
  107. def setScalaLocated(source: ScalaLocated): CsrAccessPlugin.this.type
    Definition Classes
    ScalaLocated
  108. def setWeakName(name: String): CsrAccessPlugin.this.type
    Definition Classes
    Nameable
  109. def setupRetain(l: ⇒ Lock): Unit
    Definition Classes
    FiberPlugin
  110. val spec: ArrayBuffer[CsrSpec]
    Definition Classes
    CsrService
  111. val subservices: ArrayBuffer[Any]
    Definition Classes
    FiberPlugin
  112. final def synchronized[T0](arg0: ⇒ T0): T0
    Definition Classes
    AnyRef
  113. def toString(): String
    Definition Classes
    Area → Nameable → AnyRef → Any
  114. val trapNextOnWrite: LinkedHashSet[Any]
    Definition Classes
    CsrService
  115. def unsetName(): CsrAccessPlugin.this.type
    Definition Classes
    Nameable
  116. def valCallback[T](ref: T, name: String): T
    Definition Classes
    ValCallbackRec → ValCallback
  117. def valCallbackOn(ref: Any, name: String, refs: Set[Any]): Unit
    Definition Classes
    ValCallbackRec
  118. def valCallbackRec(obj: Any, name: String): Unit
    Definition Classes
    Area → ValCallbackRec
  119. final def wait(arg0: Long, arg1: Int): Unit
    Definition Classes
    AnyRef
    Annotations
    @throws( ... )
  120. final def wait(arg0: Long): Unit
    Definition Classes
    AnyRef
    Annotations
    @throws( ... ) @native()
  121. final def wait(): Unit
    Definition Classes
    AnyRef
    Annotations
    @throws( ... )
  122. def waitElaborationDone(): Unit
    Definition Classes
    CsrAccessPluginCsrService
  123. def withPrefix(prefix: String): FiberPlugin
    Definition Classes
    FiberPlugin
  124. def write(csrAddress: Int, thats: (Int, Data)*): Unit
    Definition Classes
    CsrService
  125. def write[T <: Data](value: T, csrId: Int, bitOffset: Int = 0): T
    Definition Classes
    CsrService
  126. def writeCancel(csrFilter: Any, cond: Bool): ArrayBuffer[CsrSpec]
    Definition Classes
    CsrService
  127. def writeWhen[T <: Data](value: T, cond: Bool, csrId: Int, bitOffset: Int = 0): T
    Definition Classes
    CsrService
  128. def writingHartId(hartId: Int): Bool
    Definition Classes
    CsrService

Deprecated Value Members

  1. def finalize(): Unit
    Attributes
    protected[lang]
    Definition Classes
    AnyRef
    Annotations
    @throws( classOf[java.lang.Throwable] ) @Deprecated
    Deprecated

Inherited from CsrService

Inherited from FiberPlugin

Inherited from Hostable

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