diff options
| author | azidar | 2015-12-12 17:23:20 -0800 |
|---|---|---|
| committer | azidar | 2016-01-16 14:28:17 -0800 |
| commit | bc4b0e9d2e9ba32f7fbb9813d31df306fb7a8e0e (patch) | |
| tree | bb22fe87dedc365b4bccdb3f0e7932a7dbe567c1 | |
| parent | 28e4c6a09011cafdd1e3533118f7c3499e0d3dc6 (diff) | |
WIP Almost there, need to generate enable connections
| -rw-r--r-- | src/main/stanza/compilers.stanza | 2 | ||||
| -rw-r--r-- | src/main/stanza/firrtl-ir.stanza | 1 | ||||
| -rw-r--r-- | src/main/stanza/firrtl-test-main.stanza | 1 | ||||
| -rw-r--r-- | src/main/stanza/ir-parser.stanza | 4 | ||||
| -rw-r--r-- | src/main/stanza/ir-utils.stanza | 6 | ||||
| -rw-r--r-- | src/main/stanza/passes.stanza | 2 |
6 files changed, 10 insertions, 6 deletions
diff --git a/src/main/stanza/compilers.stanza b/src/main/stanza/compilers.stanza index 5cda6325..6ede59ad 100644 --- a/src/main/stanza/compilers.stanza +++ b/src/main/stanza/compilers.stanza @@ -2,6 +2,7 @@ defpackage firrtl/compiler : import core import verse import firrtl/passes + import firrtl/chirrtl ;import firrtl/errors ;import firrtl/flo ;import firrtl/verilog @@ -48,6 +49,7 @@ public defmethod passes (c:StandardVerilog) -> List<Pass> : ;RemoveSpecialChars() ;R ;CheckHighForm() ;R ;TempElimination() ;R ; Needs to check number of uses + ToIR() ;R -> W ToWorkingIR() ;R -> W ResolveKinds() ;W InferTypes() ;R diff --git a/src/main/stanza/firrtl-ir.stanza b/src/main/stanza/firrtl-ir.stanza index 8aba5f9c..55ded790 100644 --- a/src/main/stanza/firrtl-ir.stanza +++ b/src/main/stanza/firrtl-ir.stanza @@ -171,6 +171,7 @@ public defstruct CDefMemory <: Stmt : ;LOW info: FileInfo with: (as-method => true) name: Symbol type: Type + size: Int seq?: True|False public defstruct CDefMPort <: Stmt : info: FileInfo with: (as-method => true) diff --git a/src/main/stanza/firrtl-test-main.stanza b/src/main/stanza/firrtl-test-main.stanza index b429ecfb..32b080a4 100644 --- a/src/main/stanza/firrtl-test-main.stanza +++ b/src/main/stanza/firrtl-test-main.stanza @@ -9,6 +9,7 @@ #include("ir-utils.stanza") #include("ir-parser.stanza") #include("passes.stanza") +#include("chirrtl.stanza") #include("primop.stanza") #include("errors.stanza") #include("compilers.stanza") diff --git a/src/main/stanza/ir-parser.stanza b/src/main/stanza/ir-parser.stanza index 28a5d1cb..bd006ea6 100644 --- a/src/main/stanza/ir-parser.stanza +++ b/src/main/stanza/ir-parser.stanza @@ -260,8 +260,8 @@ defsyntax firrtl : stmt = (reg ?name:#id! #:! ?t:#type! ?clk:#exp! ?reset:#exp! ?init:#exp!) : DefRegister(first-info(form),name, t,clk,reset,init) ;stmt = (mem ?name:#id! #:! ?data-type:#type! ?depth:#int ?writers:#id! ... ?wl:#int ?readers:#id! ... ?rl:#int ?readwriters:#id! ...) : ; DefMemory(first-info(form),name,data-type,depth,wl,rl,readers,writers,readwriters) - stmt = (cmem ?name:#id! #:! ?t:#type!) : CDefMemory(first-info(form),name,t,false) - stmt = (smem ?name:#id! #:! ?t:#type!) : CDefMemory(first-info(form),name,t,true) + stmt = (cmem ?name:#id! #:! ?t:#vectype! ) : CDefMemory(first-info(form),name,type(t),size(t),false) + stmt = (smem ?name:#id! #:! ?t:#vectype! ) : CDefMemory(first-info(form),name,type(t),size(t),true) stmt = (read mport ?name:#id! #=! ?mem:#id! (@get ?index:#exp!) ?clk:#exp!) : CDefMPort(first-info(form),name,mem,index,clk,MRead) diff --git a/src/main/stanza/ir-utils.stanza b/src/main/stanza/ir-utils.stanza index 0ff2669d..4581fe30 100644 --- a/src/main/stanza/ir-utils.stanza +++ b/src/main/stanza/ir-utils.stanza @@ -330,12 +330,12 @@ defmethod print (o:OutputStream, c:Stmt) : print(o, ")") (c:CDefMemory) : if seq?(c) : - print-all(o, ["smem " name(c) " : " type(c)]) + print-all(o, ["smem " name(c) " : " type(c) "[" size(c) "]"]) else : - print-all(o, ["cmem " name(c) " : " type(c)]) + print-all(o, ["cmem " name(c) " : " type(c) "[" size(c) "]"]) (c:CDefMPort) : print-all(o, [direction(c) " mport " name(c) " = " mem(c) "[" index(c) "], " clk(c)]) - + if not c typeof Conditionally|Begin|Empty: print-debug(o,c) defmethod print (o:OutputStream, m:MPortDir) : diff --git a/src/main/stanza/passes.stanza b/src/main/stanza/passes.stanza index 6367b51a..217dcecd 100644 --- a/src/main/stanza/passes.stanza +++ b/src/main/stanza/passes.stanza @@ -230,7 +230,6 @@ defmethod turn-off-debug (x:False) : old-PRINT-CIRCUITS = PRINT-CIRCUITS old-PRINT-DEBUG = PRINT-DEBUG old-PRINT-INFO = PRINT-INFO - PRINT-TYPES = false PRINT-KINDS = false PRINT-WIDTHS = false @@ -239,6 +238,7 @@ defmethod turn-off-debug (x:False) : PRINT-CIRCUITS = false PRINT-DEBUG = false PRINT-INFO = false + defmethod turn-on-debug (x:False) : PRINT-TYPES = old-PRINT-TYPES PRINT-KINDS = old-PRINT-KINDS |
