aboutsummaryrefslogtreecommitdiff
path: root/src/main/stanza/passes.stanza
diff options
context:
space:
mode:
authorjackkoenig2015-10-30 16:36:04 -0700
committerjackkoenig2015-10-30 16:36:04 -0700
commitd715e65b8de4823621b072065b746730d712d2a4 (patch)
tree5da801428a69148c3db26d9b9a7a6927743a3c35 /src/main/stanza/passes.stanza
parent852b241e274edd888499b520d320945794a26e24 (diff)
Added support for -b <backend> so that specific passes can be run then a backend can be applied. Added firrtl compiler for emitting firrtl
Diffstat (limited to 'src/main/stanza/passes.stanza')
-rw-r--r--src/main/stanza/passes.stanza73
1 files changed, 53 insertions, 20 deletions
diff --git a/src/main/stanza/passes.stanza b/src/main/stanza/passes.stanza
index f2931bc8..b9e53bc5 100644
--- a/src/main/stanza/passes.stanza
+++ b/src/main/stanza/passes.stanza
@@ -6,30 +6,62 @@ defpackage firrtl/passes :
import firrtl/primops
import firrtl-main
import firrtl/errors
+ import firrtl/verilog
+ import firrtl/firrtl
import bigint2
;============== Pass List ================
public val standard-passes = to-list $ [
- CheckHighForm()
- TempElimination()
- ToWorkingIR()
- ResolveKinds()
- CheckKinds()
- InferTypes()
- CheckTypes()
- ResolveGenders()
- CheckGenders()
- ExpandAccessors()
- LowerToGround()
- ;ExpandIndexedConnects()
- InlineIndexed()
- ExpandWhens()
- InferWidths()
- Inline()
- SplitExp()
- CheckLowForm()
- ToRealIR()
- Pad() ]
+ RemoveSpecialChars() ;R
+ ;RemoveScopes() ;R
+ CheckHighForm() ;R
+ TempElimination() ;R
+ ToWorkingIR() ;R -> W
+ ResolveKinds() ;W
+ InferTypes() ;R
+ ResolveGenders() ;W
+ CheckGenders() ;W
+ CheckKinds() ;W
+ CheckTypes() ;R
+ ExpandAccessors() ;W
+ LowerToGround() ;W
+ ;ExpandIndexedConnects() ;W
+ InlineIndexed()
+ InferTypes() ;R
+ CheckGenders() ;W
+ ExpandWhens() ;W
+ InferWidths() ;R
+ ToRealIR() ;W -> R
+ CheckWidths() ;R
+ Pad() ;R
+ ConstProp() ;R
+ SplitExp() ;R
+ CheckWidths() ;R
+ CheckHighForm() ;R
+ CheckLowForm() ;R
+ CheckInitialization() ;R
+ ]
+
+ ;CheckHighForm()
+ ;TempElimination()
+ ;ToWorkingIR()
+ ;ResolveKinds()
+ ;CheckKinds()
+ ;InferTypes()
+ ;CheckTypes()
+ ;ResolveGenders()
+ ;CheckGenders()
+ ;ExpandAccessors()
+ ;LowerToGround()
+ ;;ExpandIndexedConnects()
+ ;InlineIndexed()
+ ;ExpandWhens()
+ ;InferWidths()
+ ;Inline()
+ ;SplitExp()
+ ;CheckLowForm()
+ ;ToRealIR()
+ ;Pad() ]
;=============== WORKING IR ================================
public definterface Kind
public defstruct WireKind <: Kind
@@ -2466,6 +2498,7 @@ public defn special-rename (original-sym:Symbol,new-sym:Symbol,c:Circuit) :
public defstruct Pad <: Pass
public defmethod pass (b:Pad) -> (Circuit -> Circuit) : pad-widths
public defmethod name (b:Pad) -> String : "Pad Widths"
+public defmethod short-name (b:Pad) -> String : "pad-widths"
;------------ Helper Functions --------------
defn int-width! (t:Type) -> Long :