Skip to content

Commit 023b85b

Browse files
committed
scripts: fix function to get supported cores
Signed-off-by: Jingru Wang <jingru@synopsys.com>
1 parent b95c9ed commit 023b85b

File tree

1 file changed

+29
-13
lines changed

1 file changed

+29
-13
lines changed

scripts/test.py

Lines changed: 29 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
import threading
1616
import re
1717
import glob
18+
import pathlib
1819
import shutil
1920
import copy
2021
import serial
@@ -350,7 +351,7 @@ def _extract_mk_vars(self, data):
350351
continue
351352
if mname not in mk_vars:
352353
mk_vars[mname] = dict()
353-
var_content = line.split(maxsplit=2) # key =|:= value
354+
var_content = line.split(maxsplit=2)
354355
if len(var_content) == 3:
355356
mk_vars[mname][var_content[0]] = var_content[2]
356357
if var_content[0] == "ONCHIP_IP_LIST":
@@ -374,7 +375,7 @@ def get_configs(self, example):
374375
logger.error("Fail to run command {}".format(cmd))
375376
sys.exit(ex.output.decode("utf-8"))
376377

377-
def _parse_core_props(self, version, tcf):
378+
def _parse_core_props(self, version, core, tcf):
378379
configs = dict()
379380
tags = list()
380381
with open(tcf, "rb") as f:
@@ -395,24 +396,39 @@ def _parse_core_props(self, version, tcf):
395396
tags.append("smp")
396397
continue
397398
tags.append(self.platform_tags[key[12:]])
398-
core = os.path.basename(tcf)
399399
if not version in self.configs:
400400
self.configs[version] = dict()
401-
self.configs[version][core[0:-4]] = {
401+
self.configs[version][core] = {
402402
"configs": configs,
403403
"tags": tags
404404
}
405405

406-
def get_cores(self, version):
406+
def get_cores(self, example, version):
407407
cores = list()
408+
cmd = ["make", "EMBARC_ROOT=%s" % EMBARC_ROOT]
409+
cmd.append("BOARD=%s" % (self.name))
410+
cmd.append("BD_VER=%s" % (version))
411+
cmd.extend(["-C", example])
412+
cmd.append("spopt")
413+
try:
414+
output = subprocess.check_output(cmd, stderr=subprocess.STDOUT)
415+
if output:
416+
opt_lines = output.decode("utf-8").splitlines()
417+
for opt_line in opt_lines:
418+
if opt_line.startswith("SUPPORTED_CORES"):
419+
platforms_cores = opt_line.split(":", 1)[1]
420+
cores.extend(platforms_cores.split())
421+
break
422+
except subprocess.CalledProcessError as ex:
423+
logger.error("Fail to run command {}".format(cmd))
424+
sys.exit(ex.output.decode("utf-8"))
408425
board_root = os.path.join(EMBARC_ROOT, "board", self.name)
409-
for root, _, files in os.walk(board_root):
410-
if version in root:
411-
for file in files:
412-
if file.endswith(".tcf"):
413-
cores.append(os.path.splitext(file)[0])
414-
tcf = os.path.join(root, file)
415-
self._parse_core_props(version, tcf)
426+
for file in pathlib.Path(board_root).glob('**/*.tcf'):
427+
if version in str(file):
428+
tcf = os.path.join(board_root, str(file))
429+
for core in cores:
430+
if core in tcf:
431+
self._parse_core_props(version, core, tcf)
416432
return cores
417433

418434
def __repr__(self):
@@ -1177,7 +1193,7 @@ def add_default_platforms(self, platforms=None):
11771193
platform.get_configs(example_path)
11781194
versions = platform.supported_versions
11791195
for version in versions:
1180-
cores = platform.get_cores(version)
1196+
cores = platform.get_cores(example_path, version)
11811197
for core in cores:
11821198
platform.version = version
11831199
platform.core = core

0 commit comments

Comments
 (0)