@@ -39,6 +39,8 @@ def __init__(
39
39
parse_file ,
40
40
includes_dir = None ,
41
41
include_list_add = None ,
42
+ include_temp_dir = None ,
43
+ include_temp_list_add = None ,
42
44
second_parse_file = None ,
43
45
script_path = None ,
44
46
script_params = None ,
@@ -64,6 +66,8 @@ def __init__(
64
66
self .archs = arch_list_add
65
67
self .include_dir = includes_dir
66
68
self .includes = include_list_add
69
+ self .include_temp_dir = include_temp_dir
70
+ self .include_temps = include_temp_list_add
67
71
self .parse_file = parse_file
68
72
self .second_parse_file = second_parse_file
69
73
self .script_path = script_path
@@ -97,6 +101,7 @@ def __init__(
97
101
arch ,
98
102
circuit ,
99
103
include ,
104
+ include_temp ,
100
105
script_params ,
101
106
work_dir ,
102
107
run_command ,
@@ -108,6 +113,7 @@ def __init__(
108
113
self ._arch = arch
109
114
self ._circuit = circuit
110
115
self ._include = include
116
+ self ._include_temp = include_temp
111
117
self ._script_params = script_params
112
118
self ._run_command = run_command
113
119
self ._parse_command = parse_command
@@ -139,6 +145,12 @@ def include(self):
139
145
"""
140
146
return self ._include
141
147
148
+ def include_temp (self ):
149
+ """
150
+ return the list of temporary include files of the job.
151
+ """
152
+ return self ._include_temp
153
+
142
154
def script_params (self ):
143
155
"""
144
156
return the script parameter of the job
@@ -197,6 +209,7 @@ def load_task_config(config_file) -> TaskConfig:
197
209
[
198
210
"circuits_dir" ,
199
211
"includes_dir" ,
212
+ "include_temp_dir" ,
200
213
"archs_dir" ,
201
214
"additional_files" ,
202
215
"parse_file" ,
@@ -264,6 +277,7 @@ def load_task_config(config_file) -> TaskConfig:
264
277
265
278
check_required_fields (config_file , required_keys , key_values )
266
279
check_include_fields (config_file , key_values )
280
+ check_include_temp_fields (config_file , key_values )
267
281
268
282
# Useful meta-data about the config
269
283
config_dir = str (Path (config_file ).parent )
@@ -300,6 +314,18 @@ def check_include_fields(config_file, key_values):
300
314
)
301
315
)
302
316
317
+ def check_include_temp_fields (config_file , key_values ):
318
+ """
319
+ Check that include_temp_dir was specified if some files to temporarily include
320
+ in the designs (include_temp_list_add) was specified.
321
+ """
322
+ if "include_temp_list_add" in key_values :
323
+ if "include_temp_dir" not in key_values :
324
+ raise VtrError (
325
+ "Missing required key '{key}' in config file {file}" .format (
326
+ key = "include_temp_dir" , file = config_file
327
+ )
328
+ )
303
329
304
330
def shorten_task_names (configs , common_task_prefix ):
305
331
"""
@@ -377,6 +403,17 @@ def create_cmd(
377
403
378
404
cmd += includes
379
405
406
+ # Resolve and collect all include_temp paths in the config file
407
+ # as -include_temp ["include_temp1", "include_temp2", ..]
408
+ include_temps = []
409
+ if config .include_temps :
410
+ cmd += ["-include_temp" ]
411
+ for include_temp in config .include_temps :
412
+ abs_include_filepath = resolve_vtr_source_file (config , include_temp , config .include_temp_dir )
413
+ include_temps .append (abs_include_filepath )
414
+
415
+ cmd += include_temps
416
+
380
417
# Check if additional architectural data files are present
381
418
if config .additional_files_list_add :
382
419
for additional_file in config .additional_files_list_add :
@@ -466,7 +503,7 @@ def create_cmd(
466
503
resolve_vtr_source_file (config , noc_traffic , config .noc_traffic_dir ),
467
504
]
468
505
469
- return includes , parse_cmd , second_parse_cmd , qor_parse_command , cmd
506
+ return includes , include_temps , parse_cmd , second_parse_cmd , qor_parse_command , cmd
470
507
471
508
472
509
# pylint: disable=too-many-branches
@@ -509,7 +546,7 @@ def create_jobs(args, configs, after_run=False) -> List[Job]:
509
546
)
510
547
)
511
548
512
- includes , parse_cmd , second_parse_cmd , qor_parse_command , cmd = create_cmd (
549
+ includes , include_temps , parse_cmd , second_parse_cmd , qor_parse_command , cmd = create_cmd (
513
550
abs_circuit_filepath , abs_arch_filepath , config , args , circuit , noc_traffic
514
551
)
515
552
@@ -521,6 +558,7 @@ def create_jobs(args, configs, after_run=False) -> List[Job]:
521
558
config ,
522
559
circuit ,
523
560
includes ,
561
+ include_temps ,
524
562
arch ,
525
563
noc_traffic ,
526
564
value ,
@@ -540,6 +578,7 @@ def create_jobs(args, configs, after_run=False) -> List[Job]:
540
578
config ,
541
579
circuit ,
542
580
includes ,
581
+ include_temps ,
543
582
arch ,
544
583
noc_traffic ,
545
584
None ,
@@ -561,6 +600,7 @@ def create_job(
561
600
config ,
562
601
circuit ,
563
602
include ,
603
+ include_temp ,
564
604
arch ,
565
605
noc_flow ,
566
606
param ,
@@ -658,6 +698,7 @@ def create_job(
658
698
arch ,
659
699
circuit ,
660
700
include ,
701
+ include_temp ,
661
702
param_string ,
662
703
work_dir + "/" + param_string ,
663
704
current_cmd ,
0 commit comments