From 1a4e0dd65ba3e64268beca8f592bd58d98c434a4 Mon Sep 17 00:00:00 2001 From: Adam Izraelevitz Date: Mon, 2 Mar 2020 10:51:51 -0800 Subject: Cleanup aspects (#1359) * Clean up aspects * Refactored InjectingAspect with InjectorAspect * Made AspectLibrary work with objects * Cleaned up code * Apply suggestions from code review * Added tests, removed deprecated newInstance call * Backed out removal of newInstance as exceptions were different * Removed trailing commas --- .../chisel3/aop/inspecting/InspectingAspect.scala | 27 ++++++++++++++++++++++ 1 file changed, 27 insertions(+) create mode 100644 src/main/scala/chisel3/aop/inspecting/InspectingAspect.scala (limited to 'src/main/scala/chisel3/aop/inspecting') diff --git a/src/main/scala/chisel3/aop/inspecting/InspectingAspect.scala b/src/main/scala/chisel3/aop/inspecting/InspectingAspect.scala new file mode 100644 index 00000000..faff2817 --- /dev/null +++ b/src/main/scala/chisel3/aop/inspecting/InspectingAspect.scala @@ -0,0 +1,27 @@ +// See LICENSE for license details. + +package chisel3.aop.inspecting + +import chisel3.RawModule +import chisel3.aop.Aspect +import firrtl.AnnotationSeq + +/** Use for inspecting an elaborated design and printing out results + * + * @param inspect Given top-level design, print things and return nothing + * @tparam T Type of top-level module + */ +case class InspectingAspect[T <: RawModule](inspect: T => Unit) extends InspectorAspect[T](inspect) + + +/** Extend to make custom inspections of an elaborated design and printing out results + * + * @param inspect Given top-level design, print things and return nothing + * @tparam T Type of top-level module + */ +abstract class InspectorAspect[T <: RawModule](inspect: T => Unit) extends Aspect[T] { + override def toAnnotation(top: T): AnnotationSeq = { + inspect(top) + Nil + } +} -- cgit v1.2.3