Skip to main content

An abstract model of EDA tool projects.

Project description

Sourcecode on GitHub Sourcecode License Documentation Documentation License Gitter
PyPI PyPI - Status PyPI - Python Version
GitHub Workflow - Build and Test Status Libraries.io status for latest release Codacy - Quality Codacy - Coverage Codecov - Branch Coverage

Main Goals

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.

Data Model

  1. The toplevel element is a Project, which contains one or multiple designs.
  2. A Design is a variant of a project and contains filesets.
  3. A FileSet contains files or further sub-filesets.
  4. A File represents a single file. E.g. source files, configuration files, constraint files.
  5. A VHDLLibrary represents a group of VHDLSourceFiles being compiled into the same VHDL library.

img.png

Features

  • Construct a project model:

    • top-down (project → design → fileset → file) or
    • bottom-up (file → fileset → design → project) or
    • parsing a project file.
  • 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.

    • User-defined attributes are resolved bottom-up.

Project File Readers

OSVVM *.pro File Reader

ProjectModel can read *.pro files and extract source files. Included *.pro files are represented as sub-filesets.

Xilinx Vivado *.xpr Reader

ProjectModel can read *.xpr files and extract source, constraint and simulation files while preserving the fileset structure.

Use Cases

  • Reading OSVVM's *.pro files.
  • Reading Xilinx Vivado's *.xpr files.

Examples

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}")

Consumers

This layer is used by:

  • 🚧 pyEDAA.Workflow

References

Contributors

License

This Python package (source code) is 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

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

pyedaa_projectmodel-0.6.3.tar.gz (27.0 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

pyedaa_projectmodel-0.6.3-py3-none-any.whl (35.3 kB view details)

Uploaded Python 3

File details

Details for the file pyedaa_projectmodel-0.6.3.tar.gz.

File metadata

  • Download URL: pyedaa_projectmodel-0.6.3.tar.gz
  • Upload date:
  • Size: 27.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.14.6

File hashes

Hashes for pyedaa_projectmodel-0.6.3.tar.gz
Algorithm Hash digest
SHA256 3620455be4257862ce0eb689c6dacb19371f4c15a84a1101d6e4bd999ae065f9
MD5 b4527e152d5eff0f5be4d3d872dc4a1a
BLAKE2b-256 2142d12765a287693501fe63284055f3ab574818a80301bb6af948c668a14876

See more details on using hashes here.

File details

Details for the file pyedaa_projectmodel-0.6.3-py3-none-any.whl.

File metadata

File hashes

Hashes for pyedaa_projectmodel-0.6.3-py3-none-any.whl
Algorithm Hash digest
SHA256 14252d43bb39446d8e6bb7274767093b4414ea5e2a5e7335df3e8ca095eec80f
MD5 aff3de35d60fee1a27a57b7be796bc73
BLAKE2b-256 59c927c49cbbe94f3eaee64f43e7537ea8a9364e12cd50b3f9fae6d7ebf5fb76

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page