5
5
import os
6
6
import time
7
7
8
- def _str2file (filename , contents ):
9
- f = open (filename , "w" )
10
- f .write (contents )
11
- f .close ()
12
8
13
9
class Runner :
14
10
def __init__ (self , options = None , extra_files = None , top_file = "migensim_top.v" , dut_file = "migensim_dut.v" , vvp_file = None , keep_files = False ):
@@ -20,11 +16,14 @@ def __init__(self, options=None, extra_files=None, top_file="migensim_top.v", du
20
16
self .top_file = top_file
21
17
self .dut_file = dut_file
22
18
self .vvp_file = vvp_file
19
+ self .data_files = []
23
20
self .keep_files = keep_files
24
21
25
22
def start (self , c_top , c_dut ):
26
- _str2file (self .top_file , c_top )
27
- _str2file (self .dut_file , c_dut )
23
+ with open (self .top_file , "w" ) as f :
24
+ f .write (c_top )
25
+ c_dut .write (self .dut_file )
26
+ self .data_files += c_dut .data_files .keys ()
28
27
subprocess .check_call (["iverilog" , "-o" , self .vvp_file ] + self .options + [self .top_file , self .dut_file ] + self .extra_files )
29
28
self .process = subprocess .Popen (["vvp" , "-mmigensim" , "-Mvpi" , self .vvp_file ])
30
29
@@ -36,8 +35,9 @@ def close(self):
36
35
self .process .kill ()
37
36
self .process .wait ()
38
37
if not self .keep_files :
39
- for f in [self .top_file , self .dut_file , self .vvp_file ]:
38
+ for f in [self .top_file , self .dut_file , self .vvp_file ] + self . data_files :
40
39
try :
41
40
os .remove (f )
42
41
except OSError :
43
42
pass
43
+ self .data_files .clear ()
0 commit comments