aboutsummaryrefslogtreecommitdiffstats
path: root/pyGHDL/dom/_Translate.py
diff options
context:
space:
mode:
authorPatrick Lehmann <Patrick.Lehmann@plc2.de>2021-07-28 23:52:31 +0200
committerumarcor <unai.martinezcorral@ehu.eus>2021-08-23 16:35:32 +0200
commit50f65e4255f62e662d781d01f395c029426c1529 (patch)
tree912ff02260754ece39cd566932c75f552b8de764 /pyGHDL/dom/_Translate.py
parent20b636decb9c502891fbf5f9a15cf8e7126904a5 (diff)
downloadghdl-50f65e4255f62e662d781d01f395c029426c1529.tar.gz
ghdl-50f65e4255f62e662d781d01f395c029426c1529.tar.bz2
ghdl-50f65e4255f62e662d781d01f395c029426c1529.zip
More handling of concurrent statements.
Diffstat (limited to 'pyGHDL/dom/_Translate.py')
-rw-r--r--pyGHDL/dom/_Translate.py72
1 files changed, 22 insertions, 50 deletions
diff --git a/pyGHDL/dom/_Translate.py b/pyGHDL/dom/_Translate.py
index b7e8f5ab9..bb96cf8c6 100644
--- a/pyGHDL/dom/_Translate.py
+++ b/pyGHDL/dom/_Translate.py
@@ -138,7 +138,16 @@ from pyGHDL.dom.Expression import (
MatchingLessEqualExpression,
MatchingGreaterThanExpression,
)
-from pyGHDL.dom.Concurrent import ConcurrentBlockStatement, EntityInstantiation, ConfigurationInstantiation, ComponentInstantiation
+from pyGHDL.dom.Concurrent import (
+ ConcurrentBlockStatement,
+ EntityInstantiation,
+ ConfigurationInstantiation,
+ ComponentInstantiation,
+ ProcessStatement,
+ IfGenerateStatement,
+ ForGenerateStatement,
+ CaseGenerateStatement,
+)
from pyGHDL.dom.Subprogram import Function, Procedure
from pyGHDL.dom.Misc import Alias
from pyGHDL.dom.PSL import DefaultClock
@@ -757,17 +766,11 @@ def GetStatementsFromChainedNodes(
kind = GetIirKindOfNode(statement)
if kind == nodes.Iir_Kind.Sensitized_Process_Statement:
- print(
- "[NOT IMPLEMENTED] Process (label: '{label}') with sensitivity list at line {line}".format(
- label=label, line=pos.Line
- )
- )
+ yield ProcessStatement.parse(statement, label, True)
+
elif kind == nodes.Iir_Kind.Process_Statement:
- print(
- "[NOT IMPLEMENTED] Process (label: '{label}') without sensitivity list at line {line}".format(
- label=label, line=pos.Line
- )
- )
+ yield ProcessStatement.parse(statement, label, False)
+
elif kind == nodes.Iir_Kind.Concurrent_Simple_Signal_Assignment:
print(
"[NOT IMPLEMENTED] Concurrent (simple) signal assignment (label: '{label}') at line {line}".format(
@@ -796,32 +799,13 @@ def GetStatementsFromChainedNodes(
instantiatedUnit = nodes.Get_Instantiated_Unit(statement)
instantiatedUnitKind = GetIirKindOfNode(instantiatedUnit)
if instantiatedUnitKind == nodes.Iir_Kind.Entity_Aspect_Entity:
- entityInstance = EntityInstantiation.parse(statement, instantiatedUnit, label)
-
- print(
- "Entity '{entity!s}({architecture})' instantiated with label '{label}' at line {line}".format(
- entity=entityInstance.Entity,
- architecture=entityInstance.Architecture,
- label=entityInstance.Label,
- line=pos.Line,
- )
- )
+ yield EntityInstantiation.parse(statement, instantiatedUnit, label)
elif instantiatedUnitKind == nodes.Iir_Kind.Entity_Aspect_Configuration:
- configurationInstance = ConfigurationInstantiation.parse(statement, instantiatedUnit, label)
-
- print(
- "Configuration '{configuration}' instantiated with label '{label}' at line {line}".format(
- configuration=configurationInstance.Configuration, label=configurationInstance.Label, line=pos.Line
- )
+ yield ConfigurationInstantiation.parse(
+ statement, instantiatedUnit, label
)
elif instantiatedUnitKind == nodes.Iir_Kind.Simple_Name:
- configurationInstance = ComponentInstantiation.parse(statement, instantiatedUnit, label)
-
- print(
- "Component '{component}' instantiated with label '{label}' at line {line}".format(
- component=configurationInstance.Component, label=label, line=pos.Line
- )
- )
+ yield ComponentInstantiation.parse(statement, instantiatedUnit, label)
else:
raise DOMException(
"Unknown instantiation kind '{kind}' in instantiation of label {label} at {file}:{line}:{column}.".format(
@@ -835,23 +819,11 @@ def GetStatementsFromChainedNodes(
elif kind == nodes.Iir_Kind.Block_Statement:
yield ConcurrentBlockStatement.parse(statement, label)
elif kind == nodes.Iir_Kind.If_Generate_Statement:
- print(
- "[NOT IMPLEMENTED] If-generate statement (label: '{label}') at line {line}".format(
- label=label, line=pos.Line
- )
- )
- elif kind == nodes.Iir_Kind.For_Generate_Statement:
- print(
- "[NOT IMPLEMENTED] For-generate statement (label: '{label}') at line {line}".format(
- label=label, line=pos.Line
- )
- )
+ yield IfGenerateStatement.parse(statement, label)
elif kind == nodes.Iir_Kind.Case_Generate_Statement:
- print(
- "[NOT IMPLEMENTED] Case-generate statement (label: '{label}') at line {line}".format(
- label=label, line=pos.Line
- )
- )
+ yield CaseGenerateStatement.parse(statement, label)
+ 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(