aboutsummaryrefslogtreecommitdiff
path: root/src/main/stanza/ir-parser.stanza
diff options
context:
space:
mode:
authorazidar2015-12-12 14:37:41 -0800
committerazidar2016-01-16 14:28:17 -0800
commit28e4c6a09011cafdd1e3533118f7c3499e0d3dc6 (patch)
tree42e8e2ed50a254f7fea61bc0a56d963258463bb5 /src/main/stanza/ir-parser.stanza
parentd9f33f58c94382dfbd22e87e2f85600b9807328f (diff)
WIP. Fixed a bunch of tests. Starting on implementing chirrtl, but hit roadblock in assigning clocked ports
Diffstat (limited to 'src/main/stanza/ir-parser.stanza')
-rw-r--r--src/main/stanza/ir-parser.stanza10
1 files changed, 10 insertions, 0 deletions
diff --git a/src/main/stanza/ir-parser.stanza b/src/main/stanza/ir-parser.stanza
index 94cc1a6a..28a5d1cb 100644
--- a/src/main/stanza/ir-parser.stanza
+++ b/src/main/stanza/ir-parser.stanza
@@ -260,6 +260,16 @@ 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 = (read mport ?name:#id! #=! ?mem:#id! (@get ?index:#exp!) ?clk:#exp!) :
+ CDefMPort(first-info(form),name,mem,index,clk,MRead)
+ stmt = (write mport ?name:#id! #=! ?mem:#id! (@get ?index:#exp!) ?clk:#exp!) :
+ CDefMPort(first-info(form),name,mem,index,clk,MWrite)
+ stmt = (rdwr mport ?name:#id! #=! ?mem:#id! (@get ?index:#exp!) ?clk:#exp!) :
+ CDefMPort(first-info(form),name,mem,index,clk,MReadWrite)
+
stmt = (mem ?name:#id! #:! (?ms:#mstat ...)) :
defn grab (f:MStat -> True|False) :
map(value,to-list(filter(f,ms))) as List