aboutsummaryrefslogtreecommitdiff
path: root/src/main
diff options
context:
space:
mode:
Diffstat (limited to 'src/main')
-rw-r--r--src/main/stanza/firrtl-main.stanza10
-rw-r--r--src/main/stanza/firrtl-test-main.stanza11
-rw-r--r--src/main/stanza/passes.stanza17
3 files changed, 24 insertions, 14 deletions
diff --git a/src/main/stanza/firrtl-main.stanza b/src/main/stanza/firrtl-main.stanza
index 92bb066f..fe9b49fa 100644
--- a/src/main/stanza/firrtl-main.stanza
+++ b/src/main/stanza/firrtl-main.stanza
@@ -21,10 +21,16 @@ defpackage firrtl-main :
defn main () :
val arg = commandline-arguments()
val args = split(arg,' ')
- val lexed = lex-file(args[1])
+ val pathname = args[1]
+ val lexed = lex-file(pathname)
val c = parse-firrtl(lexed)
;println(c)
- run-passes(c,to-list(args[2]))
+ val dir = "." ;; could have dir arg
+ val name = last(split(pathname,'/'))
+ val basename = split(name,'.')[0]
+ val outname = string-join([dir "/" basename ".flo"])
+ val c* = run-passes(c, to-list(args[2]), outname)
+ ;; run-passes(c,to-list(args[2]))
main()
diff --git a/src/main/stanza/firrtl-test-main.stanza b/src/main/stanza/firrtl-test-main.stanza
index 991f7cf6..ca521ec2 100644
--- a/src/main/stanza/firrtl-test-main.stanza
+++ b/src/main/stanza/firrtl-test-main.stanza
@@ -28,14 +28,19 @@ defn set-printvars! (p:List<Char>) :
defn main () :
val args = commandline-arguments()
- val lexed = lex-file(args[1])
+ val pathname = args[1]
+ val lexed = lex-file(pathname)
val c = parse-firrtl(lexed)
+ val dir = "." ;; could have dir arg
+ val name = last(split(pathname,'/'))
+ val basename = split(name,'.')[0]
+ val outname = string-join([dir "/" basename ".flo"])
if length(args) >= 4 :
set-printvars!(to-list(args[3]))
if length(args) >= 3 :
- run-passes(c,to-list(args[2]))
+ run-passes(c,to-list(args[2]), outname)
else :
- run-passes(c,to-list("qabcefghipjklmno"))
+ run-passes(c,to-list("qabcefghipjklmno"), outname)
main()
diff --git a/src/main/stanza/passes.stanza b/src/main/stanza/passes.stanza
index 24867612..30898ae6 100644
--- a/src/main/stanza/passes.stanza
+++ b/src/main/stanza/passes.stanza
@@ -1963,8 +1963,14 @@ public defn emit-flo (o:OutputStream, c:Circuit) :
emit-module(o, modules(c)[0])
c
+public defn emit-flo (pathname:String, c:Circuit) :
+ val out = FileOutputStream(pathname)
+ emit-flo(out, c)
+ close(out)
+ c
+
;============= DRIVER ======================================
-public defn run-passes (c: Circuit, p: List<Char>) :
+public defn run-passes (c: Circuit, p: List<Char>, pathname:String) :
var c*:Circuit = c
println("Compiling!")
if PRINT-CIRCUITS : println("Original Circuit")
@@ -1992,12 +1998,5 @@ public defn run-passes (c: Circuit, p: List<Char>) :
if contains(p,'l') : do-stage("Inline Instances", inline-instances)
if contains(p,'m') : do-stage("Split Expressions", split-exp)
if contains(p,'n') : do-stage("Real IR", to-real-ir)
- if contains(p,'o') : do-stage("To Flo", emit-flo{STANDARD-OUTPUT,_})
+ if contains(p,'o') : do-stage("To Flo", emit-flo{pathname,_})
println("Done!")
-
-
- ;; println("Shim for Jonathan's Passes")
- ;; c* = shim(c*)
- ;; println("Inline Modules")
- ;; c* = inline-modules(c*)
- ; c*