aboutsummaryrefslogtreecommitdiff
path: root/src/main/scala/firrtl/passes/Checks.scala
diff options
context:
space:
mode:
authorDonggyu Kim2016-08-30 19:01:37 -0700
committerDonggyu Kim2016-09-13 16:58:44 -0700
commit9d6b523e83d3836ade02bb36dcf8b8fc1d2e7234 (patch)
tree2f97a253c84f6ed7c43b6772c3c67907d72c4815 /src/main/scala/firrtl/passes/Checks.scala
parent96340374f091d5258ca69ef7fc614910e1c2cbb7 (diff)
type aliases
Diffstat (limited to 'src/main/scala/firrtl/passes/Checks.scala')
-rw-r--r--src/main/scala/firrtl/passes/Checks.scala32
1 files changed, 14 insertions, 18 deletions
diff --git a/src/main/scala/firrtl/passes/Checks.scala b/src/main/scala/firrtl/passes/Checks.scala
index 16b16ff7..c300f7c7 100644
--- a/src/main/scala/firrtl/passes/Checks.scala
+++ b/src/main/scala/firrtl/passes/Checks.scala
@@ -27,8 +27,6 @@ MODIFICATIONS.
package firrtl.passes
-import com.typesafe.scalalogging.LazyLogging
-
import firrtl._
import firrtl.ir._
import firrtl.PrimOps._
@@ -36,11 +34,9 @@ import firrtl.Utils._
import firrtl.Mappers._
import firrtl.WrappedType._
-// Datastructures
-import scala.collection.mutable.{HashMap, HashSet}
-
-object CheckHighForm extends Pass with LazyLogging {
+object CheckHighForm extends Pass {
def name = "High Form Check"
+ type NameSet = collection.mutable.HashSet[String]
// Custom Exceptions
class NotUniqueException(info: Info, mname: String, name: String) extends PassException(
@@ -160,7 +156,7 @@ object CheckHighForm extends Pass with LazyLogging {
e
}
- def checkHighFormE(info: Info, mname: String, names: HashSet[String])(e: Expression): Expression = {
+ def checkHighFormE(info: Info, mname: String, names: NameSet)(e: Expression): Expression = {
e match {
case e: WRef if !names(e.name) =>
errors append new UndeclaredReferenceException(info, mname, e.name)
@@ -176,14 +172,14 @@ object CheckHighForm extends Pass with LazyLogging {
map checkHighFormE(info, mname, names))
}
- def checkName(info: Info, mname: String, names: HashSet[String])(name: String): String = {
+ def checkName(info: Info, mname: String, names: NameSet)(name: String): String = {
if (names(name))
errors append new NotUniqueException(info, mname, name)
names += name
name
}
- def checkHighFormS(minfo: Info, mname: String, names: HashSet[String])(s: Statement): Statement = {
+ def checkHighFormS(minfo: Info, mname: String, names: NameSet)(s: Statement): Statement = {
val info = get_info(s) match {case NoInfo => minfo case x => x}
(s map checkName(info, mname, names)) match {
case s: DefMemory =>
@@ -208,7 +204,7 @@ object CheckHighForm extends Pass with LazyLogging {
map checkHighFormS(minfo, mname, names))
}
- def checkHighFormP(mname: String, names: HashSet[String])(p: Port): Port = {
+ def checkHighFormP(mname: String, names: NameSet)(p: Port): Port = {
names += p.name
(p.tpe map checkHighFormT(p.info, mname)
map checkHighFormW(p.info, mname))
@@ -216,7 +212,7 @@ object CheckHighForm extends Pass with LazyLogging {
}
def checkHighFormM(m: DefModule) {
- val names = HashSet[String]()
+ val names = new NameSet
(m map checkHighFormP(m.name, names)
map checkHighFormS(m.info, m.name, names))
}
@@ -231,7 +227,7 @@ object CheckHighForm extends Pass with LazyLogging {
}
}
-object CheckTypes extends Pass with LazyLogging {
+object CheckTypes extends Pass {
def name = "Check Types"
// Custom Exceptions
@@ -430,6 +426,7 @@ object CheckTypes extends Pass with LazyLogging {
object CheckGenders extends Pass {
def name = "Check Genders"
+ type GenderMap = collection.mutable.HashMap[String, Gender]
implicit def toStr(g: Gender): String = g match {
case MALE => "source"
@@ -444,7 +441,7 @@ object CheckGenders extends Pass {
def run (c:Circuit): Circuit = {
val errors = new Errors()
- def get_gender(e: Expression, genders: HashMap[String, Gender]): Gender = e match {
+ def get_gender(e: Expression, genders: GenderMap): Gender = e match {
case (e: WRef) => genders(e.name)
case (e: WSubIndex) => get_gender(e.exp, genders)
case (e: WSubAccess) => get_gender(e.exp, genders)
@@ -466,8 +463,7 @@ object CheckGenders extends Pass {
flip_rec(t, Default)
}
- def check_gender(info:Info, mname: String,
- genders: HashMap[String,Gender], desired: Gender)(e:Expression): Expression = {
+ def check_gender(info:Info, mname: String, genders: GenderMap, desired: Gender)(e:Expression): Expression = {
val gender = get_gender(e,genders)
(gender, desired) match {
case (MALE, FEMALE) =>
@@ -482,7 +478,7 @@ object CheckGenders extends Pass {
e
}
- def check_genders_e (info:Info, mname: String, genders: HashMap[String,Gender])(e:Expression): Expression = {
+ def check_genders_e (info:Info, mname: String, genders: GenderMap)(e:Expression): Expression = {
e match {
case e: Mux => e map check_gender(info, mname, genders, MALE)
case e: DoPrim => e.args map check_gender(info, mname, genders, MALE)
@@ -491,7 +487,7 @@ object CheckGenders extends Pass {
e map check_genders_e(info, mname, genders)
}
- def check_genders_s(minfo: Info, mname: String, genders: HashMap[String,Gender])(s: Statement): Statement = {
+ def check_genders_s(minfo: Info, mname: String, genders: GenderMap)(s: Statement): Statement = {
val info = get_info(s) match { case NoInfo => minfo case x => x }
s match {
case (s: DefWire) => genders(s.name) = BIGENDER
@@ -522,7 +518,7 @@ object CheckGenders extends Pass {
}
for (m <- c.modules) {
- val genders = HashMap[String, Gender]()
+ val genders = new GenderMap
genders ++= (m.ports map (p => p.name -> to_gender(p.direction)))
m map check_genders_s(m.info, m.name, genders)
}