summaryrefslogtreecommitdiff
path: root/chiselFrontend/src/main/scala/chisel3/internal
diff options
context:
space:
mode:
authorJim Lawson2016-12-19 10:20:48 -0800
committerGitHub2016-12-19 10:20:48 -0800
commitdd4650d29ed18ec610ad7561f4e9c990ba887a3d (patch)
tree333fe66fba7ea7337fa1f6ffe1ec905cd2f724f3 /chiselFrontend/src/main/scala/chisel3/internal
parent207da69768dac464a719a7c712f6977371f7c5f4 (diff)
parent0233f704e83d380b1fe8311dfffa3f44f74b506b (diff)
Merge branch 'master' into exceptionfix
Diffstat (limited to 'chiselFrontend/src/main/scala/chisel3/internal')
-rw-r--r--chiselFrontend/src/main/scala/chisel3/internal/Builder.scala12
-rw-r--r--chiselFrontend/src/main/scala/chisel3/internal/firrtl/IR.scala4
2 files changed, 10 insertions, 6 deletions
diff --git a/chiselFrontend/src/main/scala/chisel3/internal/Builder.scala b/chiselFrontend/src/main/scala/chisel3/internal/Builder.scala
index 828f1583..6e463311 100644
--- a/chiselFrontend/src/main/scala/chisel3/internal/Builder.scala
+++ b/chiselFrontend/src/main/scala/chisel3/internal/Builder.scala
@@ -108,22 +108,22 @@ private[chisel3] trait HasId extends InstanceId {
private[chisel3] def getRef: Arg = _ref.get
// Implementation of public methods.
- def instanceName = _parent match {
+ def instanceName: String = _parent match {
case Some(p) => p._component match {
case Some(c) => getRef fullName c
case None => throwException("signalName/pathName should be called after circuit elaboration")
}
case None => throwException("this cannot happen")
}
- def pathName = _parent match {
+ def pathName: String = _parent match {
case None => instanceName
case Some(p) => s"${p.pathName}.$instanceName"
}
- def parentPathName = _parent match {
+ def parentPathName: String = _parent match {
case Some(p) => p.pathName
case None => throwException(s"$instanceName doesn't have a parent")
}
- def parentModName = _parent match {
+ def parentModName: String = _parent match {
case Some(p) => p.name
case None => throwException(s"$instanceName doesn't have a parent")
}
@@ -145,6 +145,7 @@ private[chisel3] class DynamicContext() {
val idGen = new IdGen
val globalNamespace = new Namespace(None, Set())
val components = ArrayBuffer[Component]()
+ val annotations = ArrayBuffer[ChiselAnnotation]()
var currentModule: Option[Module] = None
// Set by object Module.apply before calling class Module constructor
// Used to distinguish between no Module() wrapping, multiple wrappings, and rewrapping
@@ -161,6 +162,7 @@ private[chisel3] object Builder {
def idGen: IdGen = dynamicContext.idGen
def globalNamespace: Namespace = dynamicContext.globalNamespace
def components: ArrayBuffer[Component] = dynamicContext.components
+ def annotations: ArrayBuffer[ChiselAnnotation] = dynamicContext.annotations
def currentModule: Option[Module] = dynamicContext.currentModule
def currentModule_=(target: Option[Module]): Unit = {
@@ -216,7 +218,7 @@ private[chisel3] object Builder {
errors.checkpoint()
errors.info("Done elaborating.")
- Circuit(components.last.name, components)
+ Circuit(components.last.name, components, annotations.map(_.toFirrtl))
}
}
}
diff --git a/chiselFrontend/src/main/scala/chisel3/internal/firrtl/IR.scala b/chiselFrontend/src/main/scala/chisel3/internal/firrtl/IR.scala
index 699cc13c..50400034 100644
--- a/chiselFrontend/src/main/scala/chisel3/internal/firrtl/IR.scala
+++ b/chiselFrontend/src/main/scala/chisel3/internal/firrtl/IR.scala
@@ -7,6 +7,8 @@ import core._
import chisel3.internal._
import chisel3.internal.sourceinfo.{SourceInfo, NoSourceInfo}
+import _root_.firrtl.annotations.Annotation
+
case class PrimOp(val name: String) {
override def toString: String = name
}
@@ -273,4 +275,4 @@ abstract class Component extends Arg {
case class DefModule(id: Module, name: String, ports: Seq[Port], commands: Seq[Command]) extends Component
case class DefBlackBox(id: Module, name: String, ports: Seq[Port], params: Map[String, Param]) extends Component
-case class Circuit(name: String, components: Seq[Component])
+case class Circuit(name: String, components: Seq[Component], annotations: Seq[Annotation] = Seq.empty)