[dvsim tool] "use_cfgs" usecase enhancement
- expanded "use_cfgs" to list hjson file targets or complete hjson dicts
inline
- this will allow specification of simpler, repeatitive cfgs such as
lint a lot more concisely
Signed-off-by: Srikrishna Iyer <sriyer@google.com>
diff --git a/util/dvsim/utils.py b/util/dvsim/utils.py
index 0e95a41..377bd67 100644
--- a/util/dvsim/utils.py
+++ b/util/dvsim/utils.py
@@ -86,7 +86,7 @@
return hjson_cfg_dict
-def subst_wildcards(var, mdict, ignored_wildcards=[]):
+def subst_wildcards(var, mdict, ignored_wildcards=[], ignore_error=False):
'''
If var has wildcards specified within {..}, find and substitute them.
'''
@@ -96,7 +96,8 @@
if "{eval_cmd}" in var:
idx = var.find("{eval_cmd}") + 11
- subst_var = subst_wildcards(var[idx:], mdict, ignored_wildcards)
+ subst_var = subst_wildcards(var[idx:], mdict, ignored_wildcards,
+ ignore_error)
# If var has wildcards that were ignored, then skip running the command
# for now, assume that it will be handled later.
match = re.findall(r"{([A-Za-z0-9\_]+)}", subst_var)
@@ -115,7 +116,8 @@
subst_found = []
for element in found:
element = subst_wildcards(
- element, mdict, ignored_wildcards)
+ element, mdict, ignored_wildcards,
+ ignore_error)
subst_found.append(element)
# Expand list into a str since list within list is
# not supported.
@@ -123,7 +125,8 @@
elif type(found) is str:
found = subst_wildcards(found, mdict,
- ignored_wildcards)
+ ignored_wildcards,
+ ignore_error)
elif type(found) is bool:
found = int(found)
@@ -132,7 +135,7 @@
# Check if the wildcard exists as an environment variable
env_var = os.environ.get(item)
if env_var is not None: subst_list[item] = env_var
- else:
+ elif not ignore_error:
log.error(
"Substitution for the wildcard \"%s\" not found",
item)
@@ -142,7 +145,10 @@
return var
-def find_and_substitute_wildcards(sub_dict, full_dict, ignored_wildcards=[]):
+def find_and_substitute_wildcards(sub_dict,
+ full_dict,
+ ignored_wildcards=[],
+ ignore_error=False):
'''
Recursively find key values containing wildcards in sub_dict in full_dict
and return resolved sub_dict.
@@ -151,7 +157,7 @@
if type(sub_dict[key]) in [dict, OrderedDict]:
# Recursively call this funciton in sub-dicts
sub_dict[key] = find_and_substitute_wildcards(
- sub_dict[key], full_dict, ignored_wildcards)
+ sub_dict[key], full_dict, ignored_wildcards, ignore_error)
elif type(sub_dict[key]) is list:
sub_dict_key_values = list(sub_dict[key])
@@ -162,18 +168,19 @@
# Recursively call this funciton in sub-dicts
sub_dict_key_values[i] = \
find_and_substitute_wildcards(sub_dict_key_values[i],
- full_dict, ignored_wildcards)
+ full_dict, ignored_wildcards, ignore_error)
elif type(sub_dict_key_values[i]) is str:
sub_dict_key_values[i] = subst_wildcards(
- sub_dict_key_values[i], full_dict, ignored_wildcards)
+ sub_dict_key_values[i], full_dict, ignored_wildcards,
+ ignore_error)
# Set the substituted key values back
sub_dict[key] = sub_dict_key_values
elif type(sub_dict[key]) is str:
sub_dict[key] = subst_wildcards(sub_dict[key], full_dict,
- ignored_wildcards)
+ ignored_wildcards, ignore_error)
return sub_dict
@@ -217,7 +224,7 @@
return op
# List of 'not applicable' identifiers.
- na_list = ['--', 'NA', 'N.A.', 'N.A', 'na', 'n.a.', 'n.a']
+ na_list = ['--', 'NA', 'N.A.', 'N.A', 'N/A', 'na', 'n.a.', 'n.a', 'n/a']
na_list_patterns = '|'.join(na_list)
# List of floating point patterns: '0', '0.0' & '.0'