aboutsummaryrefslogtreecommitdiff
path: root/src/main/scala/firrtl/passes/ReplaceAccesses.scala
diff options
context:
space:
mode:
authorchick2016-09-23 16:20:32 -0700
committerDonggyu Kim2016-09-25 14:39:44 -0700
commitf214b7301c0a9bd2de22a5fceebd754ae119c59e (patch)
treea0a046639330d039016ebabf2365e73d0d4224fc /src/main/scala/firrtl/passes/ReplaceAccesses.scala
parent0c34f5c8642a9a2eea113461decff57f148b2d81 (diff)
Change file name ReplacesSubAccesses ReplaceAccess
Diffstat (limited to 'src/main/scala/firrtl/passes/ReplaceAccesses.scala')
-rw-r--r--src/main/scala/firrtl/passes/ReplaceAccesses.scala27
1 files changed, 27 insertions, 0 deletions
diff --git a/src/main/scala/firrtl/passes/ReplaceAccesses.scala b/src/main/scala/firrtl/passes/ReplaceAccesses.scala
new file mode 100644
index 00000000..ce95be13
--- /dev/null
+++ b/src/main/scala/firrtl/passes/ReplaceAccesses.scala
@@ -0,0 +1,27 @@
+package firrtl.passes
+
+import firrtl.ir._
+import firrtl.{WRef, WSubAccess, WSubIndex, WSubField}
+import firrtl.Mappers._
+import firrtl.Utils._
+import firrtl.WrappedExpression._
+import firrtl.Namespace
+import scala.collection.mutable
+
+
+/** Replaces constant [[firrtl.WSubAccess]] with [[firrtl.WSubIndex]]
+ * TODO Fold in to High Firrtl Const Prop
+ */
+object ReplaceAccesses extends Pass {
+ def name = "Replace Accesses"
+
+ def run(c: Circuit): Circuit = {
+ def onStmt(s: Statement): Statement = s map onStmt map onExp
+ def onExp(e: Expression): Expression = e match {
+ case WSubAccess(e, UIntLiteral(value, width), t, g) => WSubIndex(e, value.toInt, t, g)
+ case e => e map onExp
+ }
+
+ c copy (modules = c.modules map (_ map onStmt))
+ }
+}