Class

chisel3.core

BlackBox

Related Doc: package core

Permalink

abstract class BlackBox extends Module

Defines a black box, which is a module that can be referenced from within Chisel, but is not defined in the emitted Verilog. Useful for connecting to RTL modules defined outside Chisel.

Example:
  1. Some design require a differential input clock to clock the all design. With the xilinx FPGA for example, a Verilog template named IBUFDS must be integrated to use differential input:

    IBUFDS #(.DIFF_TERM("TRUE"),
             .IOSTANDARD("DEFAULT")) ibufds (
     .IB(ibufds_IB),
     .I(ibufds_I),
     .O(ibufds_O)
    );

    To instantiate it, a BlackBox can be used like following:

    import chisel3._
    import chisel3.experimental._
    // Example with Xilinx differential buffer IBUFDS
    class IBUFDS extends BlackBox(Map("DIFF_TERM" -> "TRUE", // Verilog parameters
                                      "IOSTANDARD" -> "DEFAULT"
                         )) {
      val io = IO(new Bundle {
        val O = Output(Clock()) // IO names will be the same
        val I = Input(Clock())  // (without 'io_' in prefix)
        val IB = Input(Clock()) //
      })
    }
Note

The parameters API is experimental and may change

Linear Supertypes
Module, HasId, InstanceId, AnyRef, Any
Known Subclasses
Type Hierarchy Learn more about scaladoc diagrams
Ordering
  1. Alphabetic
  2. By inheritance
Inherited
  1. BlackBox
  2. Module
  3. HasId
  4. InstanceId
  5. AnyRef
  6. Any
  1. Hide All
  2. Show all
Visibility
  1. Public
  2. All

Instance Constructors

  1. new BlackBox(params: Map[String, Param] = Map.empty[String, Param])

    Permalink

Abstract Value Members

  1. abstract def io: Record

    Permalink

    IO for this Module.

    IO for this Module. At the Scala level (pre-FIRRTL transformations), connections in and out of a Module may only go through io elements.

    Definition Classes
    Module

Concrete Value Members

  1. final def !=(arg0: Any): Boolean

    Permalink
    Definition Classes
    AnyRef → Any
  2. final def ##(): Int

    Permalink
    Definition Classes
    AnyRef → Any
  3. final def ==(arg0: Any): Boolean

    Permalink
    Definition Classes
    AnyRef → Any
  4. def IO[T <: Data](iodef: T): iodef.type

    Permalink

    This must wrap the datatype used to set the io field of any Module.

    This must wrap the datatype used to set the io field of any Module. i.e. All concrete modules must have defined io in this form: [lazy] val io[: io type] = IO(...[: io type])

    Items in [] are optional.

    The granted iodef WILL NOT be cloned (to allow for more seamless use of anonymous Bundles in the IO) and thus CANNOT have been bound to any logic. This will error if any node is bound (e.g. due to logic in a Bundle constructor, which is considered improper).

    TODO(twigg): Specifically walk the Data definition to call out which nodes are problematic.

    Definition Classes
    Module
  5. def annotate(annotation: ChiselAnnotation): Unit

    Permalink
    Definition Classes
    Module
  6. final def asInstanceOf[T0]: T0

    Permalink
    Definition Classes
    Any
  7. val clock: Null

    Permalink
    Definition Classes
    BlackBoxModule
  8. def clone(): AnyRef

    Permalink
    Attributes
    protected[java.lang]
    Definition Classes
    AnyRef
    Annotations
    @throws( ... )
  9. val compileOptions: CompileOptions

    Permalink
    Definition Classes
    Module
  10. def desiredName: String

    Permalink

    Desired name of this module.

    Desired name of this module.

    Definition Classes
    Module
  11. final def eq(arg0: AnyRef): Boolean

    Permalink
    Definition Classes
    AnyRef
  12. def equals(that: Any): Boolean

    Permalink
    Definition Classes
    HasId → AnyRef → Any
  13. def finalize(): Unit

    Permalink
    Attributes
    protected[java.lang]
    Definition Classes
    AnyRef
    Annotations
    @throws( classOf[java.lang.Throwable] )
  14. final def getClass(): Class[_]

    Permalink
    Definition Classes
    AnyRef → Any
  15. lazy val getPorts: Seq[Port]

    Permalink
    Definition Classes
    Module
  16. def hashCode(): Int

    Permalink
    Definition Classes
    HasId → AnyRef → Any
  17. def instanceName: String

    Permalink

    Signal name (for simulation).

    Signal name (for simulation).

    Definition Classes
    Module → HasId → InstanceId
  18. final def isInstanceOf[T0]: Boolean

    Permalink
    Definition Classes
    Any
  19. final val name: String

    Permalink

    Legalized name of this module.

    Legalized name of this module.

    Definition Classes
    Module
  20. final def ne(arg0: AnyRef): Boolean

    Permalink
    Definition Classes
    AnyRef
  21. final def notify(): Unit

    Permalink
    Definition Classes
    AnyRef
  22. final def notifyAll(): Unit

    Permalink
    Definition Classes
    AnyRef
  23. val params: Map[String, Param]

    Permalink
  24. def parentModName: String

    Permalink
    Definition Classes
    HasId → InstanceId
  25. def parentPathName: String

    Permalink
    Definition Classes
    HasId → InstanceId
  26. def pathName: String

    Permalink
    Definition Classes
    HasId → InstanceId
  27. val reset: Null

    Permalink
    Definition Classes
    BlackBoxModule
  28. def suggestName(name: ⇒ String): BlackBox.this.type

    Permalink
    Definition Classes
    HasId
  29. final def synchronized[T0](arg0: ⇒ T0): T0

    Permalink
    Definition Classes
    AnyRef
  30. def toString(): String

    Permalink
    Definition Classes
    AnyRef → Any
  31. final def wait(): Unit

    Permalink
    Definition Classes
    AnyRef
    Annotations
    @throws( ... )
  32. final def wait(arg0: Long, arg1: Int): Unit

    Permalink
    Definition Classes
    AnyRef
    Annotations
    @throws( ... )
  33. final def wait(arg0: Long): Unit

    Permalink
    Definition Classes
    AnyRef
    Annotations
    @throws( ... )

Inherited from Module

Inherited from HasId

Inherited from InstanceId

Inherited from AnyRef

Inherited from Any

Ungrouped