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, 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 aop
    Definition Classes
    chisel3
  • package choice

    This package contains Chisel language definitions for describing configuration options and their accepted values.

    This package contains Chisel language definitions for describing configuration options and their accepted values.

    Definition Classes
    chisel3
  • package connectable
    Definition Classes
    chisel3
  • package experimental

    Package for experimental features, which may have their API changed, be removed, etc.

    Package for experimental features, which may have their API changed, be removed, etc.

    Because its contents won't necessarily have the same level of stability and support as non-experimental, you must explicitly import this package to use its contents.

    Definition Classes
    chisel3
  • package interface
    Definition Classes
    chisel3
  • package layers

    This package contains common layer.Layers used by Chisel generators.

    This package contains common layer.Layers used by Chisel generators.

    Definition Classes
    chisel3
  • package ltl
    Definition Classes
    chisel3
  • package naming
    Definition Classes
    chisel3
  • package probe
    Definition Classes
    chisel3
  • Probe
  • ProbeValue
  • RWProbe
  • RWProbeValue
  • package properties

    The properties package includes functionality related to non-hardware data.

    The properties package includes functionality related to non-hardware data.

    This entire package is currently very experimental, so expect some rough edges and rapid API evolution.

    Definition Classes
    chisel3
  • package reflect
    Definition Classes
    chisel3
  • package simulator
    Definition Classes
    chisel3
  • package stage
    Definition Classes
    chisel3
  • package test
    Definition Classes
    chisel3
  • package testing
    Definition Classes
    chisel3
  • package util

    The util package provides extensions to core chisel for common hardware components and utility functions

    The util package provides extensions to core chisel for common hardware components and utility functions

    Definition Classes
    chisel3

package probe

Source
package.scala
Linear Supertypes
Probe$Intf, SourceInfoDoc, AnyRef, Any
Ordering
  1. Grouped
  2. Alphabetic
  3. By Inheritance
Inherited
  1. probe
  2. Probe$Intf
  3. SourceInfoDoc
  4. AnyRef
  5. Any
  1. Hide All
  2. Show All
Visibility
  1. Public
  2. Protected

Value Members

  1. def define[T <: Data](sink: T, probeExpr: T)(implicit sourceInfo: SourceInfo): Unit

    Initialize a probe with a provided probe value.

    Initialize a probe with a provided probe value.

    sink

    probe to initialize

    probeExpr

    value to initialize the sink to

  2. def do_read[T <: Data](source: T)(implicit sourceInfo: SourceInfo): T

    Definition Classes
    Probe$Intf
  3. def force(probe: Data, value: Data)(implicit sourceInfo: SourceInfo): Unit

    Override existing driver of a writable probe.

    Override existing driver of a writable probe. If called within the scope of a when block, the force will only occur on cycles that the when condition is true.

    Fires only when reset has been asserted and then deasserted through the Disable API.

    probe

    writable Probe to force

    value

    to force onto the probe

  4. def forceInitial(probe: Data, value: Data)(implicit sourceInfo: SourceInfo): Unit

    Override existing driver of a writable probe on initialization.

    Override existing driver of a writable probe on initialization.

    probe

    writable Probe to force

    value

    to force onto the probe

  5. macro def read[T <: Data](source: T): T

    Access the value of a probe.

    Access the value of a probe.

    source

    probe whose value is getting accessed

    Definition Classes
    Probe$Intf
  6. def release(probe: Data)(implicit sourceInfo: SourceInfo): Unit

    Release driver on a probe.

    Release driver on a probe. If called within the scope of a when block, the release will only occur on cycles that the when condition is true.

    Fires only when reset has been asserted and then deasserted through the Disable API.

    probe

    writable Probe to release

  7. def releaseInitial(probe: Data)(implicit sourceInfo: SourceInfo): Unit

    Release initial driver on a probe.

    Release initial driver on a probe.

    probe

    writable Probe to release

  8. object Probe extends ProbeBase with SourceInfoDoc
  9. object ProbeValue extends ProbeValueBase with SourceInfoDoc
  10. object RWProbe extends ProbeBase with SourceInfoDoc
  11. object RWProbeValue extends ProbeValueBase with SourceInfoDoc

Inherited from Probe$Intf

Inherited from SourceInfoDoc

Inherited from AnyRef

Inherited from Any

Ungrouped

SourceInfoTransformMacro

These internal methods are not part of the public-facing API!

The equivalent public-facing methods do not have the do_ prefix or have the same name. Use and look at the documentation for those. If you want left shift, use <<, not do_<<. If you want conversion to a Seq of Bools look at the asBools above, not the one below. Users can safely ignore every method in this group!

🐉🐉🐉 Here be dragons... 🐉🐉🐉

These do_X methods are used to enable both implicit passing of SourceInfo while also supporting chained apply methods. In effect all "normal" methods that you, as a user, will use in your designs, are converted to their "hidden", do_*, via macro transformations. Without using macros here, only one of the above wanted behaviors is allowed (implicit passing and chained applies)---the compiler interprets a chained apply as an explicit 'implicit' argument and will throw type errors.

The "normal", public-facing methods then take no SourceInfo. However, a macro transforms this public-facing method into a call to an internal, hidden do_* that takes an explicit SourceInfo by inserting an implicitly[SourceInfo] as the explicit argument.