Design
Generic description of an EDA design.
Todo
Write documentation.
Class Relationship
        graph TD;
  Project --> Design;
  Design  --> VHDLLibrary;
  Design  --> FileSet;
  VHDLLibrary --> File;
  FileSet --> File
  style Design fill:#ee9b00
    Condensed definition of class Design
@export
class Design:
  _name:                  str
  _project:               Nullable['Project']
  _directory:             Nullable[Path]
  _fileSets:              Dict[str, FileSet]
  _defaultFileSet:        Nullable[FileSet]
  _vhdlLibraries:         Dict[str, VHDLLibrary]
  _vhdlVersion:           VHDLVersion
  _verilogVersion:        VerilogVersion
  _svVersion:             SystemVerilogVersion
  _externalVHDLLibraries: List
  def __init__(
    self,
    name: str,
    directory: Path = Path("."),
    project: 'Project' = None,
    vhdlVersion: VHDLVersion = None,
    verilogVersion: VerilogVersion = None,
    svVersion: SystemVerilogVersion = None
  ):
  @property
  def Name(self) -> str:
  @property
  def Project(self) -> Nullable['Project']:
  @Project.setter
  def Project(self, value: 'Project') -> None:
  @property
  def Directory(self) -> Path:
  @Directory.setter
  def Directory(self, value: Path) -> None:
  @property
  def ResolvedPath(self) -> Path:
  @property
  def DefaultFileSet(self) -> FileSet:
  @DefaultFileSet.setter
  def DefaultFileSet(self, value: Union[str, FileSet]) -> None:
  @property
  def FileSets(self) -> Dict[str, FileSet]:
  def Files(self, fileType: FileType = FileTypes.Any, fileSet: Union[str, FileSet] = None) -> Generator[File, None, None]:
  @property
  def VHDLLibraries(self) -> List[VHDLLibrary]:
  @property
  def VHDLVersion(self) -> VHDLVersion:
  @VHDLVersion.setter
  def VHDLVersion(self, value: VHDLVersion) -> None:
  @property
  def VerilogVersion(self) -> VerilogVersion:
  @VerilogVersion.setter
  def VerilogVersion(self, value: VerilogVersion) -> None:
  @property
  def SVVersion(self) -> SystemVerilogVersion:
  @SVVersion.setter
  def SVVersion(self, value: SystemVerilogVersion) -> None:
  @property
  def ExternalVHDLLibraries(self) -> List:
  def AddFileSet(self, fileSet: FileSet) -> None:
  def AddFileSets(self, fileSets: Iterable[FileSet]) -> None:
  def AddFile(self, file: File) -> None:
  def AddFiles(self, files: Iterable[File]) -> None: