aboutsummaryrefslogtreecommitdiffstats
path: root/pyGHDL/dom/Sequential.py
diff options
context:
space:
mode:
authorPatrick Lehmann <Patrick.Lehmann@plc2.de>2021-08-17 10:16:59 +0200
committerumarcor <unai.martinezcorral@ehu.eus>2021-08-23 16:35:36 +0200
commitc34b020a8c1b6aa5083a637e3e9062c7a71b309a (patch)
treefdfcb1d344e55983f01091be66c6571b9fc782fa /pyGHDL/dom/Sequential.py
parentad58c297680fe0256eacd12249d2131b00ff9b66 (diff)
downloadghdl-c34b020a8c1b6aa5083a637e3e9062c7a71b309a.tar.gz
ghdl-c34b020a8c1b6aa5083a637e3e9062c7a71b309a.tar.bz2
ghdl-c34b020a8c1b6aa5083a637e3e9062c7a71b309a.zip
Some updates.
Diffstat (limited to 'pyGHDL/dom/Sequential.py')
-rw-r--r--pyGHDL/dom/Sequential.py68
1 files changed, 59 insertions, 9 deletions
diff --git a/pyGHDL/dom/Sequential.py b/pyGHDL/dom/Sequential.py
index 7fe94fad5..cb6fa5a8f 100644
--- a/pyGHDL/dom/Sequential.py
+++ b/pyGHDL/dom/Sequential.py
@@ -49,6 +49,8 @@ from pyVHDLModel.SyntaxModel import (
ForLoopStatement as VHDLModel_ForLoopStatement,
SequentialSimpleSignalAssignment as VHDLModel_SequentialSimpleSignalAssignment,
SequentialProcedureCall as VHDLModel_SequentialProcedureCall,
+ SequentialAssertStatement as VHDLModel_SequentialAssertStatement,
+ SequentialReportStatement as VHDLModel_SequentialReportStatement,
Name,
SequentialStatement,
Expression,
@@ -211,7 +213,7 @@ class Case(VHDLModel_Case, DOMMixin):
if block is nodes.Null_Iir:
return cls(caseNode, choices)
- statementChain = nodes.Get_Sequential_Statement_Chain(block)
+ statementChain = nodes.Get_Sequential_Statement_Chain(caseNode)
statements = GetSequentialStatementsFromChainedNodes(
statementChain, "case", label
)
@@ -271,7 +273,7 @@ class CaseStatement(VHDLModel_CaseStatement, DOMMixin):
cases = []
choices = None
alternative = nodes.Get_Case_Statement_Alternative_Chain(caseNode)
- caseNode = alternative
+ cNode = alternative
while alternative != nodes.Null_Iir:
choiceKind = GetIirKindOfNode(alternative)
@@ -319,7 +321,7 @@ class CaseStatement(VHDLModel_CaseStatement, DOMMixin):
choices = None
cases.append(OthersCase.parse(alternative, label))
alternative = nodes.Get_Chain(alternative)
- caseNode = alternative
+ cNode = alternative
continue
else:
pos = Position.parse(alternative)
@@ -330,9 +332,9 @@ class CaseStatement(VHDLModel_CaseStatement, DOMMixin):
)
if choices is not None:
- cases.append(Case.parse(alternative, choices, label))
+ cases.append(Case.parse(cNode, choices, label))
- caseNode = alternative
+ cNode = alternative
choices = [
choice,
]
@@ -340,7 +342,7 @@ class CaseStatement(VHDLModel_CaseStatement, DOMMixin):
alternative = nodes.Get_Chain(alternative)
if choices is not None:
- cases.append(Case.parse(alternative, choices, label))
+ cases.append(Case.parse(cNode, choices, label))
return cls(caseNode, label, expression, cases)
@@ -431,11 +433,11 @@ class SequentialProcedureCall(VHDLModel_SequentialProcedureCall, DOMMixin):
def __init__(
self,
callNode: Iir,
- label: str,
procedureName: Name,
parameterMappings: Iterable,
+ label: str = None,
):
- super().__init__(label, procedureName, parameterMappings)
+ super().__init__(procedureName, parameterMappings, label)
DOMMixin.__init__(self, callNode)
@classmethod
@@ -451,4 +453,52 @@ class SequentialProcedureCall(VHDLModel_SequentialProcedureCall, DOMMixin):
# TODO: parameter mappings
parameterMappings = []
- return cls(callNode, label, procedureName, parameterMappings)
+ return cls(callNode, procedureName, parameterMappings, label)
+
+
+@export
+class SequentialAssertStatement(VHDLModel_SequentialAssertStatement, DOMMixin):
+ def __init__(
+ self,
+ assertNode: Iir,
+ condition: Expression,
+ message: Expression,
+ severity: Expression = None,
+ label: str = None,
+ ):
+ super().__init__(label, condition, message, severity, label)
+ DOMMixin.__init__(self, assertNode)
+
+ @classmethod
+ def parse(cls, assertNode: Iir, label: str) -> "SequentialAssertStatement":
+ from pyGHDL.dom._Utils import GetIirKindOfNode
+ from pyGHDL.dom._Translate import GetExpressionFromNode
+
+ condition = ""
+ message = ""
+ severity = ""
+
+ return cls(assertNode, condition, message, severity, label)
+
+
+@export
+class SequentialReportStatement(VHDLModel_SequentialReportStatement, DOMMixin):
+ def __init__(
+ self,
+ reportNode: Iir,
+ message: Expression,
+ severity: Expression = None,
+ label: str = None,
+ ):
+ super().__init__(label, message, severity, label)
+ DOMMixin.__init__(self, reportNode)
+
+ @classmethod
+ def parse(cls, reportNode: Iir, label: str) -> "SequentialReportStatement":
+ from pyGHDL.dom._Utils import GetIirKindOfNode
+ from pyGHDL.dom._Translate import GetExpressionFromNode
+
+ message = ""
+ severity = ""
+
+ return cls(reportNode, message, severity, label)