diff --git a/.github/scripts/build_nextpnr_fpga_interchange.sh b/.github/scripts/build_nextpnr_fpga_interchange.sh index e9cf263e..f4cac584 100755 --- a/.github/scripts/build_nextpnr_fpga_interchange.sh +++ b/.github/scripts/build_nextpnr_fpga_interchange.sh @@ -28,6 +28,6 @@ echo '::endgroup::' echo '::group::Building nextpnr-fpga_interchange' cd ./third_party/nextpnr -cmake . -DARCH=fpga_interchange -DRAPIDWRIGHT_PATH=`realpath ../RapidWright` -DINTERCHANGE_SCHEMA_PATH=`realpath ../fpga-interchange-schema` -make +cmake . -DARCH=fpga_interchange -DRAPIDWRIGHT_PATH=`realpath ../RapidWright` -DINTERCHANGE_SCHEMA_PATH=`realpath ../fpga-interchange-schema` -DENABLE_NISP=ON +make -j `nproc` echo '::endgroup::' diff --git a/fpgaperf.py b/fpgaperf.py index 10eb9c86..74a020cc 100755 --- a/fpgaperf.py +++ b/fpgaperf.py @@ -25,6 +25,7 @@ import signal import sys import yaml +import traceback from terminaltables import AsciiTable from toolchains.icestorm import NextpnrIcestorm @@ -271,7 +272,13 @@ def run( err = str(e) if not verbose and len(err) > 1000: err = f"[...]\n{err[-1000:]}" - logger.debug(f"ERROR: {err}") + logger.error(err) + + if verbose: + trace = traceback.format_exc() + for line in trace.split("\n"): + logger.error(line) + err = err.split("\n") else: logger.debug("Printing Stats") diff --git a/toolchains/nextpnr.py b/toolchains/nextpnr.py index d97c66a5..d41ee2d5 100644 --- a/toolchains/nextpnr.py +++ b/toolchains/nextpnr.py @@ -699,8 +699,19 @@ def __init__(self, rootdir): def configure(self): super().configure() + self.tool_options['binary_path'] = self.toolchain_bin + nisp_data = os.path.join( + self.rootdir, 'env', 'interchange', 'devices', self.chip, + '{}_site_routability.json'.format(self.chip) + ) + + self.tool_options['nextpnr_options'].extend([ + "--site-routing-graph", + nisp_data + ]) + class NextpnrXilinx(NextpnrGeneric): '''nextpnr Xilinx variant using Yosys for synthesis'''