aboutsummaryrefslogtreecommitdiff
path: root/src/main/stanza/firrtl-test-main.stanza
blob: 0f977ebe49086ea6117d516455efbd898dd1a69c (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
#include<"core/stringeater.stanza">
#include<"core/macro-utils.stanza">
#include<"compiler/stz-algorithms.stanza">
#include<"compiler/stz-lexer.stanza">
#include<"compiler/stz-parser.stanza">
#include("firrtl-ir.stanza")
#include("ir-utils.stanza")
#include("ir-parser.stanza")
#include("passes.stanza")
#include("primop.stanza")
#include("errors.stanza")

defpackage firrtl-main :
   import core
   import verse
   import firrtl/parser
   import firrtl/passes
   import stz/lexer
   import stz/parser
   import firrtl/ir-utils

defn set-printvars! (p:List<Char>) :
   if contains(p,'t') : PRINT-TYPES = true
   if contains(p,'k') : PRINT-KINDS = true
   if contains(p,'w') : PRINT-WIDTHS = true
   if contains(p,'T') : PRINT-TWIDTHS = true
   if contains(p,'g') : PRINT-GENDERS = true
   if contains(p,'c') : PRINT-CIRCUITS = true
   if contains(p,'d') : PRINT-DEBUG = true
   if contains(p,'i') : PRINT-INFO = true

;firrtl -i gcd.fir -o gcd.flo -x qabcefghipjklmno -p c
defn main () :
   val args = commandline-arguments()
   var input = false
   var output = false
   var passes = "qabcefghipjklmno"
   var printvars = ""
   for (s in args, i in 0 to false) do :
      if s == "-i" : input = args[i + 1]
      if s == "-o" : output = args[i + 1]
      if s == "-x" : passes = args[i + 1]
      if s == "-p" : printvars = args[i + 1]
   if input == false : error("No input file provided. Use -i flag")
   if output == false : error("No output file provided. Use -o flag")
   val lexed = lex-file(input as String)
   val c = parse-firrtl(lexed)
   set-printvars!(to-list(printvars))
   run-passes(c,to-list(passes),output as String)

main()