Packages

c

vexiiriscv.schedule

DispatchPlugin

class DispatchPlugin extends FiberPlugin

The role of the dispatch plugin is to : - Collect the instruction exiting the decode pipeline, - Figuring out on which execution lane they could be scheduled (checking for dependencies). If none, then wait for some. - Issue instructions on execution lanes

It is likely one of the hardest plugin to read, as it does a lot of elaboration time analysis to generate the "right" hadware

How to check if a instruction can schedule : - If one of the pipeline which implement its micro op is free - There is no inflight non-bypassed RF write to one of the source operand - There is no scheduling fence - ...

Schedule heuristic : - In priority order, go through the slots - Check which pipeline could schedule it (free && compatible) - Select the pipeline which the highest priority (to avoid using the one which can do load and store, for instance) - If the slot can't be schedule, disable all following ones with same HART_ID

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

Instance Constructors

  1. new DispatchPlugin(dispatchAt: Int, trapLayer: LaneLayer, withBuffer: Boolean)

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 DONT_FLUSH: NamedType[Bool]
  5. val DONT_FLUSH_FROM_LANES: NamedType[Bool]
  6. val FENCE_OLDER: NamedType[Bool]
  7. val MAY_FLUSH: NamedType[Bool]
  8. val _context: Capture
    Definition Classes
    Area
  9. def addDispatchCtx(that: NamedType[_ <: Data]): LinkedHashSet[NamedType[_ <: Data]]
  10. def addService[T](that: T): T
    Definition Classes
    FiberPlugin
  11. val api: Handle[Area { val haltDispatch: spinal.core.Bool }]
  12. final def asInstanceOf[T0]: T0
    Definition Classes
    Any
  13. def awaitBuild(): Unit
    Definition Classes
    FiberPlugin
  14. def buildBefore(l: ⇒ Lock): Unit
    Definition Classes
    FiberPlugin
  15. var buildCount: Int
    Definition Classes
    FiberPlugin
  16. def childNamePriority: Byte
    Definition Classes
    Area
  17. def clone(): AnyRef
    Attributes
    protected[lang]
    Definition Classes
    AnyRef
    Annotations
    @throws( ... ) @native() @IntrinsicCandidate()
  18. def component: Component
    Definition Classes
    ContextUser
  19. var dispatchAt: Int
  20. def during: AnyRef { ... /* 2 definitions in type refinement */ }
    Definition Classes
    FiberPlugin
  21. val elaborationLock: Retainer
  22. final def eq(arg0: AnyRef): Boolean
    Definition Classes
    AnyRef
  23. def equals(obj: Any): Boolean
    Definition Classes
    OverridedEqualsHashCode → AnyRef → Any
  24. def fenceOlder(op: MicroOp): LinkedHashSet[MicroOp]
  25. val fenceOlderOps: LinkedHashSet[MicroOp]
  26. def foreachReflectableNameables(doThat: (Any) ⇒ Unit): Unit
    Definition Classes
    Nameable
  27. final def getClass(): Class[_]
    Definition Classes
    AnyRef → Any
    Annotations
    @native() @IntrinsicCandidate()
  28. def getDisplayName(): String
    Definition Classes
    Nameable
  29. def getInstanceCounter: Int
    Definition Classes
    ContextUser
  30. def getMode: Byte
    Attributes
    protected
    Definition Classes
    Nameable
  31. def getName(default: String): String
    Definition Classes
    NameableByComponent → Nameable
  32. def getName(): String
    Definition Classes
    NameableByComponent → Nameable
  33. def getPartialName(): String
    Definition Classes
    Nameable
  34. def getPath(from: Component, to: Component): Seq[Component]
    Definition Classes
    NameableByComponent
  35. def getRefOwnersChain(): List[Any]
    Definition Classes
    OwnableRef
  36. def getScalaLocationLong: String
    Definition Classes
    ScalaLocated
  37. def getScalaLocationShort: String
    Definition Classes
    ScalaLocated
  38. def getScalaTrace(): Throwable
    Definition Classes
    ScalaLocated
  39. val globalData: GlobalData
    Definition Classes
    GlobalDataUser
  40. def haltDispatchWhen(cond: Bool): Bool
  41. def hashCode(): Int
    Definition Classes
    OverridedEqualsHashCode → AnyRef → Any
  42. val hmKeys: LinkedHashSet[NamedType[_ <: Data]]
  43. var host: PluginHost
    Definition Classes
    FiberPlugin
  44. val hostLock: Lock
    Definition Classes
    FiberPlugin
  45. def isCompletelyUnnamed: Boolean
    Definition Classes
    Nameable
  46. final def isInstanceOf[T0]: Boolean
    Definition Classes
    Any
  47. final def isNamed: Boolean
    Definition Classes
    Nameable
  48. def isPriorityApplicable(namePriority: Byte): Boolean
    Definition Classes
    Nameable
  49. def isUnnamed: Boolean
    Definition Classes
    NameableByComponent → Nameable
  50. val lockables: LinkedHashSet[() ⇒ Lock]
    Definition Classes
    FiberPlugin
  51. val logic: Handle[Area { ... /* 58 definitions in type refinement */ }]
  52. val name: String
    Definition Classes
    Nameable
  53. val nameableRef: Nameable
    Attributes
    protected
    Definition Classes
    Nameable
    Annotations
    @DontName()
  54. final def ne(arg0: AnyRef): Boolean
    Definition Classes
    AnyRef
  55. final def notify(): Unit
    Definition Classes
    AnyRef
    Annotations
    @native() @IntrinsicCandidate()
  56. final def notifyAll(): Unit
    Definition Classes
    AnyRef
    Annotations
    @native() @IntrinsicCandidate()
  57. def overrideLocalName(name: String): DispatchPlugin.this.type
    Definition Classes
    Nameable
  58. val parentScope: ScopeStatement
    Definition Classes
    ContextUser
  59. var pluginEnabled: Boolean
    Definition Classes
    FiberPlugin
  60. val refOwner: RefOwnerType
    Definition Classes
    OwnableRef
    Annotations
    @DontName()
  61. def reflectNames(): Unit
    Definition Classes
    Nameable
  62. def retains(head: Any, tail: Any*): RetainerGroup
    Definition Classes
    FiberPlugin
  63. def retains(that: Seq[Any]): RetainerGroup
    Definition Classes
    FiberPlugin
  64. def rework[T](body: ⇒ T): T
    Definition Classes
    Area
  65. val scalaTrace: Throwable
    Definition Classes
    ScalaLocated
  66. def setCompositeName(nameable: Nameable, postfix: String, namePriority: Byte): DispatchPlugin.this.type
    Definition Classes
    Nameable
  67. def setCompositeName(nameable: Nameable, postfix: String, weak: Boolean): DispatchPlugin.this.type
    Definition Classes
    Nameable
  68. def setCompositeName(nameable: Nameable, postfix: String): DispatchPlugin.this.type
    Definition Classes
    Nameable
  69. def setCompositeName(nameable: Nameable, namePriority: Byte): DispatchPlugin.this.type
    Definition Classes
    Nameable
  70. def setCompositeName(nameable: Nameable, weak: Boolean): DispatchPlugin.this.type
    Definition Classes
    Nameable
  71. def setCompositeName(nameable: Nameable): DispatchPlugin.this.type
    Definition Classes
    Nameable
  72. def setHost(h: PluginHost): Unit
    Definition Classes
    FiberPlugin → Hostable
  73. def setLambdaName(isNameBody: ⇒ Boolean)(nameGen: ⇒ String): DispatchPlugin.this.type
    Definition Classes
    Nameable
  74. def setName(name: String, namePriority: Byte): DispatchPlugin.this.type
    Definition Classes
    Nameable
  75. def setName(name: String, weak: Boolean): DispatchPlugin.this.type
    Definition Classes
    Nameable
  76. def setName(name: String): DispatchPlugin.this.type
    Definition Classes
    Nameable
  77. def setNameAsWeak(): DispatchPlugin.this.type
    Definition Classes
    Nameable
  78. def setPartialName(name: String, namePriority: Byte, owner: Any): DispatchPlugin.this.type
    Definition Classes
    Nameable
  79. def setPartialName(name: String, namePriority: Byte): DispatchPlugin.this.type
    Definition Classes
    Nameable
  80. def setPartialName(name: String, weak: Boolean): DispatchPlugin.this.type
    Definition Classes
    Nameable
  81. def setPartialName(owner: Nameable, name: String, namePriority: Byte): DispatchPlugin.this.type
    Definition Classes
    Nameable
  82. def setPartialName(owner: Nameable, name: String, weak: Boolean): DispatchPlugin.this.type
    Definition Classes
    Nameable
  83. def setPartialName(name: String): DispatchPlugin.this.type
    Definition Classes
    Nameable
  84. def setPartialName(owner: Nameable, name: String): DispatchPlugin.this.type
    Definition Classes
    Nameable
  85. def setPartialName(owner: Nameable): DispatchPlugin.this.type
    Definition Classes
    Nameable
  86. def setRefOwner(that: Any): Unit
    Definition Classes
    OwnableRef
  87. def setScalaLocated(source: ScalaLocated): DispatchPlugin.this.type
    Definition Classes
    ScalaLocated
  88. def setWeakName(name: String): DispatchPlugin.this.type
    Definition Classes
    Nameable
  89. def setupRetain(l: ⇒ Lock): Unit
    Definition Classes
    FiberPlugin
  90. val subservices: ArrayBuffer[Any]
    Definition Classes
    FiberPlugin
  91. final def synchronized[T0](arg0: ⇒ T0): T0
    Definition Classes
    AnyRef
  92. def toString(): String
    Definition Classes
    Area → Nameable → AnyRef → Any
  93. var trapLayer: LaneLayer
  94. def unsetName(): DispatchPlugin.this.type
    Definition Classes
    Nameable
  95. def valCallback[T](ref: T, name: String): T
    Definition Classes
    ValCallbackRec → ValCallback
  96. def valCallbackOn(ref: Any, name: String, refs: Set[Any]): Unit
    Definition Classes
    ValCallbackRec
  97. def valCallbackRec(obj: Any, name: String): Unit
    Definition Classes
    Area → ValCallbackRec
  98. final def wait(arg0: Long, arg1: Int): Unit
    Definition Classes
    AnyRef
    Annotations
    @throws( ... )
  99. final def wait(arg0: Long): Unit
    Definition Classes
    AnyRef
    Annotations
    @throws( ... ) @native()
  100. final def wait(): Unit
    Definition Classes
    AnyRef
    Annotations
    @throws( ... )
  101. var withBuffer: Boolean
  102. def withPrefix(prefix: String): FiberPlugin
    Definition Classes
    FiberPlugin

Deprecated Value Members

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

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