object Valid

Factory for generating "valid" interfaces. A "valid" interface is a data-communicating interface between a producer and a consumer where the producer does not wait for the consumer. Concretely, this means that one additional bit is added to the data indicating its validity.

As an example, consider the following Bundle, MyBundle:

class MyBundle extends Bundle {
  val foo = Output(UInt(8.W))
}

To convert this to a valid interface, you wrap it with a call to the Valid companion object's apply method:

val bar = Valid(new MyBundle)

The resulting interface is structurally equivalent to the following:

class MyValidBundle extends Bundle {
  val valid = Output(Bool())
  val bits = Output(new MyBundle)
}

In addition to adding the valid bit, a Valid.fire method is also added that returns the valid bit. This

provides a similarly named interface to DecoupledIO's fire.

Source
Valid.scala
See also

DecoupledIO Factory

IrrevocableIO Factory

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

Value Members

  1. def apply[T <: Data](gen: T): Valid[T]

    Wrap some Data in a valid interface

    Wrap some Data in a valid interface

    T

    the type of the data to wrap

    gen

    the data to wrap

    returns

    the wrapped input data