c

vexiiriscv.execute.lsu

LsuCachelessPlugin

class LsuCachelessPlugin extends FiberPlugin with DBusAccessService with LsuCachelessBusProvider

Implements an LSU without any cache. The tricky thing about this implementation, is the withSpeculativeLoadFlush parameter, which allows the plugin to speculatively emit non-io memory load to the memory system, even if the load result may be trashed away.

The plugin does support MMU aswell as atomic instruction. This allows to run linux without data cache :D. This is usefull from a verification perspective.

To get good timings on FPGA in a SoC, consider setting : - forkAt = 1 - joinAt = 2

This allows the memory bus CMD to have very relaxed timings by avoiding the XLEN bits adder aswell as the PMA data path. The down side is that the memory bus respons data path timings are stressed, but as this only impact the data path (no control path), it seems to be generaly better.

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

Instance Constructors

  1. new LsuCachelessPlugin(layer: LaneLayer, withAmo: Boolean, withSpeculativeLoadFlush: Boolean, translationStorageParameter: Any, translationPortParameter: Any, pmpPortParameter: Any, addressAt: Int = 0, triggerAt: Int = 0, pmaAt: Int = 0, forkAt: Int = 0, joinAt: Int = 1, wbAt: Int = 2)

Type Members

  1. abstract type RefOwnerType
    Definition Classes
    OwnableRef

