Packages

  • package root

    This is the documentation for Chisel.

    This is the documentation for Chisel.

    Package structure

    The chisel3 package presents the public API of Chisel. It contains the concrete core types UInt, SInt, Bool, FixedPoint, Clock, and Reg, the abstract types Bits, Aggregate, and Data, and the aggregate types Bundle and Vec.

    The Chisel package is a compatibility layer that attempts to provide chisel2 compatibility in chisel3.

    Utility objects and methods are found in the util package.

    The testers package defines the basic interface for chisel testers.

    Definition Classes
    root
  • package chisel3

    This package contains the main chisel3 API.

    This package contains the main chisel3 API.

    Definition Classes
    root
  • package reflect
    Definition Classes
    chisel3
  • DataMirror
o

chisel3.reflect

DataMirror

object DataMirror

Source
DataMirror.scala
Linear Supertypes
Ordering
  1. Alphabetic
  2. By Inheritance
Inherited
  1. DataMirror
  2. AnyRef
  3. Any
  1. Hide All
  2. Show All
Visibility
  1. Public
  2. Protected

Type Members

  1. trait HasMatchingZipOfChildren[T] extends AnyRef

    Typeclass trait to use collectMembersOverMatches, collectMembersOverAll, collectMembersOverAllForAny, collectMembersOverAllForAnyFunction

