From ca39821dc013a877a8dbdfabbc3b861eb4d4d2e3 Mon Sep 17 00:00:00 2001 From: Patrick Lehmann Date: Mon, 26 Jul 2021 00:13:11 +0200 Subject: Adjusted to renaming in pyVHDLModel. --- pyGHDL/dom/NonStandard.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'pyGHDL/dom/NonStandard.py') diff --git a/pyGHDL/dom/NonStandard.py b/pyGHDL/dom/NonStandard.py index bf48db900..41f58732f 100644 --- a/pyGHDL/dom/NonStandard.py +++ b/pyGHDL/dom/NonStandard.py @@ -42,8 +42,7 @@ from typing import Any from pydecor import export -from pyGHDL.dom.PSL import VerificationUnit, VerificationProperty, VerificationMode -from pyVHDLModel.VHDLModel import ( +from pyVHDLModel.SyntaxModel import ( Design as VHDLModel_Design, Library as VHDLModel_Library, Document as VHDLModel_Document, @@ -73,6 +72,7 @@ from pyGHDL.dom.DesignUnit import ( Configuration, PackageInstantiation, ) +from pyGHDL.dom.PSL import VerificationUnit, VerificationProperty, VerificationMode __all__ = [] -- cgit v1.2.3 From edd59b8997c30c8a559d4d7d433631ef03c19546 Mon Sep 17 00:00:00 2001 From: Patrick Lehmann Date: Fri, 13 Aug 2021 22:36:41 +0200 Subject: Black formatting. --- pyGHDL/dom/NonStandard.py | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) (limited to 'pyGHDL/dom/NonStandard.py') diff --git a/pyGHDL/dom/NonStandard.py b/pyGHDL/dom/NonStandard.py index 41f58732f..fe199d58e 100644 --- a/pyGHDL/dom/NonStandard.py +++ b/pyGHDL/dom/NonStandard.py @@ -213,9 +213,7 @@ class Document(VHDLModel_Document): else: raise DOMException( - "Unknown design unit kind '{kindName}'({kind}).".format( - kindName=nodeKind.name, kind=nodeKind - ) + "Unknown design unit kind '{kind}'.".format(kind=nodeKind.name) ) @property -- cgit v1.2.3 From 3f0308a5f807269aa5691fa1c704c0e9147d45f1 Mon Sep 17 00:00:00 2001 From: Patrick Lehmann Date: Mon, 16 Aug 2021 23:47:04 +0200 Subject: Handle contexts. --- pyGHDL/dom/NonStandard.py | 40 +++++++++++++++++++++++++++++++++------- 1 file changed, 33 insertions(+), 7 deletions(-) (limited to 'pyGHDL/dom/NonStandard.py') diff --git a/pyGHDL/dom/NonStandard.py b/pyGHDL/dom/NonStandard.py index fe199d58e..b59efeacb 100644 --- a/pyGHDL/dom/NonStandard.py +++ b/pyGHDL/dom/NonStandard.py @@ -42,6 +42,7 @@ from typing import Any from pydecor import export +from pyGHDL.dom.Names import SimpleName from pyVHDLModel.SyntaxModel import ( Design as VHDLModel_Design, Library as VHDLModel_Library, @@ -61,8 +62,8 @@ from pyGHDL.libghdl import ( files_map_editor, ) from pyGHDL.libghdl.vhdl import nodes, sem_lib, parse -from pyGHDL.dom import DOMException -from pyGHDL.dom._Utils import GetIirKindOfNode, CheckForErrors +from pyGHDL.dom import DOMException, Position +from pyGHDL.dom._Utils import GetIirKindOfNode, CheckForErrors, GetNameOfNode from pyGHDL.dom.DesignUnit import ( Entity, Architecture, @@ -71,6 +72,8 @@ from pyGHDL.dom.DesignUnit import ( Context, Configuration, PackageInstantiation, + LibraryClause, + UseClause, ) from pyGHDL.dom.PSL import VerificationUnit, VerificationProperty, VerificationMode @@ -171,20 +174,43 @@ class Document(VHDLModel_Document): libraryUnit = nodes.Get_Library_Unit(unit) nodeKind = GetIirKindOfNode(libraryUnit) + contextItems = [] + contextNames = [] + context = nodes.Get_Context_Items(unit) + if context is not nodes.Null_Iir: + for item in utils.chain_iter(context): + itemKind = GetIirKindOfNode(item) + if itemKind is nodes.Iir_Kind.Library_Clause: + contextNames.append(SimpleName(item, GetNameOfNode(item))) + if nodes.Get_Has_Identifier_List(item): + continue + + contextItems.append(LibraryClause(item, contextNames)) + contextNames = [] + elif itemKind is nodes.Iir_Kind.Use_Clause: + contextItems.append(UseClause.parse(item)) + else: + pos = Position.parse(item) + raise DOMException( + "Unknown context item kind '{kind}' in context at line {line}.".format( + kind=itemKind.name, line=pos.Line + ) + ) + if nodeKind == nodes.Iir_Kind.Entity_Declaration: - entity = Entity.parse(libraryUnit) + entity = Entity.parse(libraryUnit, contextItems) self.Entities.append(entity) elif nodeKind == nodes.Iir_Kind.Architecture_Body: - architecture = Architecture.parse(libraryUnit) + architecture = Architecture.parse(libraryUnit, contextItems) self.Architectures.append(architecture) elif nodeKind == nodes.Iir_Kind.Package_Declaration: - package = Package.parse(libraryUnit) + package = Package.parse(libraryUnit, contextItems) self.Packages.append(package) elif nodeKind == nodes.Iir_Kind.Package_Body: - packageBody = PackageBody.parse(libraryUnit) + packageBody = PackageBody.parse(libraryUnit, contextItems) self.PackageBodies.append(packageBody) elif nodeKind == nodes.Iir_Kind.Package_Instantiation_Declaration: @@ -196,7 +222,7 @@ class Document(VHDLModel_Document): self.Contexts.append(context) elif nodeKind == nodes.Iir_Kind.Configuration_Declaration: - configuration = Configuration.parse(libraryUnit) + configuration = Configuration.parse(libraryUnit, contextItems) self.Configurations.append(configuration) elif nodeKind == nodes.Iir_Kind.Vunit_Declaration: -- cgit v1.2.3 From 597bc9928352ba187bdb0a707332a5f7a0a28e1a Mon Sep 17 00:00:00 2001 From: Patrick Lehmann Date: Mon, 16 Aug 2021 23:56:16 +0200 Subject: Handle context references. --- pyGHDL/dom/NonStandard.py | 3 +++ 1 file changed, 3 insertions(+) (limited to 'pyGHDL/dom/NonStandard.py') diff --git a/pyGHDL/dom/NonStandard.py b/pyGHDL/dom/NonStandard.py index b59efeacb..1cd98b4fa 100644 --- a/pyGHDL/dom/NonStandard.py +++ b/pyGHDL/dom/NonStandard.py @@ -74,6 +74,7 @@ from pyGHDL.dom.DesignUnit import ( PackageInstantiation, LibraryClause, UseClause, + ContextReference, ) from pyGHDL.dom.PSL import VerificationUnit, VerificationProperty, VerificationMode @@ -189,6 +190,8 @@ class Document(VHDLModel_Document): contextNames = [] elif itemKind is nodes.Iir_Kind.Use_Clause: contextItems.append(UseClause.parse(item)) + elif itemKind is nodes.Iir_Kind.Context_Reference: + contextItems.append(ContextReference.parse(item)) else: pos = Position.parse(item) raise DOMException( -- cgit v1.2.3