From f973bdd0494645354a1fc6bde0a5847b1d932745 Mon Sep 17 00:00:00 2001 From: whitequark Date: Sun, 13 Jan 2019 08:10:23 +0000 Subject: [PATCH] back.verilog: better error message if Yosys is not found. Fixes #17. --- nmigen/back/verilog.py | 19 ++++++++++++++----- 1 file changed, 14 insertions(+), 5 deletions(-) diff --git a/nmigen/back/verilog.py b/nmigen/back/verilog.py index 0b86fe3..0f5b9be 100644 --- a/nmigen/back/verilog.py +++ b/nmigen/back/verilog.py @@ -12,12 +12,21 @@ class YosysError(Exception): def convert(*args, **kwargs): + try: + popen = subprocess.Popen([os.getenv("YOSYS", "yosys"), "-q", "-"], + stdin=subprocess.PIPE, + stdout=subprocess.PIPE, + stderr=subprocess.PIPE, + encoding="utf-8") + except FileNotFoundError as e: + if os.getenv("YOSYS"): + raise YosysError("Could not find Yosys in {} as specified via the YOSYS environment " + "variable".format(os.getenv("YOSYS"))) from e + else: + raise YosysError("Could not find Yosys in PATH. Place `yosys` in PATH or specify " + "path explicitly via the YOSYS environment variable") from e + il_text = rtlil.convert(*args, **kwargs) - popen = subprocess.Popen([os.getenv("YOSYS", "yosys"), "-q", "-"], - stdin=subprocess.PIPE, - stdout=subprocess.PIPE, - stderr=subprocess.PIPE, - encoding="utf-8") verilog_text, error = popen.communicate(""" # Convert nMigen's RTLIL to readable Verilog. read_ilang <