[otbn] Use C bindings for YAML parsing if available
This speeds simple "assemble; link; simulate" flows up by almost a
factor of two.
Signed-off-by: Rupert Swarbrick <rswarbrick@lowrisc.org>
diff --git a/hw/ip/otbn/util/shared/yaml_parse_helpers.py b/hw/ip/otbn/util/shared/yaml_parse_helpers.py
index 9d2dcd4..d930be9 100644
--- a/hw/ip/otbn/util/shared/yaml_parse_helpers.py
+++ b/hw/ip/otbn/util/shared/yaml_parse_helpers.py
@@ -7,6 +7,11 @@
from typing import Callable, Dict, List, Optional, Sequence, TypeVar
import yaml
+try:
+ from yaml import CSafeLoader as YamlLoader
+except ImportError:
+ from yaml import SafeLoader as YamlLoader
+
T = TypeVar('T')
@@ -143,7 +148,7 @@
for_msg = ' for ' + what if what is not None else ''
try:
with open(path, 'r') as handle:
- return yaml.load(handle, Loader=yaml.SafeLoader)
+ return yaml.load(handle, Loader=YamlLoader)
except FileNotFoundError:
raise RuntimeError('Cannot find YAML file{} at {!r}.'
.format(for_msg, path)) from None