Concepts not defined by VHDL
Some features required for a holistic language model are not defined in the VHDL LRM (IEEE Std. 1076). Other features are made explicitly implementation specific to the implementer. This chapter will cover these parts.
Design
The root element in the language model is a design made out of multiple
sourcecode files (documents). Sourcecode files are compiled into libraries. Thus
a design has the two child nodes: Libraries
and Documents
. Each is a list
.
Condensed definition of class Design
:
@export
class Design(ModelEntity):
# inherited from ModelEntity
@property
def Parent(self) -> ModelEntity:
# from Design
@property
def Libraries(self) -> Dict[str, Library]:
@property
def Documents(self) -> List[Document]:
def GetLibrary(self, libraryName: str) -> Library:
def AddDocument(self, document: Document, library: Library):
Library
A library contains multiple design units. Each design unit listed in a library
is a primary design unit like: Configuration
,
Entity
, Package
or
Context
.
Condensed definition of class Library
:
@export
class Library(ModelEntity):
# inherited from ModelEntity
@property
def Parent(self) -> ModelEntity:
# from Library
@property
def Contexts(self) -> List[Context]:
@property
def Configurations(self) -> List[Configuration]:
@property
def Entities(self) -> List[Entity]:
@property
def Packages(self) -> List[Package]:
Document
A source file (document) contains multiple design units. Each design unit
listed in a sourcecode file is a primary or secondary design unit like:
configuration
, entity
, architecture
, package
, package body
or context
.
Design unit may be preceded by a context made of library
, use
and
context
statements. These statements are not directly visible in the
Document
object, because design unit contexts are consumed by the design
units. See the Libraries
and Uses
fields of each design unit to
investigate the consumed contexts.
Condensed definition of class Document
:
@export
class Document(ModelEntity):
# inherited from ModelEntity
@property
def Parent(self) -> ModelEntity:
# from Document
@property
def Path(self) -> Path:
@property
def Contexts(self) -> List[Context]:
@property
def Configurations(self) -> List[Configuration]:
@property
def Entities(self) -> List[Entity]:
@property
def Architectures(self) -> List[Architecture]:
@property
def Packages(self) -> List[Package]:
@property
def PackageBodies(self) -> List[PackageBody]: