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 | |
| parent | 96340374f091d5258ca69ef7fc614910e1c2cbb7 (diff) | |
type aliases
Diffstat (limited to 'src')
| -rw-r--r-- | src/main/scala/firrtl/passes/CheckChirrtl.scala | 21 | ||||
| -rw-r--r-- | src/main/scala/firrtl/passes/Checks.scala | 32 | ||||
| -rw-r--r-- | src/main/scala/firrtl/passes/InferWidths.scala | 15 | ||||
| -rw-r--r-- | src/main/scala/firrtl/passes/LowerTypes.scala | 2 | ||||
| -rw-r--r-- | src/main/scala/firrtl/passes/MemUtils.scala | 2 |
5 files changed, 28 insertions, 44 deletions
diff --git a/src/main/scala/firrtl/passes/CheckChirrtl.scala b/src/main/scala/firrtl/passes/CheckChirrtl.scala index 2ab8749b..f21449a2 100644 --- a/src/main/scala/firrtl/passes/CheckChirrtl.scala +++ b/src/main/scala/firrtl/passes/CheckChirrtl.scala @@ -27,21 +27,14 @@ MODIFICATIONS. package firrtl.passes -import com.typesafe.scalalogging.LazyLogging - -// Datastructures -import scala.collection.mutable.HashSet - import firrtl._ import firrtl.ir._ import firrtl.Utils._ import firrtl.Mappers._ -import firrtl.PrimOps._ -import firrtl.WrappedType._ - -object CheckChirrtl extends Pass with LazyLogging { +object CheckChirrtl extends Pass { def name = "Chirrtl Check" + type NameSet = collection.mutable.HashSet[String] class NotUniqueException(info: Info, mname: String, name: String) extends PassException( s"${info}: [module ${mname}] Reference ${name} does not have a unique name.") @@ -101,7 +94,7 @@ object CheckChirrtl extends Pass with LazyLogging { e } - def checkChirrtlE(info: Info, mname: String, names: HashSet[String])(e: Expression): Expression = { + def checkChirrtlE(info: Info, mname: String, names: NameSet)(e: Expression): Expression = { e match { case _: DoPrim | _:Mux | _:ValidIf | _: UIntLiteral => case e: Reference if !names(e.name) => @@ -114,14 +107,14 @@ object CheckChirrtl extends Pass with LazyLogging { map checkChirrtlE(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 checkChirrtlS(minfo: Info, mname: String, names: HashSet[String])(s: Statement): Statement = { + def checkChirrtlS(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 => @@ -138,7 +131,7 @@ object CheckChirrtl extends Pass with LazyLogging { map checkChirrtlS(info, mname, names)) } - def checkChirrtlP(mname: String, names: HashSet[String])(p: Port): Port = { + def checkChirrtlP(mname: String, names: NameSet)(p: Port): Port = { names += p.name (p.tpe map checkChirrtlT(p.info, mname) map checkChirrtlW(p.info, mname)) @@ -146,7 +139,7 @@ object CheckChirrtl extends Pass with LazyLogging { } def checkChirrtlM(m: DefModule) { - val names = HashSet[String]() + val names = new NameSet (m map checkChirrtlP(m.name, names) map checkChirrtlS(m.info, m.name, names)) } 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) } diff --git a/src/main/scala/firrtl/passes/InferWidths.scala b/src/main/scala/firrtl/passes/InferWidths.scala index 6b2ff6ed..ebec4d80 100644 --- a/src/main/scala/firrtl/passes/InferWidths.scala +++ b/src/main/scala/firrtl/passes/InferWidths.scala @@ -28,20 +28,19 @@ MODIFICATIONS. package firrtl.passes // Datastructures -import scala.collection.mutable.{LinkedHashMap, HashMap, HashSet, ArrayBuffer} +import scala.collection.mutable.ArrayBuffer import scala.collection.immutable.ListMap import firrtl._ import firrtl.ir._ import firrtl.Utils._ import firrtl.Mappers._ -import firrtl.PrimOps._ -import firrtl.WrappedExpression._ object InferWidths extends Pass { def name = "Infer Widths" + type ConstraintMap = collection.mutable.LinkedHashMap[String, Width] - def solve_constraints(l: Seq[WGeq]): LinkedHashMap[String, Width] = { + def solve_constraints(l: Seq[WGeq]): ConstraintMap = { def unique(ls: Seq[Width]) : Seq[Width] = (ls map (new WrappedWidth(_))).distinct map (_.w) def make_unique(ls: Seq[WGeq]): ListMap[String,Width] = { @@ -77,7 +76,7 @@ object InferWidths extends Pass { case _ => w } - def substitute(h: LinkedHashMap[String, Width])(w: Width): Width = { + def substitute(h: ConstraintMap)(w: Width): Width = { //;println-all-debug(["Substituting for [" w "]"]) val wx = simplify(w) //;println-all-debug(["After Simplify: [" wx "]"]) @@ -98,7 +97,7 @@ object InferWidths extends Pass { } } - def b_sub(h: LinkedHashMap[String, Width])(w: Width): Width = { + def b_sub(h: ConstraintMap)(w: Width): Width = { w map b_sub(h) match { case w: VarWidth => h getOrElse (w.name, w) case w => w @@ -145,7 +144,7 @@ object InferWidths extends Pass { //for (x <- u) { println(x) } //println("====================================") - val f = LinkedHashMap[String, Width]() + val f = new ConstraintMap val o = ArrayBuffer[String]() for ((n, e) <- u) { //println("==== SOLUTIONS TABLE ====") @@ -175,7 +174,7 @@ object InferWidths extends Pass { //for (x <- f) println(x) //; Backwards Solve - val b = LinkedHashMap[String, Width]() + val b = new ConstraintMap for (i <- (o.size - 1) to 0 by -1) { val n = o(i) // Should visit `o` backward /* diff --git a/src/main/scala/firrtl/passes/LowerTypes.scala b/src/main/scala/firrtl/passes/LowerTypes.scala index 57f8fd76..c72c5fe3 100644 --- a/src/main/scala/firrtl/passes/LowerTypes.scala +++ b/src/main/scala/firrtl/passes/LowerTypes.scala @@ -27,8 +27,6 @@ MODIFICATIONS. package firrtl.passes -import com.typesafe.scalalogging.LazyLogging - import firrtl._ import firrtl.ir._ import firrtl.Utils._ diff --git a/src/main/scala/firrtl/passes/MemUtils.scala b/src/main/scala/firrtl/passes/MemUtils.scala index 87033176..57a7120b 100644 --- a/src/main/scala/firrtl/passes/MemUtils.scala +++ b/src/main/scala/firrtl/passes/MemUtils.scala @@ -27,8 +27,6 @@ package firrtl.passes -import com.typesafe.scalalogging.LazyLogging - import firrtl._ import firrtl.ir._ import firrtl.Utils._ |
