From 5298af3dffcd0985922a2a8317fa6a67e192a9c0 Mon Sep 17 00:00:00 2001 From: jackbackrack Date: Sat, 18 Apr 2015 13:23:16 -0700 Subject: change to have flo file go to a file --- src/main/stanza/firrtl-main.stanza | 10 ++++++++-- src/main/stanza/firrtl-test-main.stanza | 11 ++++++++--- src/main/stanza/passes.stanza | 17 ++++++++--------- 3 files changed, 24 insertions(+), 14 deletions(-) (limited to 'src') 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) : 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) : +public defn run-passes (c: Circuit, p: List, 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) : 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* -- cgit v1.2.3