blob: bcfc8aabb12af99456471d447f4b547d50a08bda [file] [log] [blame]
#!/usr/bin/env python3
# Copyright lowRISC contributors.
# Licensed under the Apache License, Version 2.0, see LICENSE for details.
# SPDX-License-Identifier: Apache-2.0
import argparse
import sys
from sim.elf import load_elf
from sim.sim import OTBNSim
def main() -> int:
parser = argparse.ArgumentParser()
parser.add_argument('elf')
parser.add_argument('-v', '--verbose', action='store_true')
parser.add_argument('--dmem-dump')
args = parser.parse_args()
sim = OTBNSim()
load_elf(sim, args.elf)
sim.state.pc = 0
sim.state.start()
sim.run(verbose=args.verbose)
if args.dmem_dump is not None:
try:
with open(args.dmem_dump, 'wb') as dmem_file:
dmem_file.write(sim.dump_data())
except OSError as err:
sys.stderr.write('Failed to write DMEM to {!r}: {}.'
.format(args.dmem_dump, err))
return 1
return 0
if __name__ == "__main__":
sys.exit(main())