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
Ordering
- Alphabetic
- By Inheritance
Inherited
- CsrAccessPlugin
- CsrService
- FiberPlugin
- Hostable
- Area
- OverridedEqualsHashCode
- ValCallbackRec
- ValCallback
- NameableByComponent
- Nameable
- ContextUser
- ScalaLocated
- GlobalDataUser
- OwnableRef
- AnyRef
- Any
- Hide All
- Show All
Visibility
- Public
- All
Instance Constructors
Type Members
-
abstract
type
RefOwnerType
- Definition Classes
- OwnableRef
Value Members
- val CSR_ADDRESS: NamedType[UInt]
- val CSR_CLEAR: NamedType[Bool]
- val CSR_IMM: NamedType[Bool]
- val CSR_MASK: NamedType[Bool]
- val CSR_READ: NamedType[Bool]
- val CSR_WRITE: NamedType[Bool]
- val SEL: NamedType[Bool]
- val TO_RF: NamedType[Bits]
-
val
_context: Capture
- Definition Classes
- Area
-
def
addService[T](that: T): T
- Definition Classes
- FiberPlugin
-
def
allowCsr(csrFilter: Any): ArrayBuffer[CsrSpec]
- Definition Classes
- CsrService
-
def
awaitBuild(): Unit
- Definition Classes
- FiberPlugin
-
def
buildBefore(l: ⇒ Lock): Unit
- Definition Classes
- FiberPlugin
-
var
buildCount: Int
- Definition Classes
- FiberPlugin
-
val
bus: Handle[CsrBus]
- Definition Classes
- CsrAccessPlugin → CsrService
-
def
childNamePriority: Byte
- Definition Classes
- Area
-
def
component: Component
- Definition Classes
- ContextUser
-
val
csrLock: Retainer
- Definition Classes
- CsrService
-
def
during: AnyRef { ... /* 2 definitions in type refinement */ }
- Definition Classes
- FiberPlugin
-
def
equals(obj: Any): Boolean
- Definition Classes
- OverridedEqualsHashCode → AnyRef → Any
-
def
flushOnWrite(csrFilter: Any): Unit
- Definition Classes
- CsrService
-
def
foreachReflectableNameables(doThat: (Any) ⇒ Unit): Unit
- Definition Classes
- Nameable
-
def
getDisplayName(): String
- Definition Classes
- Nameable
-
def
getInstanceCounter: Int
- Definition Classes
- ContextUser
-
def
getName(default: String): String
- Definition Classes
- NameableByComponent → Nameable
-
def
getName(): String
- Definition Classes
- NameableByComponent → Nameable
-
def
getPartialName(): String
- Definition Classes
- Nameable
-
def
getPath(from: Component, to: Component): Seq[Component]
- Definition Classes
- NameableByComponent
-
def
getRefOwnersChain(): List[Any]
- Definition Classes
- OwnableRef
-
def
getScalaLocationLong: String
- Definition Classes
- ScalaLocated
-
def
getScalaLocationShort: String
- Definition Classes
- ScalaLocated
-
def
getScalaTrace(): Throwable
- Definition Classes
- ScalaLocated
-
val
globalData: GlobalData
- Definition Classes
- GlobalDataUser
-
def
hart(hartId: Int): CsrHartApi
- Definition Classes
- CsrService
-
def
hashCode(): Int
- Definition Classes
- OverridedEqualsHashCode → AnyRef → Any
-
var
host: PluginHost
- Definition Classes
- FiberPlugin
-
val
hostLock: Lock
- Definition Classes
- FiberPlugin
-
def
isCompletelyUnnamed: Boolean
- Definition Classes
- Nameable
-
final
def
isNamed: Boolean
- Definition Classes
- Nameable
-
def
isPriorityApplicable(namePriority: Byte): Boolean
- Definition Classes
- Nameable
-
val
isReadingCsrMap: LinkedHashMap[Any, CsrIsReadingCsr]
- Definition Classes
- CsrService
-
val
isReadingHartIdCsrMap: LinkedHashMap[(Int, Any), Bool]
- Definition Classes
- CsrService
-
def
isUnnamed: Boolean
- Definition Classes
- NameableByComponent → Nameable
- val layer: LaneLayer
-
val
lockables: LinkedHashSet[() ⇒ Lock]
- Definition Classes
- FiberPlugin
- val logic: Handle[Area { ... /* 19 definitions in type refinement */ }]
-
val
name: String
- Definition Classes
- Nameable
-
def
onDecode(csrFilter: Any, priority: Int = 0)(body: ⇒ Unit): ArrayBuffer[CsrSpec]
- Definition Classes
- CsrService
-
def
onRead(csrFilter: Any, onlyOnFire: Boolean)(body: ⇒ Unit): ArrayBuffer[CsrSpec]
- Definition Classes
- CsrService
-
def
onReadToWrite(csrFilter: Any)(body: ⇒ Unit): ArrayBuffer[CsrSpec]
- Definition Classes
- CsrService
-
val
onReadingHartIdMap: LinkedHashMap[Int, Bool]
- Definition Classes
- CsrService
-
def
onWrite(csrFilter: Any, onlyOnFire: Boolean)(body: ⇒ Unit): ArrayBuffer[CsrSpec]
- Definition Classes
- CsrService
-
val
onWritingHartIdMap: LinkedHashMap[Int, Bool]
- Definition Classes
- CsrService
-
def
overrideLocalName(name: String): CsrAccessPlugin.this.type
- Definition Classes
- Nameable
-
val
parentScope: ScopeStatement
- Definition Classes
- ContextUser
-
var
pluginEnabled: Boolean
- Definition Classes
- FiberPlugin
-
def
read(csrAddress: Int, thats: (Int, Data)*): Unit
- Definition Classes
- CsrService
-
def
read[T <: Data](value: T, csrFilter: Any, bitOffset: Int = 0): Unit
- Definition Classes
- CsrService
-
def
readAlways[T <: Data](value: T, bitOffset: Int = 0): Unit
- Definition Classes
- CsrService
-
def
readToWrite[T <: Data](value: T, csrFilter: Any, bitOffset: Int = 0): Unit
- Definition Classes
- CsrService
-
def
readWrite(csrAddress: Int, thats: (Int, Data)*): Unit
- Definition Classes
- CsrService
-
def
readWrite[T <: Data](value: T, csrId: Int, bitOffset: Int = 0): T
- Definition Classes
- CsrService
-
def
readingCsr(csrFilter: Any): Bool
- Definition Classes
- CsrService
-
def
readingHartId(hartId: Int): Bool
- Definition Classes
- CsrService
-
def
readingHartIdCsr(hartId: Int, csrFilter: Any): Bool
- Definition Classes
- CsrService
-
val
reads: ArrayBuffer[CsrOnReadData]
- Definition Classes
- CsrService
-
val
refOwner: RefOwnerType
- Definition Classes
- OwnableRef
- Annotations
- @DontName()
-
def
reflectNames(): Unit
- Definition Classes
- Nameable
-
def
retains(head: Any, tail: Any*): RetainerGroup
- Definition Classes
- FiberPlugin
-
def
retains(that: Seq[Any]): RetainerGroup
- Definition Classes
- FiberPlugin
-
def
rework[T](body: ⇒ T): T
- Definition Classes
- Area
-
val
scalaTrace: Throwable
- Definition Classes
- ScalaLocated
-
def
setCompositeName(nameable: Nameable, postfix: String, namePriority: Byte): CsrAccessPlugin.this.type
- Definition Classes
- Nameable
-
def
setCompositeName(nameable: Nameable, postfix: String, weak: Boolean): CsrAccessPlugin.this.type
- Definition Classes
- Nameable
-
def
setCompositeName(nameable: Nameable, postfix: String): CsrAccessPlugin.this.type
- Definition Classes
- Nameable
-
def
setCompositeName(nameable: Nameable, namePriority: Byte): CsrAccessPlugin.this.type
- Definition Classes
- Nameable
-
def
setCompositeName(nameable: Nameable, weak: Boolean): CsrAccessPlugin.this.type
- Definition Classes
- Nameable
-
def
setCompositeName(nameable: Nameable): CsrAccessPlugin.this.type
- Definition Classes
- Nameable
-
def
setHost(h: PluginHost): Unit
- Definition Classes
- FiberPlugin → Hostable
-
def
setLambdaName(isNameBody: ⇒ Boolean)(nameGen: ⇒ String): CsrAccessPlugin.this.type
- Definition Classes
- Nameable
-
def
setName(name: String, namePriority: Byte): CsrAccessPlugin.this.type
- Definition Classes
- Nameable
-
def
setName(name: String, weak: Boolean): CsrAccessPlugin.this.type
- Definition Classes
- Nameable
-
def
setName(name: String): CsrAccessPlugin.this.type
- Definition Classes
- Nameable
-
def
setNameAsWeak(): CsrAccessPlugin.this.type
- Definition Classes
- Nameable
-
def
setPartialName(name: String, namePriority: Byte, owner: Any): CsrAccessPlugin.this.type
- Definition Classes
- Nameable
-
def
setPartialName(name: String, namePriority: Byte): CsrAccessPlugin.this.type
- Definition Classes
- Nameable
-
def
setPartialName(name: String, weak: Boolean): CsrAccessPlugin.this.type
- Definition Classes
- Nameable
-
def
setPartialName(owner: Nameable, name: String, namePriority: Byte): CsrAccessPlugin.this.type
- Definition Classes
- Nameable
-
def
setPartialName(owner: Nameable, name: String, weak: Boolean): CsrAccessPlugin.this.type
- Definition Classes
- Nameable
-
def
setPartialName(name: String): CsrAccessPlugin.this.type
- Definition Classes
- Nameable
-
def
setPartialName(owner: Nameable, name: String): CsrAccessPlugin.this.type
- Definition Classes
- Nameable
-
def
setPartialName(owner: Nameable): CsrAccessPlugin.this.type
- Definition Classes
- Nameable
-
def
setRefOwner(that: Any): Unit
- Definition Classes
- OwnableRef
-
def
setScalaLocated(source: ScalaLocated): CsrAccessPlugin.this.type
- Definition Classes
- ScalaLocated
-
def
setWeakName(name: String): CsrAccessPlugin.this.type
- Definition Classes
- Nameable
-
def
setupRetain(l: ⇒ Lock): Unit
- Definition Classes
- FiberPlugin
-
val
spec: ArrayBuffer[CsrSpec]
- Definition Classes
- CsrService
-
val
subservices: ArrayBuffer[Any]
- Definition Classes
- FiberPlugin
-
def
toString(): String
- Definition Classes
- Area → Nameable → AnyRef → Any
-
val
trapNextOnWrite: LinkedHashSet[Any]
- Definition Classes
- CsrService
-
def
unsetName(): CsrAccessPlugin.this.type
- Definition Classes
- Nameable
-
def
valCallback[T](ref: T, name: String): T
- Definition Classes
- ValCallbackRec → ValCallback
-
def
valCallbackOn(ref: Any, name: String, refs: Set[Any]): Unit
- Definition Classes
- ValCallbackRec
-
def
valCallbackRec(obj: Any, name: String): Unit
- Definition Classes
- Area → ValCallbackRec
-
def
waitElaborationDone(): Unit
- Definition Classes
- CsrAccessPlugin → CsrService
-
def
withPrefix(prefix: String): FiberPlugin
- Definition Classes
- FiberPlugin
-
def
write(csrAddress: Int, thats: (Int, Data)*): Unit
- Definition Classes
- CsrService
-
def
write[T <: Data](value: T, csrId: Int, bitOffset: Int = 0): T
- Definition Classes
- CsrService
-
def
writeCancel(csrFilter: Any, cond: Bool): ArrayBuffer[CsrSpec]
- Definition Classes
- CsrService
-
def
writeWhen[T <: Data](value: T, cond: Bool, csrId: Int, bitOffset: Int = 0): T
- Definition Classes
- CsrService
-
def
writingHartId(hartId: Int): Bool
- Definition Classes
- CsrService