package fame
- Alphabetic
- By Inheritance
- fame
- AnyRef
- Any
- Hide All
- Show All
- Public
- Protected
Type Members
- sealed trait BinaryBooleanOp extends AnyRef
- class ChannelExcision extends Transform
- trait ChannelFlow extends AnyRef
- trait ClockChannel extends AnyRef
- class Decoupled extends AnyRef
- case class DecoupledForwardChannel(readySink: Option[ReferenceTarget], validSource: Option[ReferenceTarget], readySource: Option[ReferenceTarget], validSink: Option[ReferenceTarget]) extends FAMEChannelInfo with Product with Serializable
Indicates that a channel connection is the forward (valid) half of a decoupled target connection.
Indicates that a channel connection is the forward (valid) half of a decoupled target connection.
- readySink
sink port component of the corresponding reverse channel
- validSource
valid port component from this channel's sources
- readySource
source port component of the corresponding reverse channel
- validSink
valid port component from this channel's sinks
- Note
(readySink, validSource) are on one model, (readySource, validSink) on the other
- class EmitAndWrapRAMModels extends Transform
- class EmitFAMEAnnotations extends Transform
A pass that dumps all FAME annotations to a file for debugging.
- class ExtractModel extends Transform
- trait FAME1Channel extends AnyRef
************ PRECONDITIONS: ************* 1.) Ports do not have aggregate types (easy to support if necessary) 2.) There are no collisions among input/output channel names
- case class FAME1ClockChannel(name: String, ports: Seq[Port], clockInfo: Seq[RationalClock], clockMFMRs: Seq[Int]) extends FAME1Channel with InputChannel with HasModelPort with ClockChannel with Product with Serializable
- trait FAME1DataChannel extends FAME1Channel with HasModelPort
- case class FAME1InputChannel(name: String, clockDomainEnable: Expression, ports: Seq[Port], firedReg: DefRegister) extends FAME1DataChannel with InputChannel with Product with Serializable
- case class FAME1OutputChannel(name: String, clockDomainEnable: Expression, ports: Seq[Port], firedReg: DefRegister) extends FAME1DataChannel with Product with Serializable
- case class FAMEChannelConnectionAnnotation(globalName: String, channelInfo: FAMEChannelInfo, clock: Option[ReferenceTarget], sources: Option[Seq[ReferenceTarget]], sinks: Option[Seq[ReferenceTarget]]) extends Annotation with FAMEAnnotation with HasSerializationHints with Product with Serializable
An annotation that describes the top-level connectivity of channels on different model instances.
An annotation that describes the top-level connectivity of channels on different model instances.
- globalName
a globally unique name for this channel connection
- channelInfo
describes the type of the channel (Wire, Forward/Reverse Decoupled)
- clock
the *source* of the clock (if any) associated with this channel
- Note
The clock source must be a port on the model side of the channel
- case class FAMEChannelFanoutAnnotation(channelNames: Seq[String]) extends NoTargetAnnotation with FAMEAnnotation with Product with Serializable
An annotation that lables a set of FAMEChannelConnectionAnnotations as originating from the same source.
An annotation that lables a set of FAMEChannelConnectionAnnotations as originating from the same source. For channels sourced by a model (non-bridge) FAMEChannelConnectionAnnotations that fanout should share identical sources. However, channels sourced by bridge currently have their sources param set to None, and so this annotation is necessary to re-associate them.
- channelNames
The list of fanout channels
- sealed trait FAMEChannelInfo extends AnyRef
Describes the type of the channel (Wire, Forward/Reverse Decoupled)
- case class FAMEChannelPortsAnnotation(localName: String, clockPort: Option[ReferenceTarget], ports: Seq[ReferenceTarget]) extends Annotation with FAMEAnnotation with Product with Serializable
An annotation that describes the ports that constitute one channel from the perspective of a particular module that will be replaced by a simulation model.
An annotation that describes the ports that constitute one channel from the perspective of a particular module that will be replaced by a simulation model. Note that this describes the channels as they appear locally from within the module, so this annotation will apply to *all* instances of that module.
Upon creation, this annotation is associated with a particular target RTL module M that will eventually be transformed into a FAME model. This module must only be instantiated at the top level.
- localName
refers to the name of the channel within the scope of the eventual FAME model. This will be used as the channel’s port name in the model. It will also be used to identify microarchitectural state associated with the channel
- ports
a list of the ports that are grouped into the channel. The ReferenceTargets should be rooted at M, since this information is local to the module. This is also what associates the annotation with a given module M
- class FAMEDefaults extends Transform
Assumes:
Assumes:
- AQB form (target module hierachy matches eventually LI-BDN graph, with connectivity still in place.)
- Only extant FCCAs are on top-level I/O
Run after ExtractModel Label all unbound top-level ports as wire channels Label *all* model-to-model connections as wire channels Label all children of the top model to be FAME1 transformed
- abstract class FAMEGlobalSignal extends SingleTargetAnnotation[ReferenceTarget] with FAMEAnnotation
- case class FAMEHostClock(target: ReferenceTarget) extends FAMEGlobalSignal with Product with Serializable
- case class FAMEHostReset(target: ReferenceTarget) extends FAMEGlobalSignal with Product with Serializable
- class FAMETransform extends Transform
- case class FAMETransformAnnotation(target: ModuleTarget) extends SingleTargetAnnotation[ModuleTarget] with FAMEAnnotation with Product with Serializable
Indicates that a particular target module from the "AQB" canonical form should be transformed to a FAME model.
Indicates that a particular target module from the "AQB" canonical form should be transformed to a FAME model.
- target
Points to the target module to be transformed. Since this is a ModuleTarget, all instances at the top level will be transformed identically.
- trait HasModelPort extends AnyRef
- class InferModelPorts extends Transform
- trait InputChannel extends AnyRef
- trait IsMemoryPort extends AnyRef
************ PRECONDITIONS: ************* 1.) FAME1 Tranform has been run on all models
- class LabelSRAMModels extends Transform
- abstract class MemPortAnnotation extends Annotation with FAMEAnnotation
- case class ModelReadPort(data: ReferenceTarget, addr: ReferenceTarget, en: ReferenceTarget) extends MemPortAnnotation with Product with Serializable
- case class ModelReadWritePort(wmode: ReferenceTarget, rdata: ReferenceTarget, wdata: ReferenceTarget, wmask: ReferenceTarget, addr: ReferenceTarget, en: ReferenceTarget) extends MemPortAnnotation with Product with Serializable
- case class ModelWritePort(data: ReferenceTarget, mask: ReferenceTarget, addr: ReferenceTarget, en: ReferenceTarget) extends MemPortAnnotation with Product with Serializable
- case class PipeChannel(latency: Int) extends FAMEChannelInfo with Product with Serializable
Indicates that a channel connection is a pipe with <latency> register stages Setting latency = 0 models a wire
Indicates that a channel connection is a pipe with <latency> register stages Setting latency = 0 models a wire
TODO: How to handle registers that are reset? Add an Option[RT]?
- class PromoteSubmodule extends Transform
Takes PromoteSubmodule annotations for instantiations and causes each corresponding instance to be removed; ports are added to the parent module and the submodule is added as a peer instance to all modules instantiating the parent module.
Takes PromoteSubmodule annotations for instantiations and causes each corresponding instance to be removed; ports are added to the parent module and the submodule is added as a peer instance to all modules instantiating the parent module.
Module nomenclature: Grandparent = instantiator of parent. Transformed to instantiate child alongside parent, connect. Parent = instantiator of child. Transformed to get port of child IO instead of instantiating child. Child = submodule to be promoted. Does not get transformed.
- case class PromoteSubmoduleAnnotation(target: InstanceTarget) extends SingleTargetAnnotation[InstanceTarget] with FAMEAnnotation with Product with Serializable
Indicates that a particular target instance should be promoted one level in the hierarchy.
Indicates that a particular target instance should be promoted one level in the hierarchy. The specified instance will be pulled out of its parent module and will reside in its "grandparent" module after the PromoteSubmodule transform has run.
- target
The instance to be promoted. Note that this must be a *local* instance target, as all instances of the parent module will be transformed identically.
- class RAMModelInst extends AnyRef
- class ReadPort extends IsMemoryPort
- class ReadWritePort extends IsMemoryPort
- trait ReadyValidSignal extends AnyRef
- case class ReadyValidSink(ref: Expression) extends ReadyValidSignal with Product with Serializable
- case class ReadyValidSource(ref: Expression) extends ReadyValidSignal with Product with Serializable
- class StaticArbiter extends AnyRef
- case class TargetClockChannel(clockInfo: Seq[RationalClock], perClockMFMR: Seq[Int]) extends FAMEChannelInfo with Product with Serializable
Indicates that a channel connection carries target clocks
Indicates that a channel connection carries target clocks
- clockInfo
The user-specified metadata, including a name and a ratio relative to the base clock
- perClockMFMR
Specifies the minimum number of host cycles between clock edges. This is a property of the clock token schedule, and permits relaxing timing constraints on clock domains with miniumum FMRS (MFMR) > 1.
- case class ThreadedMem(nThreads: BigInt, proto: DefMemory) extends Statement with IsDeclaration with Product with Serializable
- class TrivialChannelExcision extends Transform
- case class VirtualClockChannel(targetClock: Port) extends FAME1Channel with InputChannel with ClockChannel with Product with Serializable
- class WritePort extends IsMemoryPort
Value Members
- val WireChannel: PipeChannel
- object AddHostClockAndReset
- object AddRemainingFanoutAnnotations extends Transform with DependencyAPIMigration
This transform adds FAMEChannelFanoutAnnotations to collections of channels that have a common set of sources (they are driven by the same model).
This transform adds FAMEChannelFanoutAnnotations to collections of channels that have a common set of sources (they are driven by the same model). This is later used in SimulationMapping to emit forking channels.
- object And extends BinaryBooleanOp
- case object ChannelSink extends ChannelFlow with Product with Serializable
- case object ChannelSource extends ChannelFlow with Product with Serializable
- object ConditionalConnect
- object Counter
- object Decouple
- object DecoupledForwardChannel extends Serializable
- case object DecoupledReverseChannel extends FAMEChannelInfo with Product with Serializable
Indicates that a channel connection is the reverse (ready) half of a decoupled target connection.
Indicates that a channel connection is the reverse (ready) half of a decoupled target connection. Since the forward half incorporates references to the ready signals, this channel contains no signal references.
- object Eq extends BinaryBooleanOp
- object FAME5Info
- object FAMEChannelConnectionAnnotation extends Serializable
- object FAMEModuleTransformer
- 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.
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.
- object ImplementThreadedMems
- object Instantiate
- object IsDecoupled
- object LabelMultiThreadedInstances extends Transform
- object ModelReadPort extends Serializable
- object ModelReadWritePort extends Serializable
- object ModelWritePort extends Serializable
- object MultiThreadFAME5Models extends Transform
- object MultiThreader
- object MuxingMultiThreader
- object Negate
- object Neq extends BinaryBooleanOp
- object Or extends BinaryBooleanOp
- object PatientMemTransformer
- object PatientSSMTransformer
- object PromotePassthroughConnections extends Transform with DependencyAPIMigration
After ExtractModel it is common to have passthrough paths (i.e., identity combinational paths) that snake through the hub and multiple satellites, potentially increasing FMR.
After ExtractModel it is common to have passthrough paths (i.e., identity combinational paths) that snake through the hub and multiple satellites, potentially increasing FMR.
This pass pulls these into the FAME wrapper module so that they can be excised, and eventually implemented with a set of channels that fanout from the actual source driver.
- object RTRenamer
- object RegZeroPreset
Generates a DefRegister with no reset, relying instead on FPGA programming to preset the register to 0
- object RemoveNonWirePrimitives
Removes all non-passthrough expressions in a circuit so that we can use CheckCombLoops to return only passthrough connectivity (this represents subset of of all combinationally connected paths).
- object SeparateInstanceDecls
- object Toggle
- object WrapTop extends Transform
- object Xor extends BinaryBooleanOp