firrtl
package firrtl
- Alphabetic
- Public
- All
Type Members
-
case class
AnnotationMap
(annotations: Seq[Annotation]) extends Product with Serializable
Container of all annotations for a Firrtl compiler.
- case class CDefMPort (info: Info, name: String, tpe: Type, mem: String, exps: Seq[Expression], direction: MPortDir) extends Statement with Product with Serializable
- case class CDefMemory (info: Info, name: String, tpe: Type, size: Int, seq: Boolean) extends Statement with Product with Serializable
-
class
ChirrtlToHighFirrtl
extends CoreTransform
This transforms "CHIRRTL", the chisel3 IR, to "Firrtl".
This transforms "CHIRRTL", the chisel3 IR, to "Firrtl". Note the resulting circuit has only IR nodes, not WIR.
-
sealed abstract
class
CircuitForm
extends Ordered[CircuitForm]
Current form of the Firrtl Circuit
Current form of the Firrtl Circuit
Form is a measure of addition restrictions on the legality of a Firrtl circuit. There is a notion of "highness" and "lowness" implemented in the compiler by extending scala.math.Ordered. "Lower" forms add additional restrictions compared to "higher" forms. This means that "higher" forms are strictly supersets of the "lower" forms. Thus, that any transform that operates on HighForm can also operate on MidForm or LowForm
-
case class
CircuitState
(circuit: Circuit, form: CircuitForm, annotations: Option[AnnotationMap] = None, renames: Option[RenameMap] = None) extends Product with Serializable
Current State of the Circuit
Current State of the Circuit
- circuit
The current state of the Firrtl AST
- form
The current form of the circuit
- annotations
The current collection of Annotation
- renames
A map of Named things that have been renamed. Generally only a return value from Transforms
-
case class
CommonOptions
(topName: String = "", targetDirName: String = ".", globalLogLevel: logger.LogLevel.Value = LogLevel.None, logToFile: Boolean = false, logClassNames: Boolean = false, classLogLevels: Map[String, logger.LogLevel.Value] = Map.empty, programArgs: Seq[String] = Seq.empty) extends ComposableOptions with Product with Serializable
Most of the chisel toolchain components require a topName which defines a circuit or a device under test.
Most of the chisel toolchain components require a topName which defines a circuit or a device under test. Much of the work that is done takes place in a directory. It would be simplest to require topName to be defined but in practice it is preferred to defer this. For example, in chisel, by deferring this it is possible for the execute there to first elaborate the circuit and then set the topName from that if it has not already been set.
- trait Compiler extends LazyLogging
-
trait
ComposableOptions
extends AnyRef
Use this trait to define an options class that can add its private command line options to a externally declared parser
- trait Constraint extends AnyRef
- sealed abstract class CoreTransform extends SeqTransform
- sealed abstract class EmitAnnotation extends AnyRef
-
sealed abstract
class
EmittedAnnotation
[T <: EmittedComponent] extends AnyRef
Super class for Annotations containing emitted components
Super class for Annotations containing emitted components
- Note
These annotations cannot be serialized and deserialized to/from an annotation file
- sealed abstract class EmittedCircuit extends EmittedComponent
- sealed abstract class EmittedComponent extends AnyRef
- final case class EmittedFirrtlCircuit (name: String, value: String) extends EmittedCircuit with Product with Serializable
- final case class EmittedFirrtlModule (name: String, value: String) extends EmittedModule with Product with Serializable
- sealed abstract class EmittedModule extends EmittedComponent
- final case class EmittedVerilogCircuit (name: String, value: String) extends EmittedCircuit with Product with Serializable
- final case class EmittedVerilogModule (name: String, value: String) extends EmittedModule with Product with Serializable
-
trait
Emitter
extends Transform
Defines old API for Emission.
Defines old API for Emission. Deprecated
- case class EmitterException (message: String) extends PassException with Product with Serializable
- class ExecutionOptionsManager extends HasParser with HasCommonOptions
- case class ExpWidth (arg1: Width) extends Width with HasMapWidth with Product with Serializable
- class FIRRTLException extends Exception
- sealed abstract class FirrtlEmitter extends Transform with Emitter
-
case class
FirrtlExecutionFailure
(message: String) extends FirrtlExecutionResult with Product with Serializable
The firrtl compilation failed.
The firrtl compilation failed.
- message
Some kind of hint as to what went wrong.
-
case class
FirrtlExecutionOptions
(inputFileNameOverride: String = "", outputFileNameOverride: String = "", compilerName: String = "verilog", infoModeName: String = "append", inferRW: Seq[String] = Seq.empty, firrtlSource: Option[String] = None, customTransforms: Seq[Transform] = List.empty, annotations: List[Annotation] = List.empty, annotationFileNameOverride: String = "", outputAnnotationFileName: String = "", forceAppendAnnoFile: Boolean = false, emitOneFilePerModule: Boolean = false, dontCheckCombLoops: Boolean = false, noDCE: Boolean = false) extends ComposableOptions with Product with Serializable
The options that firrtl supports in callable component sense
The options that firrtl supports in callable component sense
- inputFileNameOverride
default is targetDir/topName.fir
- outputFileNameOverride
default is targetDir/topName.v the .v is based on the compilerName parameter
- compilerName
which compiler to use
- annotations
annotations to pass to compiler
- sealed trait FirrtlExecutionResult extends AnyRef
-
case class
FirrtlExecutionSuccess
(emitType: String, emitted: String) extends FirrtlExecutionResult with Product with Serializable
Indicates a successful execution of the firrtl compiler, returning the compiled result and the type of compile
Indicates a successful execution of the firrtl compiler, returning the compiled result and the type of compile
- emitType
The name of the compiler used, currently "high", "middle", "low", or "verilog"
- emitted
The emitted result of compilation
- trait Gender extends AnyRef
- trait HasCommonOptions extends AnyRef
- trait HasFirrtlOptions extends AnyRef
- abstract class HasParser extends AnyRef
-
class
HighFirrtlCompiler
extends Compiler
Emits input circuit Will replace Chirrtl constructs with Firrtl
- class HighFirrtlEmitter extends FirrtlEmitter
-
class
HighFirrtlToMiddleFirrtl
extends CoreTransform
Expands aggregate connects, removes dynamic accesses, and when statements.
Expands aggregate connects, removes dynamic accesses, and when statements. Checks for uninitialized values. Must accept a well-formed graph. Operates on working IR nodes.
-
class
IRToWorkingIR
extends CoreTransform
Converts from the bare intermediate representation (ir.scala) to a working representation (WIR.scala)
- case class InvalidEscapeCharException (message: String) extends ParserException with Product with Serializable
- case class InvalidStringLitException (message: String) extends ParserException with Product with Serializable
- trait Kind extends AnyRef
- abstract class LexerHelper extends AnyRef
-
class
LowFirrtlCompiler
extends Compiler
Emits lowered input circuit
- class LowFirrtlEmitter extends FirrtlEmitter
-
class
LowFirrtlOptimization
extends CoreTransform
Runs a series of optimization passes on LowFirrtl
Runs a series of optimization passes on LowFirrtl
- Note
This is currently required for correct Verilog emission TODO Fix the above note
- abstract class MPortDir extends FirrtlNode
- case class MaxWidth (args: Seq[Width]) extends Width with HasMapWidth with Product with Serializable
- class MemoizedHash [T] extends AnyRef
-
class
MiddleFirrtlCompiler
extends Compiler
Emits middle Firrtl input circuit
- class MiddleFirrtlEmitter extends FirrtlEmitter
-
class
MiddleFirrtlToLowFirrtl
extends CoreTransform
Expands all aggregate types into many ground-typed components.
Expands all aggregate types into many ground-typed components. Must accept a well-formed graph of only middle Firrtl features. Operates on working IR nodes.
- case class MinWidth (args: Seq[Width]) extends Width with HasMapWidth with Product with Serializable
- case class MinusWidth (arg1: Width, arg2: Width) extends Width with HasMapWidth with Product with Serializable
-
class
ModuleGraph
extends AnyRef
Maintains a one to many graph of each modules instantiated child module.
Maintains a one to many graph of each modules instantiated child module. This graph can be searched for a path from a child module back to one of it's parents. If one is found a recursive loop has happened The graph is a map between the name of a node to set of names of that nodes children
- class Namespace extends AnyRef
- final case class OneFilePerModule (targetDir: String) extends OutputConfig with Product with Serializable
-
sealed abstract
class
OutputConfig
extends AnyRef
Firrtl output configuration specified by FirrtlExecutionOptions
Firrtl output configuration specified by FirrtlExecutionOptions
Derived from the fields of the execution options
- case class ParameterNotSpecifiedException (message: String) extends ParserException with Product with Serializable
- case class ParameterRedefinedException (message: String) extends ParserException with Product with Serializable
- class ParserException extends Exception
- case class PlusWidth (arg1: Width, arg2: Width) extends Width with HasMapWidth with Product with Serializable
- class RenameMap extends AnyRef
-
class
ResolveAndCheck
extends CoreTransform
Resolves types, kinds, and genders, and checks the circuit legality.
Resolves types, kinds, and genders, and checks the circuit legality. Operates on working IR nodes and high Firrtl.
-
abstract
class
SeqTransform
extends Transform with SeqTransformBased
For transformations that are simply a sequence of transforms
- trait SeqTransformBased extends AnyRef
- final case class SingleFile (targetFile: String) extends OutputConfig with Product with Serializable
-
abstract
class
Transform
extends LazyLogging
The basic unit of operating on a Firrtl AST
- case class VRandom (width: BigInt) extends Expression with Product with Serializable
- case class VarWidth (name: String) extends Width with HasMapWidth with Product with Serializable
-
class
VerilogCompiler
extends Compiler
Emits Verilog
- class VerilogEmitter extends SeqTransform with Emitter
- class Visitor extends FIRRTLBaseVisitor[FirrtlNode]
- case class WDefInstance (info: Info, name: String, module: String, tpe: Type) extends Statement with IsDeclaration with Product with Serializable
- case class WDefInstanceConnector (info: Info, name: String, module: String, tpe: Type, portCons: Seq[(Expression, Expression)]) extends Statement with IsDeclaration with Product with Serializable
- class WGeq extends Constraint
- case class WRef (name: String, tpe: Type, kind: Kind, gender: Gender) extends Expression with Product with Serializable
- case class WSubAccess (expr: Expression, index: Expression, tpe: Type, gender: Gender) extends Expression with Product with Serializable
- case class WSubField (expr: Expression, name: String, tpe: Type, gender: Gender) extends Expression with Product with Serializable
- case class WSubIndex (expr: Expression, value: Int, tpe: Type, gender: Gender) extends Expression with Product with Serializable
- class WrappedExpression extends AnyRef
- class WrappedType extends AnyRef
- class WrappedWidth extends AnyRef
Value Members
- object Addw extends PrimOp with Product with Serializable
- object BIGENDER extends Gender with Product with Serializable
-
object
ChirrtlForm
extends CircuitForm with Product with Serializable
Chirrtl Form
Chirrtl Form
The form of the circuit emitted by Chisel. Not a true Firrtl form. Includes cmem, smem, and mport IR nodes which enable declaring memories separately form their ports. A "Higher" form than HighForm
See CDefMemory and CDefMPort
- object CompilerUtils extends LazyLogging
-
object
Driver
The driver provides methods to access the firrtl compiler.
The driver provides methods to access the firrtl compiler. Invoke the compiler with either a FirrtlExecutionOption
firrtl.Driver.execute(Array("--top-name Dummy --compiler verilog".split(" +"))
each approach has its own endearing aspects
, val optionsManager = new ExecutionOptionsManager("firrtl") optionsManager.register( FirrtlExecutionOptionsKey -> new FirrtlExecutionOptions(topName = "Dummy", compilerName = "verilog")) firrtl.Driver.execute(optionsManager)
or a series of command line arguments
- See also
CompilerUtils.mergeTransforms to see how customTransformations are inserted
firrtlTests/DriverSpec.scala in the test directory for a lot more examples
Examples: - object Dshlw extends PrimOp with Product with Serializable
- object EmitAllModulesAnnotation extends EmitAnnotation
- object EmitCircuitAnnotation extends EmitAnnotation
- object EmittedCircuitAnnotation
- object EmittedFirrtlCircuitAnnotation extends EmittedAnnotation[EmittedFirrtlCircuit]
- object EmittedFirrtlModuleAnnotation extends EmittedAnnotation[EmittedFirrtlModule]
- object EmittedModuleAnnotation
- object EmittedVerilogCircuitAnnotation extends EmittedAnnotation[EmittedVerilogCircuit]
- object EmittedVerilogModuleAnnotation extends EmittedAnnotation[EmittedVerilogModule]
- object EmptyExpression extends Expression with Product with Serializable
- object ExpKind extends Kind with Product with Serializable
- object FEMALE extends Gender with Product with Serializable
- object FileUtils
-
object
HighForm
extends CircuitForm with Product with Serializable
High Form
High Form
As detailed in the Firrtl specification https://github.com/ucb-bar/firrtl/blob/master/spec/spec.pdf
Also see firrtl.ir
- object InstanceKind extends Kind with Product with Serializable
-
object
LowForm
extends CircuitForm with Product with Serializable
Low Form
Low Form
The "lowest" form. In addition to the restrictions in MidForm:
- All aggregate types (vector/bundle) must have been removed
- All implicit truncations must be made explicit
- object MALE extends Gender with Product with Serializable
- object MInfer extends MPortDir with Product with Serializable
- object MRead extends MPortDir with Product with Serializable
- object MReadWrite extends MPortDir with Product with Serializable
- object MWrite extends MPortDir with Product with Serializable
- object Mappers
- object MemKind extends Kind with Product with Serializable
- object MemoizedHash
-
object
MidForm
extends CircuitForm with Product with Serializable
Middle Form
Middle Form
A "lower" form than HighForm with the following restrictions:
- All widths must be explicit
- All whens must be removed
- There can only be a single connection to any element
- object Namespace
- object NodeKind extends Kind with Product with Serializable
- object Parser extends LazyLogging
- object PoisonKind extends Kind with Product with Serializable
- object PortKind extends Kind with Product with Serializable
-
object
PrimOps
extends LazyLogging
Definitions and Utility functions for ir.PrimOps
- object RegKind extends Kind with Product with Serializable
-
object
RenameMap
RenameMap maps old names to modified names.
RenameMap maps old names to modified names. Generated by transformations that modify names
- object Shlw extends PrimOp with Product with Serializable
- object Subw extends PrimOp with Product with Serializable
-
object
TargetDirAnnotation
extends GlobalCircuitAnnotation
annotations.GlobalCircuitAnnotation that contains the CommonOptions target directory
- object UNKNOWNGENDER extends Gender with Product with Serializable
-
object
UnknownForm
extends CircuitForm with Product with Serializable
Unknown Form
Unknown Form
Often passes may modify a circuit (e.g. InferTypes), but return a circuit in the same form it was given.
For this use case, use UnknownForm. It cannot be compared against other forms.
TODO(azidar): Replace with PreviousForm, which more explicitly encodes this requirement.
- object Utils extends LazyLogging
- object WDefInstance extends Serializable
- object WGeq
- object WInvalid extends Expression with Product with Serializable
- object WRef extends Serializable
- object WSubField extends Serializable
- object WVoid extends Expression with Product with Serializable
- object WireKind extends Kind with Product with Serializable
- object WrappedExpression
- object WrappedType
- object WrappedWidth
- object bitWidth
- object castRhs
- object connectFields
- object flattenType
- object fromBits
- object getWidth
- object seqCat
-
object
toBits
Given an expression, return an expression consisting of all sub-expressions concatenated (or flattened).
This is the documentation for Firrtl.