diff options
| author | Schuyler Eldridge | 2019-07-17 14:08:33 -0400 |
|---|---|---|
| committer | Schuyler Eldridge | 2019-09-16 17:12:51 -0400 |
| commit | a594ccef986c4567730fee729bdea9ed9aefed38 (patch) | |
| tree | 2512913e054ea7d56867f2c73912ff4be17f1e82 /src/main/scala/firrtl/passes/Checks.scala | |
| parent | 7e39ea8ec948ff1db7ccd0d850923a86d2d8a4e7 (diff) | |
Rename gender to flow
The following names are changed:
- gender -> flow
- Gender -> Flow
- MALE -> SourceFlow
- FEMALE -> SinkFlow
- BIGENDER -> DuplexFlow
- UNKNOWNGENDER -> UnknownFlow
Signed-off-by: Schuyler Eldridge <schuyler.eldridge@ibm.com>
Diffstat (limited to 'src/main/scala/firrtl/passes/Checks.scala')
| -rw-r--r-- | src/main/scala/firrtl/passes/Checks.scala | 100 |
1 files changed, 50 insertions, 50 deletions
diff --git a/src/main/scala/firrtl/passes/Checks.scala b/src/main/scala/firrtl/passes/Checks.scala index a17a5a2e..5f58b7f1 100644 --- a/src/main/scala/firrtl/passes/Checks.scala +++ b/src/main/scala/firrtl/passes/Checks.scala @@ -221,12 +221,12 @@ trait CheckHighFormLike { // Search for ResetType Ports of direction def findBadResetTypePorts(m: DefModule, dir: Direction): Seq[(Port, Expression)] = { - val bad = to_gender(dir) + val bad = to_flow(dir) for { port <- m.ports - ref = WRef(port).copy(gender = to_gender(port.direction)) + ref = WRef(port).copy(flow = to_flow(port.direction)) expr <- create_exps(ref) - if ((expr.tpe == ResetType) && (gender(expr) == bad)) + if ((expr.tpe == ResetType) && (flow(expr) == bad)) } yield (port, expr) } @@ -544,31 +544,31 @@ object CheckTypes extends Pass { } } -object CheckGenders extends Pass { - type GenderMap = collection.mutable.HashMap[String, Gender] +object CheckFlows extends Pass { + type FlowMap = collection.mutable.HashMap[String, Flow] - implicit def toStr(g: Gender): String = g match { - case MALE => "source" - case FEMALE => "sink" - case UNKNOWNGENDER => "unknown" - case BIGENDER => "sourceOrSink" + implicit def toStr(g: Flow): String = g match { + case SourceFlow => "source" + case SinkFlow => "sink" + case UnknownFlow => "unknown" + case DuplexFlow => "sourceOrSink" } - class WrongGender(info:Info, mname: String, expr: String, wrong: Gender, right: Gender) extends PassException( + class WrongFlow(info:Info, mname: String, expr: String, wrong: Flow, right: Flow) extends PassException( s"$info: [module $mname] Expression $expr is used as a $wrong but can only be used as a $right.") def run (c:Circuit): Circuit = { val errors = new Errors() - def get_gender(e: Expression, genders: GenderMap): Gender = e match { - case (e: WRef) => genders(e.name) - case (e: WSubIndex) => get_gender(e.expr, genders) - case (e: WSubAccess) => get_gender(e.expr, genders) + def get_flow(e: Expression, flows: FlowMap): Flow = e match { + case (e: WRef) => flows(e.name) + case (e: WSubIndex) => get_flow(e.expr, flows) + case (e: WSubAccess) => get_flow(e.expr, flows) case (e: WSubField) => e.expr.tpe match {case t: BundleType => val f = (t.fields find (_.name == e.name)).get - times(get_gender(e.expr, genders), f.flip) + times(get_flow(e.expr, flows), f.flip) } - case _ => MALE + case _ => SourceFlow } def flip_q(t: Type): Boolean = { @@ -582,64 +582,64 @@ object CheckGenders extends Pass { flip_rec(t, Default) } - def check_gender(info:Info, mname: String, genders: GenderMap, desired: Gender)(e:Expression): Unit = { - val gender = get_gender(e,genders) - (gender, desired) match { - case (MALE, FEMALE) => - errors.append(new WrongGender(info, mname, e.serialize, desired, gender)) - case (FEMALE, MALE) => kind(e) match { + def check_flow(info:Info, mname: String, flows: FlowMap, desired: Flow)(e:Expression): Unit = { + val flow = get_flow(e,flows) + (flow, desired) match { + case (SourceFlow, SinkFlow) => + errors.append(new WrongFlow(info, mname, e.serialize, desired, flow)) + case (SinkFlow, SourceFlow) => kind(e) match { case PortKind | InstanceKind if !flip_q(e.tpe) => // OK! case _ => - errors.append(new WrongGender(info, mname, e.serialize, desired, gender)) + errors.append(new WrongFlow(info, mname, e.serialize, desired, flow)) } case _ => } } - def check_genders_e (info:Info, mname: String, genders: GenderMap)(e:Expression): Unit = { + def check_flows_e (info:Info, mname: String, flows: FlowMap)(e:Expression): Unit = { e match { - case e: Mux => e foreach check_gender(info, mname, genders, MALE) - case e: DoPrim => e.args foreach check_gender(info, mname, genders, MALE) + case e: Mux => e foreach check_flow(info, mname, flows, SourceFlow) + case e: DoPrim => e.args foreach check_flow(info, mname, flows, SourceFlow) case _ => } - e foreach check_genders_e(info, mname, genders) + e foreach check_flows_e(info, mname, flows) } - def check_genders_s(minfo: Info, mname: String, genders: GenderMap)(s: Statement): Unit = { + def check_flows_s(minfo: Info, mname: String, flows: FlowMap)(s: Statement): Unit = { val info = get_info(s) match { case NoInfo => minfo case x => x } s match { - case (s: DefWire) => genders(s.name) = BIGENDER - case (s: DefRegister) => genders(s.name) = BIGENDER - case (s: DefMemory) => genders(s.name) = MALE - case (s: WDefInstance) => genders(s.name) = MALE + case (s: DefWire) => flows(s.name) = DuplexFlow + case (s: DefRegister) => flows(s.name) = DuplexFlow + case (s: DefMemory) => flows(s.name) = SourceFlow + case (s: WDefInstance) => flows(s.name) = SourceFlow case (s: DefNode) => - check_gender(info, mname, genders, MALE)(s.value) - genders(s.name) = MALE + check_flow(info, mname, flows, SourceFlow)(s.value) + flows(s.name) = SourceFlow case (s: Connect) => - check_gender(info, mname, genders, FEMALE)(s.loc) - check_gender(info, mname, genders, MALE)(s.expr) + check_flow(info, mname, flows, SinkFlow)(s.loc) + check_flow(info, mname, flows, SourceFlow)(s.expr) case (s: Print) => - s.args foreach check_gender(info, mname, genders, MALE) - check_gender(info, mname, genders, MALE)(s.en) - check_gender(info, mname, genders, MALE)(s.clk) + s.args foreach check_flow(info, mname, flows, SourceFlow) + check_flow(info, mname, flows, SourceFlow)(s.en) + check_flow(info, mname, flows, SourceFlow)(s.clk) case (s: PartialConnect) => - check_gender(info, mname, genders, FEMALE)(s.loc) - check_gender(info, mname, genders, MALE)(s.expr) + check_flow(info, mname, flows, SinkFlow)(s.loc) + check_flow(info, mname, flows, SourceFlow)(s.expr) case (s: Conditionally) => - check_gender(info, mname, genders, MALE)(s.pred) + check_flow(info, mname, flows, SourceFlow)(s.pred) case (s: Stop) => - check_gender(info, mname, genders, MALE)(s.en) - check_gender(info, mname, genders, MALE)(s.clk) + check_flow(info, mname, flows, SourceFlow)(s.en) + check_flow(info, mname, flows, SourceFlow)(s.clk) case _ => } - s foreach check_genders_e(info, mname, genders) - s foreach check_genders_s(minfo, mname, genders) + s foreach check_flows_e(info, mname, flows) + s foreach check_flows_s(minfo, mname, flows) } for (m <- c.modules) { - val genders = new GenderMap - genders ++= (m.ports map (p => p.name -> to_gender(p.direction))) - m foreach check_genders_s(m.info, m.name, genders) + val flows = new FlowMap + flows ++= (m.ports map (p => p.name -> to_flow(p.direction))) + m foreach check_flows_s(m.info, m.name, flows) } errors.trigger() c |
