From: Sebastien Bourdeauducq Date: Tue, 6 Mar 2012 13:20:26 +0000 (+0100) Subject: sim: remove temporary files and socket X-Git-Tag: 24jan2021_ls180~2099^2~995 X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=06de17b16cf43059d6262195d9ff37c290f98666;p=litex.git sim: remove temporary files and socket --- diff --git a/migen/sim/generic.py b/migen/sim/generic.py index cb346a76..56e82f73 100644 --- a/migen/sim/generic.py +++ b/migen/sim/generic.py @@ -69,10 +69,13 @@ class Simulator: rst_signal=rst_signal, return_ns=True) - sim_runner.start(c_top, c_fragment) - self.ipc.accept() self.cycle_counter = 0 self.interrupt = False + + self.sim_runner = sim_runner + self.sim_runner.start(c_top, c_fragment) + self.ipc.accept() + self.fragment.call_sim(self, 0) self.ipc.send(MessageGo()) diff --git a/migen/sim/icarus.py b/migen/sim/icarus.py index 558b0b3c..680cacf1 100644 --- a/migen/sim/icarus.py +++ b/migen/sim/icarus.py @@ -1,4 +1,5 @@ import subprocess +import os def _str2file(filename, contents): f = open(filename, "w") @@ -6,16 +7,25 @@ def _str2file(filename, contents): f.close() class Runner: - def __init__(self, top_file="migensim_top.v", dut_file="migensim_dut.v", extra_files=None, vvp_file=None): + def __init__(self, extra_files=None, top_file="migensim_top.v", dut_file="migensim_dut.v", vvp_file=None, keep_files=False): if extra_files is None: extra_files = [] if vvp_file is None: vvp_file = dut_file + "vp" + self.extra_files = extra_files self.top_file = top_file self.dut_file = dut_file - self.extra_files = extra_files self.vvp_file = vvp_file + self.keep_files = keep_files def start(self, c_top, c_dut): _str2file(self.top_file, c_top) _str2file(self.dut_file, c_dut) subprocess.check_call(["iverilog", "-o", self.vvp_file, self.top_file, self.dut_file] + self.extra_files) subprocess.Popen(["vvp", "-mmigensim", self.vvp_file]) + + def __del__(self): + if not self.keep_files: + for f in [self.top_file, self.dut_file, self.vvp_file]: + try: + os.remove(f) + except OSError: + pass