package ir
- Alphabetic
- Public
- All
Type Members
- abstract class AggregateType extends Type
- case class AnalogType(width: Width) extends GroundType with UseSerializer with Product with Serializable
- case class Attach(info: Info, exprs: Seq[Expression]) extends Statement with HasInfo with UseSerializer with Product with Serializable
- case class Block(stmts: Seq[Statement]) extends Statement with UseSerializer with Product with Serializable
-
trait
Bound extends Constraint
Bounds of IntervalType
- case class BundleType(fields: Seq[Field]) extends AggregateType with UseSerializer with Product with Serializable
- case class CalcBound(arg: Constraint) extends Bound with Product with Serializable
- case class CalcWidth(arg: Constraint) extends Width with UseSerializer with Product with Serializable
-
trait
CanBeReferenced extends AnyRef
Represents a statement that can be referenced in a firrtl expression.
Represents a statement that can be referenced in a firrtl expression. This explicitly excludes named side-effecting statements like Print, Stop and Verification. Note: This trait cannot be sealed since the memory ports are declared in WIR.scala. Once we fully remove all WIR, this trait could be sealed.
- case class Circuit(info: Info, modules: Seq[DefModule], main: String) extends FirrtlNode with HasInfo with UseSerializer with Product with Serializable
- case class Closed(value: BigDecimal) extends IsKnown with Bound with Product with Serializable
- case class Conditionally(info: Info, pred: Expression, conseq: Statement, alt: Statement) extends Statement with HasInfo with UseSerializer with Product with Serializable
- case class Connect(info: Info, loc: Expression, expr: Expression) extends Statement with HasInfo with UseSerializer with Product with Serializable
- case class DefInstance(info: Info, name: String, module: String, tpe: Type = UnknownType) extends Statement with IsDeclaration with CanBeReferenced with UseSerializer with Product with Serializable
- case class DefMemory(info: Info, name: String, dataType: Type, depth: BigInt, writeLatency: Int, readLatency: Int, readers: Seq[String], writers: Seq[String], readwriters: Seq[String], readUnderWrite: ReadUnderWrite.Value = ReadUnderWrite.Undefined) extends Statement with IsDeclaration with CanBeReferenced with UseSerializer with Product with Serializable
-
abstract
class
DefModule extends FirrtlNode with IsDeclaration
Base class for modules
- case class DefNode(info: Info, name: String, value: Expression) extends Statement with IsDeclaration with CanBeReferenced with UseSerializer with Product with Serializable
- case class DefRegister(info: Info, name: String, tpe: Type, clock: Expression, reset: Expression, init: Expression) extends Statement with IsDeclaration with CanBeReferenced with UseSerializer with Product with Serializable
- case class DefWire(info: Info, name: String, tpe: Type) extends Statement with IsDeclaration with CanBeReferenced with UseSerializer with Product with Serializable
-
sealed abstract
class
Direction extends FirrtlNode
Port Direction
- case class DoPrim(op: PrimOp, args: Seq[Expression], consts: Seq[BigInt], tpe: Type) extends Expression with UseSerializer with Product with Serializable
-
case class
DoubleParam(name: String, value: Double) extends Param with UseSerializer with Product with Serializable
IEEE Double Precision Parameter (for Verilog real)
- abstract class Expression extends FirrtlNode
-
case class
ExtModule(info: Info, name: String, ports: Seq[Port], defname: String, params: Seq[Param]) extends DefModule with UseSerializer with Product with Serializable
External Module
External Module
Generally used for Verilog black boxes
- defname
Defined name of the external module (ie. the name Firrtl will emit)
-
case class
Field(name: String, flip: Orientation, tpe: Type) extends FirrtlNode with HasName with UseSerializer with Product with Serializable
Field of BundleType
-
case class
FileInfo(escaped: String) extends Info with Product with Serializable
Stores the string of a file info annotation in its escaped form.
-
abstract
class
FirrtlNode extends AnyRef
Intermediate Representation
- case class FixedLiteral(value: BigInt, width: Width, point: Width) extends Literal with UseSerializer with Product with Serializable
- case class FixedType(width: Width, point: Width) extends GroundType with UseSerializer with Product with Serializable
- abstract class GroundType extends Type
- trait HasInfo extends AnyRef
- trait HasName extends AnyRef
- trait HashCode extends AnyRef
- abstract class Info extends FirrtlNode with UseSerializer
-
case class
IntParam(name: String, value: BigInt) extends Param with UseSerializer with Product with Serializable
Integer (of any width) Parameter
- class IntWidth extends Width with Product with UseSerializer
- case class IntervalType(lower: Bound, upper: Bound, point: Width) extends GroundType with Product with Serializable
- trait IsDeclaration extends HasName with HasInfo
- case class IsInvalid(info: Info, expr: Expression) extends Statement with HasInfo with UseSerializer with Product with Serializable
- abstract class Literal extends Expression
-
case class
Module(info: Info, name: String, ports: Seq[Port], body: Statement) extends DefModule with UseSerializer with Product with Serializable
Internal Module
Internal Module
An instantiable hardware block
- case class MultiInfo(infos: Seq[Info]) extends Info with Product with Serializable
- case class Mux(cond: Expression, tval: Expression, fval: Expression, tpe: Type = UnknownType) extends Expression with UseSerializer with Product with Serializable
- case class Open(value: BigDecimal) extends IsKnown with Bound with Product with Serializable
-
abstract
class
Orientation extends FirrtlNode
Orientation of Field
-
sealed abstract
class
Param extends FirrtlNode
Parameters for external modules
- case class PartialConnect(info: Info, loc: Expression, expr: Expression) extends Statement with HasInfo with UseSerializer with Product with Serializable
-
case class
Port(info: Info, name: String, direction: Direction, tpe: Type) extends FirrtlNode with IsDeclaration with CanBeReferenced with UseSerializer with Product with Serializable
DefModule Port
-
abstract
class
PrimOp extends FirrtlNode
Primitive Operation
Primitive Operation
See PrimOps
- final class Print extends Statement with HasInfo with IsDeclaration with UseSerializer with Product with Serializable
-
case class
RawStringParam(name: String, value: String) extends Param with UseSerializer with Product with Serializable
Raw String Parameter Useful for Verilog type parameters
Raw String Parameter Useful for Verilog type parameters
- Note
Firrtl doesn't guarantee anything about this String being legal in any backend
-
sealed
trait
RefLikeExpression extends Expression
Represents reference-like expression nodes: SubField, SubIndex, SubAccess and Reference The following fields can be cast to RefLikeExpression in every well formed firrtl AST: - SubField.expr, SubIndex.expr, SubAccess.expr - IsInvalid.expr, Connect.loc, PartialConnect.loc - Attach.exprs
- case class Reference(name: String, tpe: Type = UnknownType, kind: Kind = UnknownKind, flow: Flow = UnknownFlow) extends Expression with HasName with UseSerializer with RefLikeExpression with Product with Serializable
- case class SIntLiteral(value: BigInt, width: Width) extends Literal with UseSerializer with Product with Serializable
- case class SIntType(width: Width) extends GroundType with UseSerializer with Product with Serializable
- abstract class Statement extends FirrtlNode
- final class Stop extends Statement with HasInfo with IsDeclaration with UseSerializer with Product with Serializable
- case class StringLit(string: String) extends FirrtlNode with Product with Serializable
-
case class
StringParam(name: String, value: StringLit) extends Param with UseSerializer with Product with Serializable
String Parameter
- class StructuralHash extends AnyRef
- case class SubAccess(expr: Expression, index: Expression, tpe: Type, flow: Flow = UnknownFlow) extends Expression with UseSerializer with RefLikeExpression with Product with Serializable
- case class SubField(expr: Expression, name: String, tpe: Type = UnknownType, flow: Flow = UnknownFlow) extends Expression with HasName with UseSerializer with RefLikeExpression with Product with Serializable
- case class SubIndex(expr: Expression, value: Int, tpe: Type, flow: Flow = UnknownFlow) extends Expression with UseSerializer with RefLikeExpression with Product with Serializable
-
abstract
class
Type extends FirrtlNode
Types of FirrtlNode
- case class UIntLiteral(value: BigInt, width: Width) extends Literal with UseSerializer with Product with Serializable
- case class UIntType(width: Width) extends GroundType with UseSerializer with Product with Serializable
- case class ValidIf(cond: Expression, value: Expression, tpe: Type) extends Expression with UseSerializer with Product with Serializable
- case class VarBound(name: String) extends IsVar with Bound with Product with Serializable
- case class VarWidth(name: String) extends Width with IsVar with Product with Serializable
- case class VectorType(tpe: Type, size: Int) extends AggregateType with UseSerializer with Product with Serializable
- final class Verification extends Statement with HasInfo with IsDeclaration with UseSerializer with Product with Serializable
- abstract class Width extends FirrtlNode
Value Members
- object AsyncResetType extends GroundType with UseSerializer with Product with Serializable
- object Block extends Serializable
- object ClockType extends GroundType with UseSerializer with Product with Serializable
- object DefInstance extends Serializable
- object Default extends Orientation with Product with Serializable
- object EmptyStmt extends Statement with UseSerializer with Product with Serializable
- object FileInfo extends Serializable
- object Flip extends Orientation with Product with Serializable
- object Formal extends Enumeration
- object GroundType
- object Input extends Direction with Product with Serializable
-
object
IntWidth
Positive Integer Bit Width of a GroundType
- object KnownBound
- object MultiInfo extends Serializable
- object NoInfo extends Info with Product with Serializable
- object Output extends Direction with Product with Serializable
- object Print extends Serializable
- object ReadUnderWrite extends Enumeration
- object Reference extends Serializable
- object ResetType extends GroundType with UseSerializer with Product with Serializable
- object SIntLiteral extends Serializable
- object Serializer
- object Stop extends Serializable
- object StringLit extends Serializable
-
object
StructuralHash
This object can performs a "structural" hash over any firrtl Module.
This object can performs a "structural" hash over any firrtl Module. It ignores: - [firrtl.ir.Expression Expression] types - Any [firrtl.ir.Info Info] fields - Description on DescribedStmt - each identifier name is replaced by a unique integer which only depends on the order of declaration and is thus deterministic - Module names are ignored.
Because of the way we "agnostify" bundle types, all SubField access nodes need to have a known bundle type. Thus - in a lot of cases, like after reading firrtl from a file - you need to run the firrtl type inference before hashing.
Please note that module hashes don't include any submodules. Two structurally equivalent modules are only functionally equivalent if they are part of the same circuit and thus all modules referred to in DefInstance are the same.
- object UIntLiteral extends Serializable
- object UnknownBound extends Bound with Product with Serializable
- object UnknownType extends Type with UseSerializer with Product with Serializable
- object UnknownWidth extends Width with UseSerializer with Product with Serializable
- object Verification extends Serializable
This is the documentation for Firrtl.