abstract class Domain extends AnyRef
A Domain represents a kind information, and the schema of that information, that can be associated with certain hardware in a Chisel design.
A domain is intended to represent a specific _kind_ of hardware-related concern that is not captured with the digital, synchronous logic that core Chisel represents. Examples of domains are clock, reset, and power domains. And while some domains are provided as part of Chisel, domain kinds are intentionall user-extensible.
To create a new user-defined domain kind, define an object that extends the
Domain class. Add fields to define the domain's schema by overridding
the fields method:
import chisel3.domain.{Domain, Field} object FooDomain extends Domain { override def fields: Seq[(String, Field.Type)] = Seq( "bar" -> Field.Boolean, "baz" -> Field.Integer, "qux" -> Field.String ) }
- Self Type
- Domain with Singleton
- Source
- Domain.scala
- See also
- Alphabetic
- By Inheritance
- Domain
- AnyRef
- Any
- by any2stringadd
- by StringFormat
- by Ensuring
- by ArrowAssoc
- Hide All
- Show All
- Public
- Protected
Instance Constructors
- new Domain()(implicit sourceInfo: SourceInfo)
Value Members
- final def !=(arg0: Any): Boolean
- Definition Classes
- AnyRef → Any
- final def ##: Int
- Definition Classes
- AnyRef → Any
- def +(other: String): String
- def ->[B](y: B): (Domain, B)
- final def ==(arg0: Any): Boolean
- Definition Classes
- AnyRef → Any
- final def Type(): Type
Construct a type of this domain kind.
Construct a type of this domain kind.
For a given domain, this is used to create a Chisel type which can be used in a port. This is typically used to create domain type ports.
E.g., to create a chisel3.domains.ClockDomain port, use:
import chisel3.domains.ClockDomain val A = IO(Input(ClockDomain.Type()))
- final def asInstanceOf[T0]: T0
- Definition Classes
- Any
- def clone(): AnyRef
- Attributes
- protected[lang]
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.CloneNotSupportedException]) @native()
- def ensuring(cond: (Domain) => Boolean, msg: => Any): Domain
- def ensuring(cond: (Domain) => Boolean): Domain
- def ensuring(cond: Boolean, msg: => Any): Domain
- def ensuring(cond: Boolean): Domain
- final def eq(arg0: AnyRef): Boolean
- Definition Classes
- AnyRef
- def equals(arg0: AnyRef): Boolean
- Definition Classes
- AnyRef → Any
- def fields: Seq[(String, Field.Type)]
A sequence of name--type pairs that define the schema for this domain.
A sequence of name--type pairs that define the schema for this domain.
The fields comprise the information that a user, after Verilog generation, should set in order to interact with, generate collateral files related to, or check the correctness of their choices for a domain.
Alternatively, the fields are the "parameters" for the domain. E.g., a clock domain could be parameterzied by an integer frequency. Chisel itself has no knowledge of this frequency, nor does it need a frequency to generate Verilog. However, in order to generate an implementation constraints file, the user must provide a frequency.
To change the fields from the default, override this method in your domain.
override def fields: Seq[(String, Field.Type)] = Seq( "foo" -> Field.Boolean )
- def finalize(): Unit
- Attributes
- protected[lang]
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.Throwable])
- final def getClass(): Class[_ <: AnyRef]
- Definition Classes
- AnyRef → Any
- Annotations
- @native()
- def hashCode(): Int
- Definition Classes
- AnyRef → Any
- Annotations
- @native()
- final def isInstanceOf[T0]: Boolean
- Definition Classes
- Any
- final def ne(arg0: AnyRef): Boolean
- Definition Classes
- AnyRef
- final def notify(): Unit
- Definition Classes
- AnyRef
- Annotations
- @native()
- final def notifyAll(): Unit
- Definition Classes
- AnyRef
- Annotations
- @native()
- implicit val sourceInfo: SourceInfo
- final def synchronized[T0](arg0: => T0): T0
- Definition Classes
- AnyRef
- def toString(): String
- Definition Classes
- AnyRef → Any
- final def wait(): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.InterruptedException])
- final def wait(arg0: Long, arg1: Int): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.InterruptedException])
- final def wait(arg0: Long): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.InterruptedException]) @native()
Deprecated Value Members
- def formatted(fmtstr: String): String
- Implicit
- This member is added by an implicit conversion from Domain toStringFormat[Domain] performed by method StringFormat in scala.Predef.
- Definition Classes
- StringFormat
- Annotations
- @deprecated @inline()
- Deprecated
(Since version 2.12.16) Use
formatString.format(value)instead ofvalue.formatted(formatString), or use thef""string interpolator. In Java 15 and later,formattedresolves to the new method in String which has reversed parameters.
- def →[B](y: B): (Domain, B)
- Implicit
- This member is added by an implicit conversion from Domain toArrowAssoc[Domain] performed by method ArrowAssoc in scala.Predef.
- Definition Classes
- ArrowAssoc
- Annotations
- @deprecated
- Deprecated
(Since version 2.13.0) Use
->instead. If you still wish to display it as one character, consider using a font with programming ligatures such as Fira Code.
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, andReg, the abstract typesBits,Aggregate, andData, and the aggregate typesBundleandVec.The Chisel package is a compatibility layer that attempts to provide chisel2 compatibility in chisel3.
Utility objects and methods are found in the
utilpackage.The
testerspackage defines the basic interface for chisel testers.