[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