aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorClifford Wolf <clifford@clifford.at>2019-04-26 16:38:36 +0200
committerClifford Wolf <clifford@clifford.at>2019-04-29 12:09:02 +0200
commit32881a989c2eb2cc73e224e6dc20dc3949f90e55 (patch)
tree312a6c41b961880d7b9c6aad41b9aa8680023e45
parent408161ea3af78c747b9d45cd6482f2e4d9170085 (diff)
downloadyosys-32881a989c2eb2cc73e224e6dc20dc3949f90e55.tar.gz
yosys-32881a989c2eb2cc73e224e6dc20dc3949f90e55.tar.bz2
yosys-32881a989c2eb2cc73e224e6dc20dc3949f90e55.zip
Support multiple pmg files (right now just concatenated together)
Signed-off-by: Clifford Wolf <clifford@clifford.at>
-rw-r--r--passes/pmgen/pmgen.py36
1 files changed, 30 insertions, 6 deletions
diff --git a/passes/pmgen/pmgen.py b/passes/pmgen/pmgen.py
index d9747b065..edc1ad7fe 100644
--- a/passes/pmgen/pmgen.py
+++ b/passes/pmgen/pmgen.py
@@ -3,14 +3,34 @@
import re
import sys
import pprint
+import getopt
pp = pprint.PrettyPrinter(indent=4)
-pmgfile = sys.argv[1]
-assert pmgfile.endswith(".pmg")
-prefix = pmgfile[0:-4]
-prefix = prefix.split('/')[-1]
-outfile = sys.argv[2]
+prefix = None
+pmgfiles = list()
+outfile = None
+
+opts, args = getopt.getopt(sys.argv[1:], "p:o:")
+
+for o, a in opts:
+ if o == "-p":
+ prefix = o
+ elif o == "-o":
+ outfile = a
+
+if outfile is None:
+ outfile = args[-1]
+ args = args[0:-1]
+
+for a in args:
+ assert a.endswith(".pmg")
+ if prefix is None and len(args) == 1:
+ prefix = a[0:-4]
+ prefix = prefix.split('/')[-1]
+ pmgfiles.append(a)
+
+assert prefix is not None
state_types = dict()
udata_types = dict()
@@ -77,7 +97,7 @@ def rewrite_cpp(s):
return "".join(t)
-with open(pmgfile, "r") as f:
+def process_pmgfile(f):
while True:
line = f.readline()
if line == "": break
@@ -180,6 +200,10 @@ with open(pmgfile, "r") as f:
blocks.append(block)
+for fn in pmgfiles:
+ with open(fn, "r") as f:
+ process_pmgfile(f)
+
with open(outfile, "w") as f:
print("// Generated by pmgen.py from {}.pgm".format(prefix), file=f)
print("", file=f)