dfhdl.compiler.stages

Members list

Type members

Classlikes

case object AddClkRst extends Stage

This stage adds clock and reset ports across the entire design. For each design, clock and reset ports are added once per unique domain configuration.

This stage adds clock and reset ports across the entire design. For each design, clock and reset ports are added once per unique domain configuration.

Attributes

Supertypes
trait Singleton
trait Product
trait Mirror
class Stage
trait HasTypeName
trait Serializable
trait Product
trait Equals
class Object
trait Matchable
class Any
Show all
Self type
AddClkRst.type
case object AddMagnets extends Stage

This stage adds missing magnet ports across the entire design. These will be connected at a later stage.

This stage adds missing magnet ports across the entire design. These will be connected at a later stage.

Attributes

Supertypes
trait Singleton
trait Product
trait Mirror
class Stage
trait HasTypeName
trait Serializable
trait Product
trait Equals
class Object
trait Matchable
class Any
Show all
Self type
AddMagnets.type

Attributes

Supertypes
class Object
trait Matchable
class Any

Attributes

Supertypes
class Object
trait Matchable
class Any
Self type
case object ConnectMagnets extends Stage

This stage creates explicit magnet port connections across the entire design.

This stage creates explicit magnet port connections across the entire design.

Attributes

Supertypes
trait Singleton
trait Product
trait Mirror
class Stage
trait HasTypeName
trait Serializable
trait Product
trait Equals
class Object
trait Matchable
class Any
Show all
Self type
case object DFHDLUniqueNames

Attributes

Supertypes
trait Singleton
trait Product
trait Mirror
class Stage
trait HasTypeName
trait Serializable
trait Product
trait Equals
class Object
trait Matchable
class Any
Show all
Self type
case object DropBAssignFromSeqProc extends Stage

Attributes

Supertypes
trait Singleton
trait Product
trait Mirror
class Stage
trait HasTypeName
trait Serializable
trait Product
trait Equals
class Object
trait Matchable
class Any
Show all
Self type
case object DropBinds extends Stage

Attributes

Supertypes
trait Singleton
trait Product
trait Mirror
class Stage
trait HasTypeName
trait Serializable
trait Product
trait Equals
class Object
trait Matchable
class Any
Show all
Self type
DropBinds.type
case object DropCondDcls extends DropLocalDcls

Attributes

Supertypes
trait Singleton
trait Product
trait Mirror
class Stage
trait HasTypeName
trait Serializable
trait Product
trait Equals
class Object
trait Matchable
class Any
Show all
Self type
case object DropDesignDefs extends Stage

Attributes

Supertypes
trait Singleton
trait Product
trait Mirror
class Stage
trait HasTypeName
trait Serializable
trait Product
trait Equals
class Object
trait Matchable
class Any
Show all
Self type
abstract class DropLocalDcls(keepProcessDcls: Boolean) extends Stage

Attributes

Companion
object
Supertypes
class Stage
trait HasTypeName
trait Serializable
trait Product
trait Equals
class Object
trait Matchable
class Any
Show all
Known subtypes
object DropCondDcls
object DropLocalDcls
case object DropLocalDcls extends DropLocalDcls

Attributes

Companion
class
Supertypes
trait Singleton
trait Product
trait Mirror
class Stage
trait HasTypeName
trait Serializable
trait Product
trait Equals
class Object
trait Matchable
class Any
Show all
Self type
case object DropMagnets extends DropOpaques

Attributes

Supertypes
trait Singleton
trait Product
trait Mirror
class DropOpaques
class Stage
trait HasTypeName
trait Serializable
trait Product
trait Equals
class Object
trait Matchable
class Any
Show all
Self type
abstract class DropOpaques(filterPred: DFOpaque => Boolean) extends Stage

This stage drops all opaque types that fit within the applied filter predicate. TODO: currently not handling opaques that are composed.

This stage drops all opaque types that fit within the applied filter predicate. TODO: currently not handling opaques that are composed.

Attributes

