From 8071235ad3d474680d3beb5c89c1b823e0da1932 Mon Sep 17 00:00:00 2001 From: Steve Hoover Date: Thu, 20 Sep 2018 12:18:14 -0400 Subject: [PATCH] Added support for cores outside of riscv-formal repository by adding --basedir arg to genchecks.py. --- checks/genchecks.py | 32 ++++++++++++++++++++++++++------ 1 file changed, 26 insertions(+), 6 deletions(-) diff --git a/checks/genchecks.py b/checks/genchecks.py index 5977bd4..65a94f1 100644 --- a/checks/genchecks.py +++ b/checks/genchecks.py @@ -14,7 +14,7 @@ # ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF # OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. -import os, sys, shutil, re +import os, sys, shutil, re, getopt nret = 1 isa = "rv32i" @@ -26,16 +26,36 @@ blackbox = False cfgname = "checks" -basedir = "%s/../.." % os.getcwd() +basedir = "../.." # Assuming run from within riscv-formal/cores/. Relative path for now. corename = os.getcwd().split("/")[-1] solver = "boolector" dumpsmt2 = False sbycmd = "sby" config = dict() -if len(sys.argv) > 1: - assert len(sys.argv) == 2 - cfgname = sys.argv[1] +# Parse command-line options. + +def usage(): + print("Usage: " + sys.argv[0] + " [--basedir ] []") + sys.exit(1) + +try: + opts, argv = getopt.getopt(sys.argv[1:], "", ["basedir="]) +except getopt.GetoptError: + usage() +for opt, val in opts: + if opt == "--basedir": + basedir = val +if len(argv) > 1: + cfgname = argv[1] + if len(argv) > 2: + usage() + +# basedir must be absolute. +if (basedir[0] != "/"): + basedir = "%s/%s" % (os.getcwd(), basedir) + +# Read config file. print("Reading %s.cfg." % cfgname) with open("%s.cfg" % cfgname, "r") as f: @@ -263,7 +283,7 @@ def check_insn(insn, chanidx, csr_mode=False): : `include "insn_@insn@.v" """, **hargs) -with open("../../insns/isa_%s.txt" % isa) as isa_file: +with open("%s/insns/isa_%s.txt" % (basedir, isa)) as isa_file: for insn in isa_file: for chanidx in range(nret): check_insn(insn.strip(), chanidx)