@@ -21,17 +21,23 @@ class IndependentSimTestCase(object):
2121 A test case to be run in an independent simulation
2222 """
2323
24- def __init__ (self , test , config , simulator_if , seed , * , elaborate_only = False ):
25- self ._name = f"{ config .library_name !s} .{ config .design_unit_name !s} "
24+ @staticmethod
25+ def get_name (test , config ):
26+ name = f"{ config .library_name !s} .{ config .design_unit_name !s} "
2627
2728 if not config .is_default :
28- self . _name += "." + config .name
29+ name += "." + config .name
2930
3031 if test .is_explicit :
31- self . _name += "." + test .name
32+ name += "." + test .name
3233 elif config .is_default :
3334 # JUnit XML test reports wants three dotted name hierarchies
34- self ._name += ".all"
35+ name += ".all"
36+
37+ return name
38+
39+ def __init__ (self , test , config , simulator_if , seed , * , elaborate_only = False ):
40+ self ._name = self .get_name (test , config )
3541
3642 self ._configuration = config
3743
@@ -74,19 +80,28 @@ def run(self, *args, **kwargs):
7480 Run the test case using the output_path
7581 """
7682 results = self ._run .run (* args , ** kwargs )
83+
7784 return results [self ._test .name ] == PASSED
7885
86+ def get_seed (self ):
87+ return self ._run .get_seed ()
88+
7989
8090class SameSimTestSuite (object ):
8191 """
8292 A test suite where multiple test cases are run within the same simulation
8393 """
8494
85- def __init__ ( self , tests , config , simulator_if , seed , * , elaborate_only = False ):
86- self . _name = f" { config . library_name !s } . { config . design_unit_name !s } "
87-
95+ @ staticmethod
96+ def get_name ( config ):
97+ name = f" { config . library_name !s } . { config . design_unit_name !s } "
8898 if not config .is_default :
89- self ._name += "." + config .name
99+ name += "." + config .name
100+
101+ return name
102+
103+ def __init__ (self , tests , config , simulator_if , seed , * , elaborate_only = False ):
104+ self ._name = self .get_name (config )
90105
91106 self ._configuration = config
92107
@@ -98,7 +113,7 @@ def __init__(self, tests, config, simulator_if, seed, *, elaborate_only=False):
98113 test_suite_name = self ._name ,
99114 test_cases = [test .name for test in tests ],
100115 seed = seed ,
101- )
116+ )
102117
103118 @property
104119 def file_name (self ):
@@ -146,8 +161,11 @@ def run(self, *args, **kwargs):
146161 """
147162 results = self ._run .run (* args , ** kwargs )
148163 results = {_full_name (self ._name , test_name ): result for test_name , result in results .items ()}
164+
149165 return results
150166
167+ def get_seed (self ):
168+ return self ._run .get_seed ()
151169
152170class TestRun (object ):
153171 """
@@ -160,7 +178,19 @@ def __init__(self, *, simulator_if, config, elaborate_only, test_suite_name, tes
160178 self ._elaborate_only = elaborate_only
161179 self ._test_suite_name = test_suite_name
162180 self ._test_cases = test_cases
163- self ._args_seed = seed
181+ self ._seed = seed
182+
183+ def get_seed (self ):
184+ if self ._seed :
185+ pass
186+ elif "seed" in self ._config .sim_options :
187+ self ._seed = self ._config .sim_options ["seed" ]
188+ else :
189+ now_us = str (int (time () * 1e6 )).encode ()
190+ thread_id = get_ident ().to_bytes (8 , byteorder = "little" )
191+ self ._seed = blake2b (now_us , digest_size = 8 , salt = thread_id ).hexdigest ()
192+
193+ return self ._seed
164194
165195 def set_test_cases (self , test_cases ):
166196 self ._test_cases = test_cases
@@ -223,15 +253,7 @@ def _simulate(self, output_path):
223253 """
224254
225255 config = self ._config .copy ()
226-
227- if self ._args_seed :
228- seed = self ._args_seed
229- elif "seed" in config .sim_options :
230- seed = config .sim_options ["seed" ]
231- else :
232- now_us = str (int (time () * 1e6 )).encode ()
233- thread_id = get_ident ().to_bytes (8 , byteorder = "little" )
234- seed = blake2b (now_us , digest_size = 8 , salt = thread_id ).hexdigest ()
256+ seed = self .get_seed ()
235257
236258 print (f"Seed for { self ._test_suite_name } : { seed } " )
237259
0 commit comments