From a1af6b7099f1207c67db3561507615fd18c487ef Mon Sep 17 00:00:00 2001 From: Megan Wachs Date: Fri, 7 Jan 2022 15:28:56 -0800 Subject: Add a Select.ios that works with Definition/Instance, fix isA behavior (#2315) * New Feature: Add a Select.ios that works with Definition/Instance * BugFix: isA now truly ignores type parameters--- src/main/scala/chisel3/aop/injecting/InjectingAspect.scala | 1 - 1 file changed, 1 deletion(-) (limited to 'src/main/scala/chisel3/aop/injecting') diff --git a/src/main/scala/chisel3/aop/injecting/InjectingAspect.scala b/src/main/scala/chisel3/aop/injecting/InjectingAspect.scala index dc7e6487..ed59d4fb 100644 --- a/src/main/scala/chisel3/aop/injecting/InjectingAspect.scala +++ b/src/main/scala/chisel3/aop/injecting/InjectingAspect.scala @@ -4,7 +4,6 @@ package chisel3.aop.injecting import chisel3.{Module, ModuleAspect, RawModule, withClockAndReset} import chisel3.aop._ -import chisel3.experimental.hierarchy.IsInstantiable import chisel3.internal.{Builder, DynamicContext} import chisel3.internal.firrtl.DefModule import chisel3.stage.DesignAnnotation -- cgit v1.2.3 From 3131c0daad41dea78bede4517669e376c41a325a Mon Sep 17 00:00:00 2001 From: Jack Koenig Date: Mon, 10 Jan 2022 10:39:52 -0800 Subject: Apply scalafmt Command: sbt scalafmtAll --- .../chisel3/aop/injecting/InjectStatement.scala | 7 +++- .../chisel3/aop/injecting/InjectingAspect.scala | 42 ++++++++++++---------- .../chisel3/aop/injecting/InjectingTransform.scala | 4 +-- 3 files changed, 31 insertions(+), 22 deletions(-) (limited to 'src/main/scala/chisel3/aop/injecting') diff --git a/src/main/scala/chisel3/aop/injecting/InjectStatement.scala b/src/main/scala/chisel3/aop/injecting/InjectStatement.scala index 92e24ba1..dbe1fd7b 100644 --- a/src/main/scala/chisel3/aop/injecting/InjectStatement.scala +++ b/src/main/scala/chisel3/aop/injecting/InjectStatement.scala @@ -15,7 +15,12 @@ import firrtl.annotations.{Annotation, ModuleTarget, NoTargetAnnotation, SingleT * @param modules Additional modules that may be instantiated by s * @param annotations Additional annotations that should be passed down compiler */ -case class InjectStatement(module: ModuleTarget, s: firrtl.ir.Statement, modules: Seq[firrtl.ir.DefModule], annotations: Seq[Annotation]) extends SingleTargetAnnotation[ModuleTarget] { +case class InjectStatement( + module: ModuleTarget, + s: firrtl.ir.Statement, + modules: Seq[firrtl.ir.DefModule], + annotations: Seq[Annotation]) + extends SingleTargetAnnotation[ModuleTarget] { val target: ModuleTarget = module override def duplicate(n: ModuleTarget): Annotation = this.copy(module = n) } diff --git a/src/main/scala/chisel3/aop/injecting/InjectingAspect.scala b/src/main/scala/chisel3/aop/injecting/InjectingAspect.scala index ed59d4fb..abe208cf 100644 --- a/src/main/scala/chisel3/aop/injecting/InjectingAspect.scala +++ b/src/main/scala/chisel3/aop/injecting/InjectingAspect.scala @@ -2,7 +2,7 @@ package chisel3.aop.injecting -import chisel3.{Module, ModuleAspect, RawModule, withClockAndReset} +import chisel3.{withClockAndReset, Module, ModuleAspect, RawModule} import chisel3.aop._ import chisel3.internal.{Builder, DynamicContext} import chisel3.internal.firrtl.DefModule @@ -22,12 +22,12 @@ import scala.collection.mutable * @tparam M Type of root module (join point) */ case class InjectingAspect[T <: RawModule, M <: RawModule]( - selectRoots: T => Iterable[M], - injection: M => Unit -) extends InjectorAspect[T, M]( - selectRoots, - injection -) + selectRoots: T => Iterable[M], + injection: M => Unit) + extends InjectorAspect[T, M]( + selectRoots, + injection + ) /** Extend to inject Chisel code into a module of type M * @@ -38,11 +38,12 @@ case class InjectingAspect[T <: RawModule, M <: RawModule]( * @tparam M Type of root module (join point) */ abstract class InjectorAspect[T <: RawModule, M <: RawModule]( - selectRoots: T => Iterable[M], - injection: M => Unit -) extends Aspect[T] { + selectRoots: T => Iterable[M], + injection: M => Unit) + extends Aspect[T] { final def toAnnotation(top: T): AnnotationSeq = { - val moduleNames = Select.allDefinitionsOf[chisel3.experimental.BaseModule](top.toDefinition).map{i => i.toTarget.module }.toSeq + val moduleNames = + Select.allDefinitionsOf[chisel3.experimental.BaseModule](top.toDefinition).map { i => i.toTarget.module }.toSeq toAnnotation(selectRoots(top), top.name, moduleNames) } @@ -62,22 +63,26 @@ abstract class InjectorAspect[T <: RawModule, M <: RawModule]( dynamicContext.globalNamespace.name(n) } - val (chiselIR, _) = Builder.build(Module(new ModuleAspect(module) { - module match { - case x: Module => withClockAndReset(x.clock, x.reset) { injection(module) } - case x: RawModule => injection(module) - } - }), dynamicContext) + val (chiselIR, _) = Builder.build( + Module(new ModuleAspect(module) { + module match { + case x: Module => withClockAndReset(x.clock, x.reset) { injection(module) } + case x: RawModule => injection(module) + } + }), + dynamicContext + ) val comps = chiselIR.components.map { case x: DefModule if x.name == module.name => x.copy(id = module) case other => other } - val annotations = chiselIR.annotations.map(_.toFirrtl).filterNot{ a => a.isInstanceOf[DesignAnnotation[_]] } + val annotations = chiselIR.annotations.map(_.toFirrtl).filterNot { a => a.isInstanceOf[DesignAnnotation[_]] } /** Statements to be injected via aspect. */ val stmts = mutable.ArrayBuffer[ir.Statement]() + /** Modules to be injected via aspect. */ val modules = Aspect.getFirrtl(chiselIR.copy(components = comps)).modules.flatMap { // for "container" modules, inject their statements @@ -93,4 +98,3 @@ abstract class InjectorAspect[T <: RawModule, M <: RawModule]( }.toSeq } } - diff --git a/src/main/scala/chisel3/aop/injecting/InjectingTransform.scala b/src/main/scala/chisel3/aop/injecting/InjectingTransform.scala index cc5601b1..8a0b6ecb 100644 --- a/src/main/scala/chisel3/aop/injecting/InjectingTransform.scala +++ b/src/main/scala/chisel3/aop/injecting/InjectingTransform.scala @@ -2,7 +2,7 @@ package chisel3.aop.injecting -import firrtl.{ChirrtlForm, CircuitForm, CircuitState, Transform, ir} +import firrtl.{ir, ChirrtlForm, CircuitForm, CircuitState, Transform} import scala.collection.mutable @@ -11,7 +11,7 @@ import scala.collection.mutable * Implemented with Chisel Aspects and the [[chisel3.aop.injecting]] library */ class InjectingTransform extends Transform { - override def inputForm: CircuitForm = ChirrtlForm + override def inputForm: CircuitForm = ChirrtlForm override def outputForm: CircuitForm = ChirrtlForm override def execute(state: CircuitState): CircuitState = { -- cgit v1.2.3