aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorazidar2015-12-12 17:23:20 -0800
committerazidar2016-01-16 14:28:17 -0800
commitbc4b0e9d2e9ba32f7fbb9813d31df306fb7a8e0e (patch)
treebb22fe87dedc365b4bccdb3f0e7932a7dbe567c1 /src
parent28e4c6a09011cafdd1e3533118f7c3499e0d3dc6 (diff)
WIP Almost there, need to generate enable connections
Diffstat (limited to 'src')
-rw-r--r--src/main/stanza/compilers.stanza2
-rw-r--r--src/main/stanza/firrtl-ir.stanza1
-rw-r--r--src/main/stanza/firrtl-test-main.stanza1
-rw-r--r--src/main/stanza/ir-parser.stanza4
-rw-r--r--src/main/stanza/ir-utils.stanza6
-rw-r--r--src/main/stanza/passes.stanza2
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