Supertypes
class Stage
trait HasTypeName
trait Serializable
trait Product
trait Equals
class Object
trait Matchable
class Any
Show all
Known subtypes
object DropMagnets
case object DropOpaquesAll extends DropOpaques

Attributes

Supertypes
trait Singleton
trait Product
trait Mirror
class DropOpaques
class Stage
trait HasTypeName
trait Serializable
trait Product
trait Equals
class Object
trait Matchable
class Any
Show all
Self type
case object DropUnreferencedAnons extends Stage

Attributes

Supertypes
trait Singleton
trait Product
trait Mirror
class Stage
trait HasTypeName
trait Serializable
trait Product
trait Equals
class Object
trait Matchable
class Any
Show all
Self type
case object DropUnreferencedVars extends Stage

Attributes

Supertypes
trait Singleton
trait Product
trait Mirror
class Stage
trait HasTypeName
trait Serializable
trait Product
trait Equals
class Object
trait Matchable
class Any
Show all
Self type
case object ExplicitClkRstCfg extends Stage

This stage converts a derived clock-reset configuration of RT designs/domains to explicit configurations.

This stage converts a derived clock-reset configuration of RT designs/domains to explicit configurations.

Attributes

Supertypes
trait Singleton
trait Product
trait Mirror
class Stage
trait HasTypeName
trait Serializable
trait Product
trait Equals
class Object
trait Matchable
class Any
Show all
Self type
case object ExplicitNamedVars extends Stage

Attributes

Supertypes
trait Singleton
trait Product
trait Mirror
class Stage
trait HasTypeName
trait Serializable
trait Product
trait Equals
class Object
trait Matchable
class Any
Show all
Self type
case object ExplicitRegInits extends Stage

This stage propagates initialization values to the reg alias init value, and removes all declaration initializations.

This stage propagates initialization values to the reg alias init value, and removes all declaration initializations.

Attributes

Supertypes
trait Singleton
trait Product
trait Mirror
class Stage
trait HasTypeName
trait Serializable
trait Product
trait Equals
class Object
trait Matchable
class Any
Show all
Self type
case object ExplicitState extends Stage

Attributes

Supertypes
trait Singleton
trait Product
trait Mirror
class Stage
trait HasTypeName
trait Serializable
trait Product
trait Equals
class Object
trait Matchable
class Any
Show all
Self type
trait HasDB[T]

Attributes

Companion
object
Supertypes
class Object
trait Matchable
class Any
Known subtypes
object HasDB

Attributes

Companion
trait
Supertypes
class Object
trait Matchable
class Any
Self type
HasDB.type
case object NameRegAliases extends Stage

This stage names register aliases (e.g., x.reg) and replaces them with explicit register variables. The most complex mechanism about this stage is the naming conversion convention.

This stage names register aliases (e.g., x.reg) and replaces them with explicit register variables. The most complex mechanism about this stage is the naming conversion convention.

  1. If .reg is applied on a named immutable value x or a mutated wire/port that is mutated only once, then that register variable will be named x_reg. If we have several register stages applied, then we create an enumeration. So x.reg(2) yields x_reg1 and x_reg2.
  2. If .reg is applied on a named mutable wire x that is mutated more than once, then we treat every new .reg application as a new version of x. In this case we get an enumeration of the version. E.g.:
      val i = DFUInt(8) <> IN
      val o = DFUInt(8) <> OUT
      val x = DFUInt(8) <> VAR
      x := i
      o := x.reg //x_ver1_reg
      x := i + 1
      o := x.reg(2) //x_ver2_reg1, x_ver2_reg2
  1. If .reg is applied on an anonymous value, then extrapolate a name suggestion based on the destination variable. This is part of the destination, so it adds _part suffix to the name of the destination. In case of several parts, we create an enumeration. E.g.:
      val i = DFUInt(8) <> IN
      val o = DFUInt(8) <> OUT
      val z = DFUInt(8) <> OUT
      o := (i + 1).reg //o_part_reg
      z := ((i + 1).reg + 7).reg(2) //z_part1_reg, z_part2_reg1, z_part2_reg2

