aboutsummaryrefslogtreecommitdiff
path: root/src/main/scala/firrtl/passes
diff options
context:
space:
mode:
authorDonggyu2016-09-13 17:36:50 -0700
committerGitHub2016-09-13 17:36:50 -0700
commit7c38199ce7a5d9dd7e27ffbb9b2b2770b972ed94 (patch)
tree2f525cb9ea765b3b3031eef94532a3880f3f55e3 /src/main/scala/firrtl/passes
parent1bb9597a01e77d9a1ece479caf13cf6c3f6229d5 (diff)
use case object for Kind (#267)
use case object for Kind
Diffstat (limited to 'src/main/scala/firrtl/passes')
-rw-r--r--src/main/scala/firrtl/passes/CheckInitialization.scala2
-rw-r--r--src/main/scala/firrtl/passes/Checks.scala2
-rw-r--r--src/main/scala/firrtl/passes/ExpandWhens.scala6
-rw-r--r--src/main/scala/firrtl/passes/InferReadWrite.scala4
-rw-r--r--src/main/scala/firrtl/passes/Inline.scala2
-rw-r--r--src/main/scala/firrtl/passes/LowerTypes.scala12
-rw-r--r--src/main/scala/firrtl/passes/MemUtils.scala3
-rw-r--r--src/main/scala/firrtl/passes/Passes.scala4
-rw-r--r--src/main/scala/firrtl/passes/Resolves.scala12
-rw-r--r--src/main/scala/firrtl/passes/UpdateDuplicateMemMacros.scala2
10 files changed, 24 insertions, 25 deletions
diff --git a/src/main/scala/firrtl/passes/CheckInitialization.scala b/src/main/scala/firrtl/passes/CheckInitialization.scala
index 69629bf0..f90ee277 100644
--- a/src/main/scala/firrtl/passes/CheckInitialization.scala
+++ b/src/main/scala/firrtl/passes/CheckInitialization.scala
@@ -92,7 +92,7 @@ object CheckInitialization extends Pass {
case node: DefNode =>
val (hasVoid, voidDeps) = hasVoidExpr(node.value)
if (hasVoid) {
- val nodeRef = WRef(node.name, node.value.tpe, NodeKind(), MALE)
+ val nodeRef = WRef(node.name, node.value.tpe, NodeKind, MALE)
voidExprs(nodeRef) = VoidExpr(node, voidDeps)
}
node
diff --git a/src/main/scala/firrtl/passes/Checks.scala b/src/main/scala/firrtl/passes/Checks.scala
index c300f7c7..3ee97d08 100644
--- a/src/main/scala/firrtl/passes/Checks.scala
+++ b/src/main/scala/firrtl/passes/Checks.scala
@@ -469,7 +469,7 @@ object CheckGenders extends Pass {
case (MALE, FEMALE) =>
errors append new WrongGender(info, mname, e.serialize, desired, gender)
case (FEMALE, MALE) => kind(e) match {
- case _: PortKind | _: InstanceKind if !flip_q(e.tpe) => // OK!
+ case PortKind | InstanceKind if !flip_q(e.tpe) => // OK!
case _ =>
errors append new WrongGender(info, mname, e.serialize, desired, gender)
}
diff --git a/src/main/scala/firrtl/passes/ExpandWhens.scala b/src/main/scala/firrtl/passes/ExpandWhens.scala
index 5a7a7bac..6bd4bffd 100644
--- a/src/main/scala/firrtl/passes/ExpandWhens.scala
+++ b/src/main/scala/firrtl/passes/ExpandWhens.scala
@@ -53,7 +53,7 @@ object ExpandWhens extends Pass {
// ========== Expand When Utilz ==========
private def getFemaleRefs(n: String, t: Type, g: Gender): Seq[Expression] = {
def getGender(t: Type, i: Int, g: Gender): Gender = times(g, get_flip(t, i, Default))
- val exps = create_exps(WRef(n, t, ExpKind(), g))
+ val exps = create_exps(WRef(n, t, ExpKind, g))
(exps.zipWithIndex foldLeft Seq[Expression]()){
case (expsx, (exp, j)) => getGender(t, j, g) match {
case (BIGENDER | FEMALE) => expsx :+ exp
@@ -140,12 +140,12 @@ object ExpandWhens extends Pass {
res match {
case _: ValidIf | _: Mux | _: DoPrim => nodes get res match {
case Some(name) =>
- netlist(lvalue) = WRef(name, res.tpe, NodeKind(), MALE)
+ netlist(lvalue) = WRef(name, res.tpe, NodeKind, MALE)
EmptyStmt
case None =>
val name = namespace.newTemp
nodes(res) = name
- netlist(lvalue) = WRef(name, res.tpe, NodeKind(), MALE)
+ netlist(lvalue) = WRef(name, res.tpe, NodeKind, MALE)
DefNode(s.info, name, res)
}
case _ =>
diff --git a/src/main/scala/firrtl/passes/InferReadWrite.scala b/src/main/scala/firrtl/passes/InferReadWrite.scala
index 664b3dfc..9fbd6ab3 100644
--- a/src/main/scala/firrtl/passes/InferReadWrite.scala
+++ b/src/main/scala/firrtl/passes/InferReadWrite.scala
@@ -128,7 +128,7 @@ object InferReadWritePass extends Pass {
newName = s"rw_$idx"
if !allPorts(newName)
} yield newName).head
- val rw_exp = WSubField(WRef(mem.name, ut, NodeKind(), ug), rw, ut, ug)
+ val rw_exp = WSubField(WRef(mem.name, ut, MemKind, ug), rw, ut, ug)
readwriters += rw
readers += r
writers += w
@@ -142,7 +142,7 @@ object InferReadWritePass extends Pass {
repl(s"${mem.name}.$w.data") = WSubField(rw_exp, "wdata", mem.dataType, FEMALE)
repl(s"${mem.name}.$w.mask") = WSubField(rw_exp, "wmask", ut, FEMALE)
stmts += Connect(NoInfo, WSubField(rw_exp, "clk", ClockType, FEMALE),
- WRef("clk", ClockType, NodeKind(), MALE))
+ WRef("clk", ClockType, NodeKind, MALE))
stmts += Connect(NoInfo, WSubField(rw_exp, "en", bt, FEMALE),
DoPrim(Or, List(connects(s"${mem.name}.$r.en"), connects(s"${mem.name}.$w.en")), Nil, bt))
stmts += Connect(NoInfo, WSubField(rw_exp, "addr", ut, FEMALE),
diff --git a/src/main/scala/firrtl/passes/Inline.scala b/src/main/scala/firrtl/passes/Inline.scala
index 43c0ef1e..12dfb497 100644
--- a/src/main/scala/firrtl/passes/Inline.scala
+++ b/src/main/scala/firrtl/passes/Inline.scala
@@ -106,7 +106,7 @@ class InlineInstances (transID: TransID) extends Transform {
if (inlinedInstances.contains(ref)) {
val newName = ref + inlineDelim + field
set(ComponentName(ref, ModuleName(m.name, cname)), Seq.empty)
- WRef(newName, tpe, WireKind(), gen)
+ WRef(newName, tpe, WireKind, gen)
}
else e
}
diff --git a/src/main/scala/firrtl/passes/LowerTypes.scala b/src/main/scala/firrtl/passes/LowerTypes.scala
index b3969bea..967b4a1c 100644
--- a/src/main/scala/firrtl/passes/LowerTypes.scala
+++ b/src/main/scala/firrtl/passes/LowerTypes.scala
@@ -120,11 +120,11 @@ object LowerTypes extends Pass {
info: Info, mname: String)(e: Expression): Expression = e match {
case e: WRef => e
case (_: WSubField | _: WSubIndex) => kind(e) match {
- case k: InstanceKind =>
+ case InstanceKind =>
val (root, tail) = splitRef(e)
val name = loweredName(tail)
WSubField(root, name, e.tpe, gender(e))
- case k: MemKind =>
+ case MemKind =>
val exps = lowerTypesMemExp(memDataTypeMap, info, mname)(e)
exps.size match {
case 1 => exps.head
@@ -163,7 +163,7 @@ object LowerTypes extends Pass {
case s: WDefInstance => s.tpe match {
case t: BundleType =>
val fieldsx = t.fields flatMap (f =>
- create_exps(WRef(f.name, f.tpe, ExpKind(), times(f.flip, MALE))) map (
+ create_exps(WRef(f.name, f.tpe, ExpKind, times(f.flip, MALE))) map (
// Flip because inst genders are reversed from Module type
e => Field(loweredName(e), swap(to_flip(gender(e))), e.tpe)))
WDefInstance(s.info, s.name, s.module, BundleType(fieldsx))
@@ -188,12 +188,12 @@ object LowerTypes extends Pass {
val exps = create_exps(s.value) map lowerTypesExp(memDataTypeMap, info, mname)
Block(names zip exps map { case (n, e) => DefNode(info, loweredName(n), e) })
case s: IsInvalid => kind(s.expr) match {
- case _: MemKind =>
+ case MemKind =>
Block(lowerTypesMemExp(memDataTypeMap, info, mname)(s.expr) map (IsInvalid(info, _)))
case _ => s map lowerTypesExp(memDataTypeMap, info, mname)
}
case s: Connect => kind(s.loc) match {
- case k: MemKind =>
+ case MemKind =>
val exp = lowerTypesExp(memDataTypeMap, info, mname)(s.expr)
val locs = lowerTypesMemExp(memDataTypeMap, info, mname)(s.loc)
Block(locs map (Connect(info, _, exp)))
@@ -207,7 +207,7 @@ object LowerTypes extends Pass {
val memDataTypeMap = new MemDataTypeMap
// Lower Ports
val portsx = m.ports flatMap { p =>
- val exps = create_exps(WRef(p.name, p.tpe, PortKind(), to_gender(p.direction)))
+ val exps = create_exps(WRef(p.name, p.tpe, PortKind, to_gender(p.direction)))
exps map (e => Port(p.info, loweredName(e), to_dir(gender(e)), e.tpe))
}
m match {
diff --git a/src/main/scala/firrtl/passes/MemUtils.scala b/src/main/scala/firrtl/passes/MemUtils.scala
index 57a7120b..21884661 100644
--- a/src/main/scala/firrtl/passes/MemUtils.scala
+++ b/src/main/scala/firrtl/passes/MemUtils.scala
@@ -229,9 +229,8 @@ object MemPortUtils {
(mem.readwriters map (Field(_, Flip, rwType))))
}
- def kind(s: DefMemory) = MemKind(s.readers ++ s.writers ++ s.readwriters)
def memPortField(s: DefMemory, p: String, f: String) = {
- val mem = WRef(s.name, memType(s), kind(s), UNKNOWNGENDER)
+ val mem = WRef(s.name, memType(s), MemKind, UNKNOWNGENDER)
val t1 = field_type(mem.tpe, p)
val t2 = field_type(t1, f)
WSubField(WSubField(mem, p, t1, UNKNOWNGENDER), f, t2, UNKNOWNGENDER)
diff --git a/src/main/scala/firrtl/passes/Passes.scala b/src/main/scala/firrtl/passes/Passes.scala
index 965ae339..9057c60d 100644
--- a/src/main/scala/firrtl/passes/Passes.scala
+++ b/src/main/scala/firrtl/passes/Passes.scala
@@ -59,8 +59,8 @@ class Errors {
object ToWorkingIR extends Pass {
def name = "Working IR"
- def toExp(e:Expression) : Expression = e map (toExp) match {
- case e: Reference => WRef(e.name, e.tpe, NodeKind(), UNKNOWNGENDER)
+ def toExp(e: Expression): Expression = e map (toExp) match {
+ case e: Reference => WRef(e.name, e.tpe, NodeKind, UNKNOWNGENDER)
case e: SubField => WSubField(e.expr, e.name, e.tpe, UNKNOWNGENDER)
case e: SubIndex => WSubIndex(e.expr, e.value, e.tpe, UNKNOWNGENDER)
case e: SubAccess => WSubAccess(e.expr, e.index, e.tpe, UNKNOWNGENDER)
diff --git a/src/main/scala/firrtl/passes/Resolves.scala b/src/main/scala/firrtl/passes/Resolves.scala
index 3100f0c3..616e30f3 100644
--- a/src/main/scala/firrtl/passes/Resolves.scala
+++ b/src/main/scala/firrtl/passes/Resolves.scala
@@ -36,16 +36,16 @@ object ResolveKinds extends Pass {
type KindMap = collection.mutable.LinkedHashMap[String, Kind]
def find_port(kinds: KindMap)(p: Port): Port = {
- kinds(p.name) = PortKind() ; p
+ kinds(p.name) = PortKind ; p
}
def find_stmt(kinds: KindMap)(s: Statement):Statement = {
s match {
- case s: DefWire => kinds(s.name) = WireKind()
- case s: DefNode => kinds(s.name) = NodeKind()
- case s: DefRegister => kinds(s.name) = RegKind()
- case s: WDefInstance => kinds(s.name) = InstanceKind()
- case s: DefMemory => kinds(s.name) = MemKind(s.readers ++ s.writers ++ s.readwriters)
+ case s: DefWire => kinds(s.name) = WireKind
+ case s: DefNode => kinds(s.name) = NodeKind
+ case s: DefRegister => kinds(s.name) = RegKind
+ case s: WDefInstance => kinds(s.name) = InstanceKind
+ case s: DefMemory => kinds(s.name) = MemKind
case s =>
}
s map find_stmt(kinds)
diff --git a/src/main/scala/firrtl/passes/UpdateDuplicateMemMacros.scala b/src/main/scala/firrtl/passes/UpdateDuplicateMemMacros.scala
index 81684d90..0098fa5f 100644
--- a/src/main/scala/firrtl/passes/UpdateDuplicateMemMacros.scala
+++ b/src/main/scala/firrtl/passes/UpdateDuplicateMemMacros.scala
@@ -12,7 +12,7 @@ import firrtl.Utils._
object MemTransformUtils {
- def createRef(n: String) = WRef(n, UnknownType, ExpKind(), UNKNOWNGENDER)
+ def createRef(n: String) = WRef(n, UnknownType, ExpKind, UNKNOWNGENDER)
def createSubField(exp: Expression, n: String) = WSubField(exp, n, UnknownType, UNKNOWNGENDER)
def connectFields(lref: Expression, lname: String, rref: Expression, rname: String) =
Connect(NoInfo, createSubField(lref, lname), createSubField(rref, rname))