diff options
| author | Donggyu Kim | 2016-08-30 19:01:37 -0700 |
|---|---|---|
| committer | Donggyu Kim | 2016-09-13 16:58:44 -0700 |
| commit | 9d6b523e83d3836ade02bb36dcf8b8fc1d2e7234 (patch) | |
| tree | 2f97a253c84f6ed7c43b6772c3c67907d72c4815 /src/main/scala/firrtl/passes/Checks.scala | |
| parent | 96340374f091d5258ca69ef7fc614910e1c2cbb7 (diff) | |
type aliases
Diffstat (limited to 'src/main/scala/firrtl/passes/Checks.scala')
| -rw-r--r-- | src/main/scala/firrtl/passes/Checks.scala | 32 |
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) } |