Attributes

Supertypes
trait Singleton
trait Product
trait Mirror
class Stage
trait HasTypeName
trait Serializable
trait Product
trait Equals
class Object
trait Matchable
class Any
Show all
Self type
object NamedAliases

Attributes

Supertypes
class Object
trait Matchable
class Any
Self type
case object NamedAnonMultiref

Attributes

Supertypes
trait Singleton
trait Product
trait Mirror
class Stage
trait HasTypeName
trait Serializable
trait Product
trait Equals
class Object
trait Matchable
class Any
Show all
Self type
case object NamedPrev

Attributes

Supertypes
trait Singleton
trait Product
trait Mirror
class Stage
trait HasTypeName
trait Serializable
trait Product
trait Equals
class Object
trait Matchable
class Any
Show all
Self type
NamedPrev.type
case object NamedSelection

Attributes

Supertypes
trait Singleton
trait Product
trait Mirror
class Stage
trait HasTypeName
trait Serializable
trait Product
trait Equals
class Object
trait Matchable
class Any
Show all
Self type
object OrderMembers

Attributes

Supertypes
class Object
trait Matchable
class Any
Self type
case object PrintCodeString extends Stage

Attributes

Supertypes
trait Singleton
trait Product
trait Mirror
class Stage
trait HasTypeName
trait Serializable
trait Product
trait Equals
class Object
trait Matchable
class Any
Show all
Self type
case object SanityCheck extends Stage

Attributes

Supertypes
trait Singleton
trait Product
trait Mirror
class Stage
trait HasTypeName
trait Serializable
trait Product
trait Equals
class Object
trait Matchable
class Any
Show all
Self type
case object SimpleOrderMembers

Attributes

Supertypes
trait Singleton
trait Product
trait Mirror
class Stage
trait HasTypeName
trait Serializable
trait Product
trait Equals
class Object
trait Matchable
class Any
Show all
Self type
abstract class Stage extends Product, Serializable, HasTypeName

Attributes

Supertypes
trait HasTypeName
trait Serializable
trait Product
trait Equals
class Object
trait Matchable
class Any
Show all
Known subtypes
class StageRunner(using co: CompilerOptions) extends LogSupport

Attributes

Companion
object
Supertypes
trait LogSupport
trait LazyLogger
trait LoggingMethods
trait Serializable
class Object
trait Matchable
class Any
Show all
object StageRunner

Attributes

Companion
class
Supertypes
class Object
trait Matchable
class Any
Self type
final class StagedDesign[D <: Design]

Attributes

Companion
object
Supertypes
class Object
trait Matchable
class Any
object StagedDesign

Attributes

Companion
class
Supertypes
class Object
trait Matchable
class Any
Self type
case object ToED extends Stage

Attributes

Supertypes
trait Singleton
trait Product
trait Mirror
class Stage
trait HasTypeName
trait Serializable
trait Product
trait Equals
class Object
trait Matchable
class Any
Show all
Self type
ToED.type
case object ToRT extends Stage

Attributes

Supertypes
trait Singleton
trait Product
trait Mirror
class Stage
trait HasTypeName
trait Serializable
trait Product
trait Equals
class Object
trait Matchable
class Any
Show all
Self type
ToRT.type
case object UniqueDesigns extends Stage

Attributes

Supertypes
trait Singleton
trait Product
trait Mirror
class Stage
trait HasTypeName
trait Serializable
trait Product
trait Equals
class Object
trait Matchable
class Any
Show all
Self type
case object VHDLProcToVerilog extends Stage

This stage transforms a sequential process from a VHDL style to Verilog style. E.g.,

This stage transforms a sequential process from a VHDL style to Verilog style. E.g.,

 process(clk):
   if (clk.rising)
     ....

is transformed into

 process(clk.rising):
   ....

Attributes

