blob: 77ed2562144f68522b33546c16b01bcd1d52d5de [file] [log] [blame]
import os
import shutil
import subprocess
import sys
from typing import Any
def RunShellCommand(cmd:list[str]) -> int | Any:
process = subprocess.Popen(cmd, shell=True, stdout=subprocess.PIPE)
process.wait()
if process.stdout != None:
for line in process.stdout:
print(line.decode("utf-8"), end="")
return process.returncode
def RunArchTest(elfFilePath:str, signatureFilePath:str):
# Run the simulator
print(f"Running simulation")
try:
makeFilePath = os.path.dirname(os.path.abspath(__file__))
shutil.copy2(os.path.join(makeFilePath, "coreArch_tb.v"), os.getcwd())
shutil.copy2(os.path.join(makeFilePath, "Makefile"), os.getcwd())
RunShellCommand(["make"]) # , "SIM=GL"
except Exception as e:
print(e)
print(f"Simulation completed")
def main():
if len(sys.argv) > 1:
args = {}
for item in sys.argv[1:]:
parts = item.split('=')
if len(parts) == 2:
args[parts[0]] = parts[1]
else:
print(f"Invalid arg 'item'")
if "isa" in args:
isa = args["isa"]
if isa == "rv32i":
if "elf" in args:
elfFilePath = args["elf"]
if "signature" in args:
signatureFilePath = args["signature"]
RunArchTest(elfFilePath, signatureFilePath)
else:
print(f"Missing argument 'signature'")
else:
print(f"Missing argument 'elf'")
else:
print(f"Invalid isa '{isa}' must be 'rv32i'")
else:
print(f"Missing argument 'isa'")
if __name__ == "__main__":
main()