This package provides a unified abstract project model for HDL designs and EDA tools. Third-party frameworks can derive own classes and implement additional logic to create a concrete project model for their tools.
Frameworks consuming this model can build higher level features and services on top of such a model, while supporting multiple input sources.
Project
, which contains one or multiple designs.Design
is a variant of a project and contains filesets.FileSet
contains files or further sub-filesets.File
represents a single file. E.g. source files, configuration files, constraint files.VHDLLibrary
represents a group of VHDLSourceFile
s being compiled into the same VHDL library.Construct a project model:
Designs, filesets and files can use absolute or relative paths.
ResolvedPath
returns the resolved absolute path to an object.Projects, designs, filesets and files can be validated (e.g. if the path exists).
Projects, designs, filesets and files can have user-defined attributes.
*.pro
File ReaderProjectModel can read *.pro
files and extract source files. Included *.pro
files
are represented as sub-filesets.
*.xpr
ReaderProjectModel can read *.xpr
files and extract source, constraint and simulation
files while preserving the fileset structure.
*.pro
files.*.xpr
files.from pathlib import Path
from pyEDAA.ProjectModel import Project, Design, FileSet, VHDLSourceFile
print(f"Current working directory: {Path.cwd()}")
projectDirectory = Path.cwd() / "../project"
print(f"Project directory: {projectDirectory!s} - {projectDirectory.exists()}")
project = Project("myProject", rootDirectory=projectDirectory)
designA = Design("designA", project=project, directory=Path("designA"))
designAFileset = FileSet("srcA", design=designA)
for vhdlFilePath in designAFileset.ResolvedPath.glob("*.vhdl"):
designAFileset.AddFile(VHDLSourceFile(vhdlFilePath))
libFileset = FileSet("lib", Path("../lib"), design=designA)
for vhdlFilePath in libFileset.ResolvedPath.glob("*.vhdl"):
libFileset.AddFile(VHDLSourceFile(vhdlFilePath))
print(f"All VHDL files in {designA.Name}:")
for file in designA.Files(fileType=VHDLSourceFile):
print(f" {file.Path}")
This layer is used by:
This Python package (source code) licensed under Apache License 2.0.
The accompanying documentation is licensed under Creative Commons - Attribution 4.0 (CC-BY 4.0).
SPDX-License-Identifier: Apache-2.0