Supertypes
trait Singleton
trait Product
trait Mirror
class Stage
trait HasTypeName
trait Serializable
trait Product
trait Equals
class Object
trait Matchable
class Any
Show all
Self type
case object ViaConnection extends Stage

Attributes

Supertypes
trait Singleton
trait Product
trait Mirror
class Stage
trait HasTypeName
trait Serializable
trait Product
trait Equals
class Object
trait Matchable
class Any
Show all
Self type

Types

opaque type CompiledDesign[D <: Design]

Extensions

Extensions

extension (sm: AssignMap)(using MemberGetSet)
def assignTo(toVal: DFVal, assignBitSet: BitSet): AssignMap
def branchEntry(firstBranch: Boolean): AssignMap
def branchExit(lastBranch: Boolean, exhaustive: Boolean): AssignMap
extension [T](t: T)(implicit evidence$1: HasDB[T], po: PrinterOptions, co: CompilerOptions)
def getCompiledCodeString: String
extension [T](t: T)(implicit evidence$1: HasDB[T], CompilerOptions)
def getCodeString: String
extension [T](t: T)(implicit evidence$1: HasDB[T], CompilerOptions)
def getCodeString(align: Boolean): String
extension [T](t: T)
def db: DB
extension [T](t: T)(implicit evidence$1: HasDB[T], CompilerOptions)
def toRT: DB
extension [T](t: T)(implicit evidence$1: HasDB[T], CompilerOptions)
extension [T](t: T)(implicit evidence$1: HasDB[T], CompilerOptions)
extension [T](t: T)(implicit evidence$1: HasDB[T], CompilerOptions)
def dropDesignDefs: DB
extension [T](t: T)(implicit evidence$1: HasDB[T], CompilerOptions)
def uniqueDesigns: DB
extension [T](t: T)(implicit evidence$1: HasDB[T], CompilerOptions)
extension [T](t: T)(implicit evidence$1: HasDB[T], CompilerOptions)
def connectMagnets: DB
extension [T](t: T)(implicit evidence$1: HasDB[T], CompilerOptions)
def dropMagnets: DB
extension [T](t: T)(implicit evidence$1: HasDB[T], CompilerOptions)
def dropLocalDcls: DB
extension [T](t: T)(implicit evidence$1: HasDB[T], CompilerOptions)
def dropCondDcls: DB
extension [T](t: T)(implicit evidence$1: HasDB[T], CompilerOptions)
def simpleOrder: DB
extension [T](t: T)(implicit evidence$1: HasDB[T], CompilerOptions)
extension [T](t: T)(implicit evidence$1: HasDB[T], CompilerOptions)
extension [T](t: T)(implicit evidence$1: HasDB[T], CompilerOptions)
def addMagnets: DB
extension [T](t: T)(implicit evidence$1: HasDB[T], CompilerOptions)
extension [T](t: T)(implicit evidence$1: HasDB[T], CompilerOptions)
def viaConnection: DB
extension [T](t: T)(implicit evidence$1: HasDB[T], CompilerOptions)
def uniqueNames(reservedNames: Set[String], caseSensitive: Boolean): DB
extension [T](t: T)(implicit evidence$1: HasDB[T], CompilerOptions)
def addClkRst: DB
extension [T](t: T)(implicit evidence$1: HasDB[T], CompilerOptions)
def namedSelection: DB
extension [T](t: T)(implicit evidence$1: HasDB[T], CompilerOptions)
def namedPrev: DB
extension [T](t: T)(implicit evidence$1: HasDB[T], CompilerOptions)
extension [T](t: T)(implicit evidence$1: HasDB[T], CompilerOptions)
def dropBinds: DB
extension [T](t: T)(implicit evidence$1: HasDB[T], CompilerOptions)
def nameRegAliases: DB
extension [T](t: T)(implicit evidence$1: HasDB[T], CompilerOptions)
def sanityCheck: DB
extension [T](t: T)(implicit evidence$1: HasDB[T], CompilerOptions)
def explicitState: DB
extension [T](t: T)(implicit evidence$1: HasDB[T], CompilerOptions)
def toED: DB