diff options
| author | jackbackrack | 2015-04-18 13:23:16 -0700 |
|---|---|---|
| committer | jackbackrack | 2015-04-18 13:23:16 -0700 |
| commit | 5298af3dffcd0985922a2a8317fa6a67e192a9c0 (patch) | |
| tree | ed5762e8d0d474e4c8716ab0fa9a09f322257d60 /src/main | |
| parent | 130c6676418e85d5d4dd12a0f0845e912eda8c3e (diff) | |
change to have flo file go to a file
Diffstat (limited to 'src/main')
| -rw-r--r-- | src/main/stanza/firrtl-main.stanza | 10 | ||||
| -rw-r--r-- | src/main/stanza/firrtl-test-main.stanza | 11 | ||||
| -rw-r--r-- | src/main/stanza/passes.stanza | 17 |
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* |
