aboutsummaryrefslogtreecommitdiffstats
path: root/pyGHDL/dom/_Translate.py
diff options
context:
space:
mode:
authorUnai Martinez-Corral <38422348+umarcor@users.noreply.github.com>2021-08-27 20:25:31 +0100
committerGitHub <noreply@github.com>2021-08-27 20:25:31 +0100
commit14fd4f9e22e0e0a4320559925ae74ee52b7b35e9 (patch)
tree3ee3c7c68900377358bbcd89bcb1920790f2645c /pyGHDL/dom/_Translate.py
parent6ae2325726c7d5dc347149cfb564e34dd9cb883d (diff)
parentca71f18daa2f8fdea623b5733c7ab439e37388b6 (diff)
downloadghdl-14fd4f9e22e0e0a4320559925ae74ee52b7b35e9.tar.gz
ghdl-14fd4f9e22e0e0a4320559925ae74ee52b7b35e9.tar.bz2
ghdl-14fd4f9e22e0e0a4320559925ae74ee52b7b35e9.zip
pyGHDL.dom: improvements (#1848)
# New Features * Translate null statements. * Sequential procedure call. * Concurrent assert statement (but without condition) This needs either PSL translations or help from @tgingold to have partial elaboration to a PSL assert becomes a normal VHDL assertion like in VHDL-93. * Translate sensitivity lists. # Changes * None # Bug fixes * Changes due to typo in pyVHDLModel for `Choises`.
Diffstat (limited to 'pyGHDL/dom/_Translate.py')
-rw-r--r--pyGHDL/dom/_Translate.py17
1 files changed, 6 insertions, 11 deletions
diff --git a/pyGHDL/dom/_Translate.py b/pyGHDL/dom/_Translate.py
index 723b13f69..fe66f2c98 100644
--- a/pyGHDL/dom/_Translate.py
+++ b/pyGHDL/dom/_Translate.py
@@ -42,6 +42,8 @@ from pyGHDL.dom.Sequential import (
SequentialAssertStatement,
WaitStatement,
SequentialSimpleSignalAssignment,
+ NullStatement,
+ SequentialProcedureCall,
)
from pyVHDLModel.SyntaxModel import (
ConstraintUnion,
@@ -164,6 +166,7 @@ from pyGHDL.dom.Concurrent import (
GenericAssociationItem,
PortAssociationItem,
ParameterAssociationItem,
+ ConcurrentAssertStatement,
)
from pyGHDL.dom.Subprogram import Function, Procedure
from pyGHDL.dom.Misc import Alias
@@ -920,11 +923,7 @@ def GetConcurrentStatementsFromChainedNodes(
elif kind == nodes.Iir_Kind.For_Generate_Statement:
yield ForGenerateStatement.parse(statement, label)
elif kind == nodes.Iir_Kind.Psl_Assert_Directive:
- print(
- "[NOT IMPLEMENTED] PSL assert directive (label: '{label}') at line {line}".format(
- label=label, line=pos.Line
- )
- )
+ yield ConcurrentAssertStatement.parse(statement, label)
else:
raise DOMException(
"Unknown statement of kind '{kind}' in {entity} '{name}' at {file}:{line}:{column}.".format(
@@ -967,17 +966,13 @@ def GetSequentialStatementsFromChainedNodes(
elif kind == nodes.Iir_Kind.Wait_Statement:
yield WaitStatement.parse(statement, label)
elif kind == nodes.Iir_Kind.Procedure_Call_Statement:
- print(
- "[NOT IMPLEMENTED] Procedure call (label: '{label}') at line {line}".format(label=label, line=pos.Line)
- )
+ yield SequentialProcedureCall.parse(statement, label)
elif kind == nodes.Iir_Kind.Report_Statement:
yield SequentialReportStatement.parse(statement, label)
elif kind == nodes.Iir_Kind.Assertion_Statement:
yield SequentialAssertStatement.parse(statement, label)
elif kind == nodes.Iir_Kind.Null_Statement:
- print(
- "[NOT IMPLEMENTED] null statement (label: '{label}') at line {line}".format(label=label, line=pos.Line)
- )
+ yield NullStatement(statement, label)
else:
raise DOMException(
"Unknown statement of kind '{kind}' in {entity} '{name}' at {file}:{line}:{column}.".format(