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.
- Alphabetic
- By Inheritance
- FindDefaultClocks
- Transform
- DependencyAPI
- TransformLike
- LazyLogging
- AnyRef
- Any
- Hide All
- Show All
- Public
- Protected
Type Members
- type ClockConnMap = DiGraph[ClockConnNode]
- 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
- final def !=(arg0: Any): Boolean
- Definition Classes
- AnyRef → Any
- final def ##: Int
- Definition Classes
- AnyRef → Any
- final def ==(arg0: Any): Boolean
- Definition Classes
- AnyRef → Any
- def addDefaultClocks(hubName: String, clockGraph: ClockConnMap)(anno: Annotation): Annotation
- final def asInstanceOf[T0]: T0
- Definition Classes
- Any
- def clone(): AnyRef
- Attributes
- protected[lang]
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.CloneNotSupportedException]) @native() @IntrinsicCandidate()
- final def eq(arg0: AnyRef): Boolean
- Definition Classes
- AnyRef
- def equals(arg0: AnyRef): Boolean
- Definition Classes
- AnyRef → Any
- def execute(state: CircuitState): CircuitState
- Definition Classes
- FindDefaultClocks → Transform
- final def getClass(): Class[_ <: AnyRef]
- Definition Classes
- AnyRef → Any
- Annotations
- @native() @IntrinsicCandidate()
- def getDefaultClock(clockGraph: ClockConnMap, satModelInstName: String): ReferenceTarget
- def getLogger: Logger
- Definition Classes
- LazyLogging
- def getStmts(stmt: Statement): Seq[Statement]
- def hashCode(): Int
- Definition Classes
- AnyRef → Any
- Annotations
- @native() @IntrinsicCandidate()
- def inputForm: LowForm
- Definition Classes
- FindDefaultClocks → Transform
- def invalidates(a: Transform): Boolean
- Definition Classes
- Transform → DependencyAPI
- final def isInstanceOf[T0]: Boolean
- Definition Classes
- Any
- val logger: Logger
- Attributes
- protected
- Definition Classes
- LazyLogging
- def name: String
- Definition Classes
- Transform → TransformLike
- final def ne(arg0: AnyRef): Boolean
- Definition Classes
- AnyRef
- final def notify(): Unit
- Definition Classes
- AnyRef
- Annotations
- @native() @IntrinsicCandidate()
- final def notifyAll(): Unit
- Definition Classes
- AnyRef
- Annotations
- @native() @IntrinsicCandidate()
- def optionalPrerequisiteOf: Seq[Dependency[Transform]]
- Definition Classes
- Transform → DependencyAPI
- def optionalPrerequisites: Seq[Dependency[Transform]]
- Definition Classes
- Transform → DependencyAPI
- def outputForm: LowForm
- Definition Classes
- FindDefaultClocks → Transform
- def prerequisites: Seq[Dependency[Transform]]
- Definition Classes
- Transform → DependencyAPI
- 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.
- def resolveClocksForHubSelfLoops(annos: Seq[Annotation]): Seq[Annotation]
- final def runTransform(state: CircuitState): CircuitState
- Definition Classes
- Transform
- final def synchronized[T0](arg0: => T0): T0
- Definition Classes
- AnyRef
- def toString(): String
- Definition Classes
- AnyRef → Any
- def transform(state: CircuitState): CircuitState
- Definition Classes
- Transform → TransformLike
- final def wait(arg0: Long, arg1: Int): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.InterruptedException])
- final def wait(arg0: Long): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.InterruptedException])
- final def wait(): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.InterruptedException])
Deprecated Value Members
- 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.
- def finalize(): Unit
- Attributes
- protected[lang]
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.Throwable]) @Deprecated
- Deprecated