aboutsummaryrefslogtreecommitdiffstats
path: root/pyGHDL/cli/DOM.py
diff options
context:
space:
mode:
Diffstat (limited to 'pyGHDL/cli/DOM.py')
-rwxr-xr-xpyGHDL/cli/DOM.py34
1 files changed, 32 insertions, 2 deletions
diff --git a/pyGHDL/cli/DOM.py b/pyGHDL/cli/DOM.py
index dceafc629..622a70d16 100755
--- a/pyGHDL/cli/DOM.py
+++ b/pyGHDL/cli/DOM.py
@@ -4,12 +4,13 @@ from sys import argv
from sys import exit as sysexit
from pathlib import Path
+from textwrap import dedent
from pydecor import export
from pyGHDL import GHDLBaseException
from pyGHDL.libghdl import LibGHDLException
-from pyGHDL.dom.Common import DOMException
+from pyGHDL.dom import DOMException
from pyGHDL.dom.NonStandard import Design, Document
from pyGHDL.dom.formatting.prettyprint import PrettyPrint, PrettyPrintException
@@ -41,6 +42,19 @@ class Application:
print("\n".join(buffer))
+ document: Document = self._design.Documents[0]
+ print()
+ print(
+ "libghdl processing time: {: 5.3f} us".format(
+ document.LibGHDLProcessingTime * 10 ** 6
+ )
+ )
+ print(
+ "DOM translation time: {:5.3f} us".format(
+ document.DOMTranslationTime * 10 ** 6
+ )
+ )
+
def handleException(ex):
if isinstance(ex, PrettyPrintException):
@@ -52,6 +66,7 @@ def handleException(ex):
if ex2 is not None:
for message in ex2.InternalErrors:
print("libghdl: {message}".format(message=message))
+ return 0
return 4
elif isinstance(ex, LibGHDLException):
print("LIB:", ex)
@@ -81,8 +96,23 @@ def main(items=argv[1:]):
app = Application()
app.addFile(Path(item), "default_lib")
app.prettyPrint()
- except Exception as ex:
+ except GHDLBaseException as ex:
_exitcode = handleException(ex)
+ except Exception as ex:
+ print(
+ dedent(
+ """\
+ Fatal: An unhandled exception has reached to the top-most exception handler.
+ Exception: {name}
+ """.format(
+ name=ex.__class__.__name__
+ )
+ )
+ )
+ if isinstance(ex, ValueError):
+ print(" Message: {msg}".format(msg=str(ex)))
+ if ex.__cause__ is not None:
+ print("Cause: {msg}".format(msg=str(ex.__cause__)))
return _exitcode