// SPDX-License-Identifier: Apache-2.0 package chisel3.experimental.hierarchy /** A User-extendable trait to mark metadata-containers, e.g. parameter case classes, as valid to return unchanged * from an instance. * * This should only be true of the metadata returned is identical for ALL instances! * * @example For instances of the same proto, metadata or other construction parameters * may be useful to access outside of the instance construction. For parameters that are * the same for all instances, we should mark it as IsLookupable * {{{ * case class Params(debugMessage: String) extends IsLookupable * class MyModule(p: Params) extends MultiIOModule { * printf(p.debugMessage) * } * val myParams = Params("Hello World") * val definition = Definition(new MyModule(myParams)) * val i0 = Instance(definition) * val i1 = Instance(definition) * require(i0.p == i1.p) // p is only accessable because it extends IsLookupable * }}} */ trait IsLookupable