o

midas.passes.fame

FindDefaultClocks

object FindDefaultClocks extends Transform

In general, multi-clock Golden Gate simulations contain exactly one "hub" model that coordinates the clock domains and has a clock channel. All other non-hub models have a single clock domain.

Before this pass runs, channels (encoded by FAMEChannelConnectionAnnotations) that run between models have no associated clock. The FAME transform expects that all channels that connect to the hub model have an associated clock. This pass builds a graph of clock connectivity between models and uses that to populate the the clock field of inter-model FAMEChannelConnectionAnnotations that are sourced or sinked by the hub model.

FAMEChannelConnectionAnnotations between non-hub models are not changed.

Linear Supertypes
Transform, DependencyAPI[Transform], TransformLike[CircuitState], LazyLogging, AnyRef, Any
Ordering
  1. Alphabetic
  2. By Inheritance
Inherited
  1. FindDefaultClocks
  2. Transform
  3. DependencyAPI
  4. TransformLike
  5. LazyLogging
  6. AnyRef
  7. Any
  1. Hide All
  2. Show All
Visibility
  1. Public
  2. Protected

Type Members

  1. type ClockConnMap = DiGraph[ClockConnNode]
  2. case class ClockConnNode(name: String, clockPort: Option[ReferenceTarget] = None) extends Product with Serializable

    Used to encode clock connectivity.

    Used to encode clock connectivity. The setting of the clockPort param defines two classes of node: - clockPort = None: A non-hub model instance (these have a single clock), so we need not track an additional port reference. - clockPort = Some(RT): Sources and sinks on the hub model. Since the hub has multiple target clocks the clockPort disambiguates the clock of the hub

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. def addDefaultClocks(hubName: String, clockGraph: ClockConnMap)(anno: Annotation): Annotation
  5. final def asInstanceOf[T0]: T0
    Definition Classes
    Any
  6. def clone(): AnyRef
    Attributes
    protected[lang]
    Definition Classes
    AnyRef
    Annotations
    @throws(classOf[java.lang.CloneNotSupportedException]) @native() @IntrinsicCandidate()
  7. final def eq(arg0: AnyRef): Boolean
    Definition Classes
    AnyRef
  8. def equals(arg0: AnyRef): Boolean
    Definition Classes
    AnyRef → Any
  9. def execute(state: CircuitState): CircuitState
    Definition Classes
    FindDefaultClocks → Transform
  10. final def getClass(): Class[_ <: AnyRef]
    Definition Classes
    AnyRef → Any
    Annotations
    @native() @IntrinsicCandidate()
  11. def getDefaultClock(clockGraph: ClockConnMap, satModelInstName: String): ReferenceTarget
  12. def getLogger: Logger
    Definition Classes
    LazyLogging
  13. def getStmts(stmt: Statement): Seq[Statement]
  14. def hashCode(): Int
    Definition Classes
    AnyRef → Any
    Annotations
    @native() @IntrinsicCandidate()
  15. def inputForm: LowForm
    Definition Classes
    FindDefaultClocks → Transform
  16. def invalidates(a: Transform): Boolean
    Definition Classes
    Transform → DependencyAPI
  17. final def isInstanceOf[T0]: Boolean
    Definition Classes
    Any
  18. val logger: Logger
    Attributes
    protected
    Definition Classes
    LazyLogging
  19. def name: String
    Definition Classes
    Transform → TransformLike
  20. final def ne(arg0: AnyRef): Boolean
    Definition Classes
    AnyRef
  21. final def notify(): Unit
    Definition Classes
    AnyRef
    Annotations
    @native() @IntrinsicCandidate()
  22. final def notifyAll(): Unit
    Definition Classes
    AnyRef
    Annotations
    @native() @IntrinsicCandidate()
  23. def optionalPrerequisiteOf: Seq[Dependency[Transform]]
    Definition Classes
    Transform → DependencyAPI
  24. def optionalPrerequisites: Seq[Dependency[Transform]]
    Definition Classes
    Transform → DependencyAPI
  25. def outputForm: LowForm
    Definition Classes
    FindDefaultClocks → Transform
  26. def prerequisites: Seq[Dependency[Transform]]
    Definition Classes
    Transform → DependencyAPI
  27. def recordClockConnection(topTarget: ModuleTarget, defaultClocks: MutableDiGraph[ClockConnNode], hubModel: String)(stmt: Statement): Unit

    By looking at the top-level connects on ClockTypes, build a graph of connectivity that will allow us to tie cliques of models back to a source port on the hub.

  28. def resolveClocksForHubSelfLoops(annos: Seq[Annotation]): Seq[Annotation]
  29. final def runTransform(state: CircuitState): CircuitState
    Definition Classes
    Transform
  30. final def synchronized[T0](arg0: => T0): T0
    Definition Classes
    AnyRef
  31. def toString(): String
    Definition Classes
    AnyRef → Any
  32. def transform(state: CircuitState): CircuitState
    Definition Classes
    Transform → TransformLike
  33. final def wait(arg0: Long, arg1: Int): Unit
    Definition Classes
    AnyRef
    Annotations
    @throws(classOf[java.lang.InterruptedException])
  34. final def wait(arg0: Long): Unit
    Definition Classes
    AnyRef
    Annotations
    @throws(classOf[java.lang.InterruptedException])
  35. final def wait(): Unit
    Definition Classes
    AnyRef
    Annotations
    @throws(classOf[java.lang.InterruptedException])

Deprecated Value Members

  1. def dependents: Seq[Dependency[Transform]]
    Definition Classes
    DependencyAPI
    Annotations
    @deprecated
    Deprecated

    (Since version FIRRTL 1.3) Due to confusion, 'dependents' is being renamed to 'optionalPrerequisiteOf'. Override the latter instead.

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

Inherited from Transform

Inherited from DependencyAPI[Transform]

Inherited from TransformLike[CircuitState]

Inherited from LazyLogging

Inherited from AnyRef

Inherited from Any

Ungrouped