chisel3.experimental.hierarchy
Members list
Packages
Type members
Classlikes
Attributes
- Source
- LibraryHooks.scala
- Supertypes
-
class Objecttrait Matchableclass Any
Attributes
- Note
-
If we are cloning a non-module, we need another object which has the proper _parent set!
- Source
- InstantiableClone.scala
- Supertypes
Create an Instance of a Module
Acts as a nicer API wrapping Definition and Instance. Used in a similar way to traditional module instantiation using Module(...).
val inst0: Instance[MyModule] = Instantiate(new MyModule(arg1, arg2))
// Note that you cannot pass arguments by name (this will not compile)
val inst1 = Instantiate(new OtherModule(n = 3))
// Instead, only pass arguments positionally
val inst2 = Instantiate(new OtherModule(3))
==Limitations==
- The caching does not work for Modules that are inner classes. This is due to the fact that the WeakTypeTags for instances will be different and thus will not hit in the cache.
- Passing parameters by name to module constructors is not supported.
- User-defined types that wrap up Data will use the default Data equality and hashCode implementations which use referential equality, thus will not hit in the cache.
Attributes
- Source
- Instantiate.scala
- Supertypes
-
class Objecttrait Matchableclass Any
- Self type
-
Instantiate.type
Attributes
- Source
- LibraryHooks.scala
- Supertypes
-
class Objecttrait Matchableclass Any
- Self type
-
LibraryHooks.type
Classes or traits which will be used with the Definition + Instance api should be marked with the instantiable annotation at the class/trait definition.
Classes or traits which will be used with the Definition + Instance api should be marked with the instantiable annotation at the class/trait definition.
Attributes
- Example
-
@instantiable class MyModule extends Module { ... } val d = Definition(new MyModule) val i0 = Instance(d) val i1 = Instance(d) - Source
- HierarchyMarker.scala
- Supertypes
-
trait StaticAnnotationclass Annotationclass Objecttrait Matchableclass Any
Classes marked with instantiable can have their vals marked with the public annotation to enable accessing these values from a Definition or Instance of the class.
Classes marked with instantiable can have their vals marked with the public annotation to enable accessing these values from a Definition or Instance of the class.
Only vals of the the following types can be marked public:
- IsInstantiable
- IsLookupable
- Data
- BaseModule
- Iterable/Option containing a type that meets these requirements
- Basic type like String, Int, BigInt etc.
Attributes
- Example
-
@instantiable class MyModule extends Module { @public val in = IO(Input(UInt(3.W))) @public val out = IO(Output(UInt(3.W))) .. } val d = Definition(new MyModule) val i0 = Instance(d) val i1 = Instance(d) i1.in := i0.out - Source
- HierarchyMarker.scala
- Supertypes
-
trait StaticAnnotationclass Annotationclass Objecttrait Matchableclass Any
Types
Attributes
- Source
- package.scala
Attributes
- Source
- package.scala
Attributes
- Source
- package.scala
Attributes
- Source
- package.scala
Attributes
- Source
- package.scala
Attributes
- Source
- package.scala
Value members
Concrete fields
Attributes
- Source
- package.scala
Attributes
- Source
- package.scala
Attributes
- Source
- package.scala
Attributes
- Source
- package.scala