Bump to firtool 1.58.0
This commit is contained in:
@@ -248,7 +248,6 @@ $(SFC_MFC_TARGETS) &: $(TAPEOUT_CLASSPATH_TARGETS) $(FIRRTL_FILE) $(FINAL_ANNO_F
|
|||||||
--format=fir \
|
--format=fir \
|
||||||
--dedup \
|
--dedup \
|
||||||
--export-module-hierarchy \
|
--export-module-hierarchy \
|
||||||
--emit-metadata \
|
|
||||||
--verify-each=true \
|
--verify-each=true \
|
||||||
--warn-on-unprocessed-annotations \
|
--warn-on-unprocessed-annotations \
|
||||||
--disable-annotation-classless \
|
--disable-annotation-classless \
|
||||||
@@ -257,7 +256,6 @@ $(SFC_MFC_TARGETS) &: $(TAPEOUT_CLASSPATH_TARGETS) $(FIRRTL_FILE) $(FINAL_ANNO_F
|
|||||||
--lowering-options=$(shell cat $(MFC_LOWERING_OPTIONS)) \
|
--lowering-options=$(shell cat $(MFC_LOWERING_OPTIONS)) \
|
||||||
--repl-seq-mem \
|
--repl-seq-mem \
|
||||||
--repl-seq-mem-file=$(MFC_SMEMS_CONF) \
|
--repl-seq-mem-file=$(MFC_SMEMS_CONF) \
|
||||||
--repl-seq-mem-circuit=$(MODEL) \
|
|
||||||
--annotation-file=$(SFC_ANNO_FILE) \
|
--annotation-file=$(SFC_ANNO_FILE) \
|
||||||
--split-verilog \
|
--split-verilog \
|
||||||
-o $(GEN_COLLATERAL_DIR) \
|
-o $(GEN_COLLATERAL_DIR) \
|
||||||
|
|||||||
@@ -29,7 +29,7 @@ dependencies:
|
|||||||
- conda-gcc-specs
|
- conda-gcc-specs
|
||||||
- binutils
|
- binutils
|
||||||
|
|
||||||
- firtool==1.30.0 # from ucb-bar channel - https://github.com/ucb-bar/firtool-feedstock
|
- firtool==1.58.0 # from ucb-bar channel - https://github.com/ucb-bar/firtool-feedstock
|
||||||
|
|
||||||
# misc
|
# misc
|
||||||
- autoconf
|
- autoconf
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
#!/usr/bin/env python
|
#!/usr/bin/env python
|
||||||
|
|
||||||
# replaces a `include with the full include file
|
# replaces a `include with the full include file.
|
||||||
|
# recursively replaces `include's until none are left
|
||||||
#
|
#
|
||||||
# args
|
# args
|
||||||
# $1 - file to remove includes from
|
# $1 - file to remove includes from
|
||||||
@@ -12,6 +13,8 @@
|
|||||||
import sys
|
import sys
|
||||||
import re
|
import re
|
||||||
import os
|
import os
|
||||||
|
import tempfile
|
||||||
|
import shutil
|
||||||
|
|
||||||
inVlog = sys.argv[1]
|
inVlog = sys.argv[1]
|
||||||
outVlog = sys.argv[2]
|
outVlog = sys.argv[2]
|
||||||
@@ -24,28 +27,52 @@ if inVlog == outVlog:
|
|||||||
incDirs = sys.argv[3:]
|
incDirs = sys.argv[3:]
|
||||||
print("[INFO] Searching following dirs for includes: " + str(incDirs))
|
print("[INFO] Searching following dirs for includes: " + str(incDirs))
|
||||||
|
|
||||||
# open file
|
def process(inF, outF):
|
||||||
with open(inVlog, 'r') as inFile:
|
# open file
|
||||||
with open(outVlog, 'w') as outFile:
|
with open(inF, 'r') as inFile:
|
||||||
# for each include found, search through all dirs and replace if found, error if not
|
with open(outF, 'w') as outFile:
|
||||||
for num, line in enumerate(inFile, 1):
|
# for each include found, search through all dirs and replace if found, error if not
|
||||||
|
for num, line in enumerate(inFile, 1):
|
||||||
|
match = re.match(r"^ *`include +\"(.*)\"", line)
|
||||||
|
if match:
|
||||||
|
# search for include and replace
|
||||||
|
found = False
|
||||||
|
for d in incDirs:
|
||||||
|
potentialIncFileName = d + "/" + match.group(1)
|
||||||
|
if os.path.exists(potentialIncFileName):
|
||||||
|
found = True
|
||||||
|
with open(potentialIncFileName, 'r') as incFile:
|
||||||
|
for iline in incFile:
|
||||||
|
outFile.write(iline)
|
||||||
|
break
|
||||||
|
|
||||||
|
# must find something to include with
|
||||||
|
if not found:
|
||||||
|
sys.exit("[ERROR] Couldn't replace include \"" + str(match.group(1)) + "\" found on line " + str(num))
|
||||||
|
else:
|
||||||
|
outFile.write(line)
|
||||||
|
|
||||||
|
inF = inVlog
|
||||||
|
|
||||||
|
while True:
|
||||||
|
# create a copy of the input
|
||||||
|
fd, temp_path = tempfile.mkstemp()
|
||||||
|
shutil.copy2(inF, temp_path)
|
||||||
|
|
||||||
|
with open(temp_path, 'r') as inFile:
|
||||||
|
anyIncludes = False
|
||||||
|
for line in inFile:
|
||||||
match = re.match(r"^ *`include +\"(.*)\"", line)
|
match = re.match(r"^ *`include +\"(.*)\"", line)
|
||||||
if match:
|
if match:
|
||||||
# search for include and replace
|
anyIncludes = True
|
||||||
found = False
|
break
|
||||||
for d in incDirs:
|
|
||||||
potentialIncFileName = d + "/" + match.group(1)
|
|
||||||
if os.path.exists(potentialIncFileName):
|
|
||||||
found = True
|
|
||||||
with open(potentialIncFileName, 'r') as incFile:
|
|
||||||
for iline in incFile:
|
|
||||||
outFile.write(iline)
|
|
||||||
break
|
|
||||||
|
|
||||||
# must find something to include with
|
if anyIncludes:
|
||||||
if not found:
|
process(temp_path, outVlog)
|
||||||
sys.exit("[ERROR] Couldn't replace include \"" + str(match.group(1)) + "\" found on line " + str(num))
|
inF = outVlog
|
||||||
else:
|
os.remove(temp_path)
|
||||||
outFile.write(line)
|
else:
|
||||||
|
os.remove(temp_path)
|
||||||
|
break
|
||||||
|
|
||||||
print("[INFO] Success. Writing output to: " + str(outVlog))
|
print("[INFO] Success. Writing output to: " + str(outVlog))
|
||||||
|
|||||||
Reference in New Issue
Block a user