Value Members

  1. final def !=(arg0: Any): Boolean
    Definition Classes
    AnyRef → Any
  2. final def ##: Int
    Definition Classes
    AnyRef → Any
  3. final def ==(arg0: Any): Boolean
    Definition Classes
    AnyRef → Any
  4. implicit val AlignmentMatchingZipOfChildren: HasMatchingZipOfChildren[Alignment]
  5. final def asInstanceOf[T0]: T0
    Definition Classes
    Any
  6. def checkAlignmentTypeEquivalence(x: Data, y: Data): Boolean

    Check if two Chisel types have the same alignments for all matching members

    Check if two Chisel types have the same alignments for all matching members

    This means that for matching members in Aggregates, they must have matching member alignments relative to the parent type For matching non-aggregates, they must be the same alignment to their parent type.

    x

    First Chisel type

    y

    Second Chisel type

    returns

    true if the two Chisel types have alignment type equivalence.

  7. def checkTypeEquivalence(x: Data, y: Data): Boolean

    Check if two Chisel types are the same type.

    Check if two Chisel types are the same type. Internally, this is dispatched to each Chisel type's typeEquivalent function for each type to determine if the types are intended to be equal.

    For most types, different parameters should ensure that the types are different. For example, UInt(8.W) and UInt(16.W) are different. Likewise, Records check that both Records have the same elements with the same types.

    Equivalent to being structural, alignment, and width type equivalent

    x

    First Chisel type

    y

    Second Chisel type

    returns

    true if the two Chisel types are equal.

  8. def clone(): AnyRef
    Attributes
    protected[lang]
    Definition Classes
    AnyRef
    Annotations
    @throws(classOf[java.lang.CloneNotSupportedException]) @native() @HotSpotIntrinsicCandidate()
  9. def collectAlignedDeep[T](base: Data)(pf: PartialFunction[Data, T]): Seq[T]

    Collects all members of base who are aligned w.r.t.

    Collects all members of base who are aligned w.r.t. base Accepts a collector partial function, rather than a collector function

    T

    Type of the component that will be collected

    base

    Data from whom aligned members (w.r.t. base) are collected

  10. def collectFlippedDeep[T](base: Data)(pf: PartialFunction[Data, T]): Seq[T]

    Collects all members of base who are flipped w.r.t.

    Collects all members of base who are flipped w.r.t. base Accepts a collector partial function, rather than a collector function

    T

    Type of the component that will be collected

    base

    Data from whom flipped members (w.r.t. base) are collected

  11. def collectMembers[T](d: Data)(collector: PartialFunction[Data, T]): Iterable[T]

    Collects all fields selected by collector within a data and all recursive children fields Accepts a collector partial function, rather than a collector function

    Collects all fields selected by collector within a data and all recursive children fields Accepts a collector partial function, rather than a collector function

    T

    Type of the component that will be collected

    collector

    Collector partial function to pick which components to collect

  12. def collectMembersOverAll[D, T](left: D, right: D)(collector: PartialFunction[(Option[D], Option[D]), T])(implicit arg0: HasMatchingZipOfChildren[D]): Seq[T]

    Collects over members left and right who have structurally corresponding members in either left and right Accepts a collector partial function, rather than a collector function

    Collects over members left and right who have structurally corresponding members in either left and right Accepts a collector partial function, rather than a collector function

    T

    Type of the thing being collected

    left

    Data from whom members are collected

    right

    Data from whom members are collected

    collector

    Collector partial function to pick which components from left, right, or both to collect

  13. def collectMembersOverAllForAny[D, L, R](left: Option[D], right: Option[D])(pcollector: PartialFunction[(Option[D], Option[D]), (Option[L], Option[R])])(implicit arg0: HasMatchingZipOfChildren[D]): Seq[(Option[L], Option[R])]

    Collects over members left and right who have structurally corresponding members in either left and right Can return an optional value for left, right, both or neither Accepts a collector partial function, rather than a collector function

    Collects over members left and right who have structurally corresponding members in either left and right Can return an optional value for left, right, both or neither Accepts a collector partial function, rather than a collector function

    L

    Type of the thing being collected from the left

    R

    Type of the thing being collected from the right

    left

    Data from whom members are collected

    right

    Data from whom members are collected

  14. def collectMembersOverAllForAnyFunction[D, L, R](left: Option[D], right: Option[D])(collector: ((Option[D], Option[D])) => Option[(Option[L], Option[R])])(implicit arg0: HasMatchingZipOfChildren[D]): Seq[(Option[L], Option[R])]

    Collects over members left and right who have structurally corresponding members in either left and right Can return an optional value for left, right, both or neither Accepts a full function

    Collects over members left and right who have structurally corresponding members in either left and right Can return an optional value for left, right, both or neither Accepts a full function

    L

    Type of the thing being collected from the left

    R

    Type of the thing being collected from the right

    left

    Data from whom members are collected

    right

    Data from whom members are collected

    collector

    Collector full function to pick which components from left, right, or both to collect

  15. def collectMembersOverMatches[D, T](left: D, right: D)(collector: PartialFunction[(D, D), T])(implicit arg0: HasMatchingZipOfChildren[D]): Seq[T]

    Collects over members left and right who have structurally corresponding members in both left and right Accepts a collector partial function, rather than a collector function

    Collects over members left and right who have structurally corresponding members in both left and right Accepts a collector partial function, rather than a collector function

    T

    Type of the thing being collected

    left

    Data from whom members are collected

    right

    Data from whom members are collected

    collector

    Collector partial function to pick which components from left and right to collect

  16. def directionOf(target: Data): ActualDirection
  17. final def eq(arg0: AnyRef): Boolean
    Definition Classes
    AnyRef
  18. def equals(arg0: AnyRef): Boolean
    Definition Classes
    AnyRef → Any
  19. def fullModulePorts(target: BaseModule): Seq[(String, Data)]

    Returns a recursive representation of a module's ports with underscore-qualified names

    Returns a recursive representation of a module's ports with underscore-qualified names

    class MyModule extends Module {
      val io = IO(new Bundle {
        val in = Input(UInt(8.W))
        val out = Output(Vec(2, UInt(8.W)))
      })
      val extra = IO(Input(UInt(8.W)))
      val delay = RegNext(io.in)
      io.out(0) := delay
      io.out(1) := delay + extra
    }
    val mod = Module(new MyModule)
    DataMirror.fullModulePorts(mod)
    // returns: Seq(
    //   "clock" -> mod.clock,
    //   "reset" -> mod.reset,
    //   "io" -> mod.io,
    //   "io_out" -> mod.io.out,
    //   "io_out_0" -> mod.io.out(0),
    //   "io_out_1" -> mod.io.out(1),
    //   "io_in" -> mod.io.in,
    //   "extra" -> mod.extra
    // )
    Note

    The returned ports are redundant. An Aggregate port will be present along with all of its children.

    See also

    DataMirror.modulePorts for a non-recursive representation of the ports.

  20. final def getClass(): Class[_ <: AnyRef]
    Definition Classes
    AnyRef → Any
    Annotations
    @native() @HotSpotIntrinsicCandidate()
  21. def getIntermediateAndLeafs(d: Data): Seq[Data]

    Return all expanded components, including intermediate aggregate nodes

    Return all expanded components, including intermediate aggregate nodes

    d

    Component to find leafs if aggregate typed. Intermediate fields/indicies ARE included

  22. def getParent(target: BaseModule): Option[BaseModule]

    Returns the parent module within which a module instance is instantiated

    Returns the parent module within which a module instance is instantiated

    target

    a module instance

    returns

    the parent of the target, if one exists

    Note

    Top-level modules in any given elaboration do not have a parent

  23. def hashCode(): Int
    Definition Classes
    AnyRef → Any
    Annotations
    @native() @HotSpotIntrinsicCandidate()
  24. def isIO(x: Data): Boolean

    Check if a given Data is an IO port

    Check if a given Data is an IO port

    x

    the Data to check

    returns

    true if x is an IO port, false otherwise

  25. final def isInstanceOf[T0]: Boolean
    Definition Classes
    Any
  26. def isReg(x: Data): Boolean

    Check if a given Data is a Reg

    Check if a given Data is a Reg

    x

    the Data to check

    returns

    true if x is a Reg, false otherwise

  27. def isWire(x: Data): Boolean

    Check if a given Data is a Wire

    Check if a given Data is a Wire

    x

    the Data to check

    returns

    true if x is a Wire, false otherwise

  28. def modulePorts(target: BaseModule): Seq[(String, Data)]

    Returns the ports of a module

    Returns the ports of a module

    class MyModule extends Module {
      val io = IO(new Bundle {
        val in = Input(UInt(8.W))
        val out = Output(Vec(2, UInt(8.W)))
      })
      val extra = IO(Input(UInt(8.W)))
      val delay = RegNext(io.in)
      io.out(0) := delay
      io.out(1) := delay + extra
    }
    val mod = Module(new MyModule)
    DataMirror.modulePorts(mod)
    // returns: Seq(
    //   "clock" -> mod.clock,
    //   "reset" -> mod.reset,
    //   "io" -> mod.io,
    //   "extra" -> mod.extra
    // )
  29. final def ne(arg0: AnyRef): Boolean
    Definition Classes
    AnyRef
  30. final def notify(): Unit
    Definition Classes
    AnyRef
    Annotations
    @native() @HotSpotIntrinsicCandidate()
  31. final def notifyAll(): Unit
    Definition Classes
    AnyRef
    Annotations
    @native() @HotSpotIntrinsicCandidate()
  32. def queryNameGuess(x: Data): String

    Get an early guess for the name of this Data

    Get an early guess for the name of this Data

    Warning: it is not guaranteed that this name will end up in the output FIRRTL or Verilog.

    Name guesses are not stable and may change due to a subsequent Data.suggestName or plugin-related naming. Name guesses are not necessarily legal Verilog identifiers. Name guesses for elements of Bundles or Records will include periods, and guesses for elements of Vecs will include square brackets.

  33. def specifiedDirectionOf(target: Data): SpecifiedDirection
  34. final def synchronized[T0](arg0: => T0): T0
    Definition Classes
    AnyRef
  35. def toString(): String
    Definition Classes
    AnyRef → Any
  36. final def wait(arg0: Long, arg1: Int): Unit
    Definition Classes
    AnyRef
    Annotations
    @throws(classOf[java.lang.InterruptedException])
  37. final def wait(arg0: Long): Unit
    Definition Classes
    AnyRef
    Annotations
    @throws(classOf[java.lang.InterruptedException]) @native()
  38. final def wait(): Unit
    Definition Classes
    AnyRef
    Annotations
    @throws(classOf[java.lang.InterruptedException])
  39. def widthOf(target: Data): Width
  40. object internal

Deprecated Value Members

  1. def finalize(): Unit
    Attributes
    protected[lang]
    Definition Classes
    AnyRef
    Annotations
    @throws(classOf[java.lang.Throwable]) @Deprecated
    Deprecated

Inherited from AnyRef

Inherited from Any

Ungrouped