Value Members

  1. val FENCE: NamedType[Bool]
  2. val WITH_ACCESS: NamedType[Bool]
  3. val WITH_RSP: NamedType[Bool]
  4. val _context: Capture
    Definition Classes
    Area
  5. def accessRefillCount: Int
    Definition Classes
    LsuCachelessPluginDBusAccessService
  6. val accessRetainer: Retainer
    Definition Classes
    DBusAccessService
  7. def accessWake: Bits
    Definition Classes
    LsuCachelessPluginDBusAccessService
  8. def addService[T](that: T): T
    Definition Classes
    FiberPlugin
  9. var addressAt: Int
  10. def awaitBuild(): Unit
    Definition Classes
    FiberPlugin
  11. def bufferSize: Int
  12. def buildBefore(l: ⇒ Lock): Unit
    Definition Classes
    FiberPlugin
  13. var buildCount: Int
    Definition Classes
    FiberPlugin
  14. def busParam: LsuCachelessBusParam
  15. def childNamePriority: Byte
    Definition Classes
    Area
  16. def component: Component
    Definition Classes
    ContextUser
  17. val dbusAccesses: ArrayBuffer[DBusAccess]
    Definition Classes
    DBusAccessService
  18. def during: AnyRef { ... /* 2 definitions in type refinement */ }
    Definition Classes
    FiberPlugin
  19. def equals(obj: Any): Boolean
    Definition Classes
    OverridedEqualsHashCode → AnyRef → Any
  20. def foreachReflectableNameables(doThat: (Any) ⇒ Unit): Unit
    Definition Classes
    Nameable
  21. var forkAt: Int
  22. def getDisplayName(): String
    Definition Classes
    Nameable
  23. def getInstanceCounter: Int
    Definition Classes
    ContextUser
  24. def getLsuCachelessBus(): LsuCachelessBus
  25. def getName(default: String): String
    Definition Classes
    NameableByComponent → Nameable
  26. def getName(): String
    Definition Classes
    NameableByComponent → Nameable
  27. def getPartialName(): String
    Definition Classes
    Nameable
  28. def getPath(from: Component, to: Component): Seq[Component]
    Definition Classes
    NameableByComponent
  29. def getRefOwnersChain(): List[Any]
    Definition Classes
    OwnableRef
  30. def getScalaLocationLong: String
    Definition Classes
    ScalaLocated
  31. def getScalaLocationShort: String
    Definition Classes
    ScalaLocated
  32. def getScalaTrace(): Throwable
    Definition Classes
    ScalaLocated
  33. val globalData: GlobalData
    Definition Classes
    GlobalDataUser
  34. def hashCode(): Int
    Definition Classes
    OverridedEqualsHashCode → AnyRef → Any
  35. var host: PluginHost
    Definition Classes
    FiberPlugin
  36. val hostLock: Lock
    Definition Classes
    FiberPlugin
  37. def isCompletelyUnnamed: Boolean
    Definition Classes
    Nameable
  38. final def isNamed: Boolean
    Definition Classes
    Nameable
  39. def isPriorityApplicable(namePriority: Byte): Boolean
    Definition Classes
    Nameable
  40. def isUnnamed: Boolean
    Definition Classes
    NameableByComponent → Nameable
  41. var joinAt: Int
  42. var layer: LaneLayer
  43. val lockables: LinkedHashSet[() ⇒ Lock]
    Definition Classes
    FiberPlugin
  44. val logic: Handle[Area { ... /* 35 definitions in type refinement */ }]
  45. val name: String
    Definition Classes
    Nameable
  46. def newDBusAccess(): DBusAccess
    Definition Classes
    DBusAccessService
  47. def overrideLocalName(name: String): LsuCachelessPlugin.this.type
    Definition Classes
    Nameable
  48. val parentScope: ScopeStatement
    Definition Classes
    ContextUser
  49. var pluginEnabled: Boolean
    Definition Classes
    FiberPlugin
  50. var pmaAt: Int
  51. val pmaBuilder: Handle[PmaLogic]
  52. var pmpPortParameter: Any
  53. val refOwner: RefOwnerType
    Definition Classes
    OwnableRef
    Annotations
    @DontName()
  54. def reflectNames(): Unit
    Definition Classes
    Nameable
  55. val regions: Handle[ArrayBuffer[PmaRegion]]
  56. def retains(head: Any, tail: Any*): RetainerGroup
    Definition Classes
    FiberPlugin
  57. def retains(that: Seq[Any]): RetainerGroup
    Definition Classes
    FiberPlugin
  58. def rework[T](body: ⇒ T): T
    Definition Classes
    Area
  59. val scalaTrace: Throwable
    Definition Classes
    ScalaLocated
  60. def setCompositeName(nameable: Nameable, postfix: String, namePriority: Byte): LsuCachelessPlugin.this.type
    Definition Classes
    Nameable
  61. def setCompositeName(nameable: Nameable, postfix: String, weak: Boolean): LsuCachelessPlugin.this.type
    Definition Classes
    Nameable
  62. def setCompositeName(nameable: Nameable, postfix: String): LsuCachelessPlugin.this.type
    Definition Classes
    Nameable
  63. def setCompositeName(nameable: Nameable, namePriority: Byte): LsuCachelessPlugin.this.type
    Definition Classes
    Nameable
  64. def setCompositeName(nameable: Nameable, weak: Boolean): LsuCachelessPlugin.this.type
    Definition Classes
    Nameable
  65. def setCompositeName(nameable: Nameable): LsuCachelessPlugin.this.type
    Definition Classes
    Nameable
  66. def setHost(h: PluginHost): Unit
    Definition Classes
    FiberPlugin → Hostable
  67. def setLambdaName(isNameBody: ⇒ Boolean)(nameGen: ⇒ String): LsuCachelessPlugin.this.type
    Definition Classes
    Nameable
  68. def setName(name: String, namePriority: Byte): LsuCachelessPlugin.this.type
    Definition Classes
    Nameable
  69. def setName(name: String, weak: Boolean): LsuCachelessPlugin.this.type
    Definition Classes
    Nameable
  70. def setName(name: String): LsuCachelessPlugin.this.type
    Definition Classes
    Nameable
  71. def setNameAsWeak(): LsuCachelessPlugin.this.type
    Definition Classes
    Nameable
  72. def setPartialName(name: String, namePriority: Byte, owner: Any): LsuCachelessPlugin.this.type
    Definition Classes
    Nameable
  73. def setPartialName(name: String, namePriority: Byte): LsuCachelessPlugin.this.type
    Definition Classes
    Nameable
  74. def setPartialName(name: String, weak: Boolean): LsuCachelessPlugin.this.type
    Definition Classes
    Nameable
  75. def setPartialName(owner: Nameable, name: String, namePriority: Byte): LsuCachelessPlugin.this.type
    Definition Classes
    Nameable
  76. def setPartialName(owner: Nameable, name: String, weak: Boolean): LsuCachelessPlugin.this.type
    Definition Classes
    Nameable
  77. def setPartialName(name: String): LsuCachelessPlugin.this.type
    Definition Classes
    Nameable
  78. def setPartialName(owner: Nameable, name: String): LsuCachelessPlugin.this.type
    Definition Classes
    Nameable
  79. def setPartialName(owner: Nameable): LsuCachelessPlugin.this.type
    Definition Classes
    Nameable
  80. def setRefOwner(that: Any): Unit
    Definition Classes
    OwnableRef
  81. def setScalaLocated(source: ScalaLocated): LsuCachelessPlugin.this.type
    Definition Classes
    ScalaLocated
  82. def setWeakName(name: String): LsuCachelessPlugin.this.type
    Definition Classes
    Nameable
  83. def setupRetain(l: ⇒ Lock): Unit
    Definition Classes
    FiberPlugin
  84. val subservices: ArrayBuffer[Any]
    Definition Classes
    FiberPlugin
  85. def toString(): String
    Definition Classes
    Area → Nameable → AnyRef → Any
  86. var translationPortParameter: Any
  87. var translationStorageParameter: Any
  88. var triggerAt: Int
  89. def unsetName(): LsuCachelessPlugin.this.type
    Definition Classes
    Nameable
  90. def valCallback[T](ref: T, name: String): T
    Definition Classes
    ValCallbackRec → ValCallback
  91. def valCallbackOn(ref: Any, name: String, refs: Set[Any]): Unit
    Definition Classes
    ValCallbackRec
  92. def valCallbackRec(obj: Any, name: String): Unit
    Definition Classes
    Area → ValCallbackRec
  93. var wbAt: Int
  94. var withAmo: Boolean
  95. def withPrefix(prefix: String): FiberPlugin
    Definition Classes
    FiberPlugin
  96. var withSpeculativeLoadFlush: Boolean