Skip to content

Commit 5aaaf47

Browse files
committed
feat[platforms]: more user friendly platform selection
1 parent 6032ee7 commit 5aaaf47

File tree

1 file changed

+48
-6
lines changed

1 file changed

+48
-6
lines changed

hls4ml/backends/vitis_accelerator/vitis_accelerator_config.py

Lines changed: 48 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import json
22
import os
3-
3+
import subprocess
44

55
class VitisAcceleratorConfig:
66
def __init__(self, config):
@@ -15,18 +15,33 @@ def __init__(self, config):
1515
board_info = self.supported_boards[self.board]
1616
self.board_type = board_info["board_type"]
1717
self.part = board_info["part"]
18+
19+
# Get available platforms for the board
20+
platforms = self.get_available_platforms()
21+
platforms = self.filter_platforms(platforms, self.board)
22+
if not platforms:
23+
raise Exception("No platforms available for the board " + self.board)
24+
else:
25+
print("Available platforms for the board " + self.board + ": ")
26+
self.print_platforms(platforms)
27+
28+
# Set platform based on the config or default to the first available platform
1829
if accel_config.get("Platform") is not None:
19-
if accel_config.get("Platform") in board_info["platform"]:
30+
if accel_config.get("Platform") in platforms:
2031
self.platform = accel_config.get("Platform")
2132
else:
2233
print(
2334
"WARNING: You set an unrecognized Platform."
24-
"Using " + board_info["platform"][0] + " platform instead"
35+
"Using " + platforms[0] + " platform instead"
2536
)
26-
self.platform = board_info["platform"][0]
37+
self.platform = platforms[0]
2738
else:
28-
print("Using " + board_info["platform"][0] + " platform")
29-
self.platform = board_info["platform"][0]
39+
print(
40+
"WARNING: You didn't set a Platform."
41+
"Using " + platforms[0] + " platform instead"
42+
)
43+
self.platform = platforms[0]
44+
3045
self.memory_type = board_info["memory"]["type"]
3146
self.memory_channel_count = board_info["memory"]["channels"]
3247
else:
@@ -47,6 +62,33 @@ def __init__(self, config):
4762

4863
self.vivado_directives = accel_config.get("Vivado_Directives", [])
4964

65+
def get_available_platforms(self):
66+
if "XILINX_VITIS" not in os.environ:
67+
raise Exception("XILINX_VITIS Variable is not set, please set correctly and rerun")
68+
69+
output = subprocess.run(["platforminfo", "-l"], stdout=subprocess.PIPE)
70+
p_info = json.loads(output.stdout.decode('utf-8'))
71+
platforms = []
72+
for p in p_info['platforms']:
73+
platforms.append(p['baseName'])
74+
return platforms
75+
76+
def filter_platforms(self, platforms = None, board="alveo-u55c"):
77+
b = board.split('-')
78+
b_len = len(b)
79+
name = b[b_len-1]
80+
81+
f_platforms = []
82+
for p in platforms:
83+
p_name = p.split('_')[1]
84+
if p_name == name:
85+
f_platforms.append(p)
86+
return f_platforms
87+
88+
def print_platforms(self, platforms):
89+
for p in platforms:
90+
print(p)
91+
5092
def get_board_type(self):
5193
return self.board_type
5294

0 commit comments

Comments
 (0)