=========== FIRRTL PASSES ==============

Parser : Parses text file and provides some error checking.
   i: Parses the text file into an in-memory representation of the FIRRTL graph (tree).
   +: Incorrect syntax correctly crashes the parser with an error message.
   -: Error messages could be improved
High Form Check : Ensures file has correct high firrtl form.
   i: Ensures that initial file upholds various non-syntactic invariants
   +: Some have been implemented. Current invariants not checked will likely crash the compiler in a later stage.
   -: More to implemented (grunt work).
Temp Elimination : Inline poorly-named single-assignment values.
   ;Allows betterTo make the Chisel frontend simpler, we emit no nested expressions, and generate a lot of temps with non-intuitive names.
Working IR : Replaces some IR nodes with working IR nodes with useful fields
Make Explicit Reset : If not declared, reset is added to every module
Resolve Kinds : Populates WRefs with the 'kind of reference'
Infer Types : All type fields are inferred
Type Check : All types are checked
   -: Not implemented
Resolve Genders : Genders of WRef and WAccessor is filled in
Expand Accessors : Accessors to non-memory vectors are expanded to ConnectFromIndexed and ConnectToIndexed
Lower To Ground : All types are lowered to ground types by expanding all Indexes and Subfields that are not instances
Expand Indexed Connects : All ConnectFromIndexed and ConnectToIndexed are expanded to whens
Expand Whens : Basic interpreter to calculate single assignment with muxes.
Infer Widths : Width inferences
Inline Instances
Split Expressions : All nested expressions are expanded to single-assignment nodes with a relative name
Real IR : All working IR nodes are removed
To Flo : Flo is emitted
