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]: