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) 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.5.0.tar.gz (26.3 kB view details)

Uploaded Source

Built Distribution

pyEDAA.ProjectModel-0.5.0-py3-none-any.whl (34.8 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: pyedaa_projectmodel-0.5.0.tar.gz
  • Upload date:
  • Size: 26.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.1 CPython/3.13.0

File hashes

Hashes for pyedaa_projectmodel-0.5.0.tar.gz
Algorithm Hash digest
SHA256 de339273da39013c5062d6f9d208528cd1b3553dbf80cd28640da868eb7cedc7
MD5 14cb15aab43bfa9905bdab03f9e08131
BLAKE2b-256 08811a66a9e063033fc7dc942a7064bd0ba5d6a694b8a8ecdf55533be485966b

See more details on using hashes here.

File details

Details for the file pyEDAA.ProjectModel-0.5.0-py3-none-any.whl.

File metadata

File hashes

Hashes for pyEDAA.ProjectModel-0.5.0-py3-none-any.whl
Algorithm Hash digest
SHA256 29a17ec4ff8266b27d9532f2ea7f6d162140ddd0df07dcbe03e74713d543e4cc
MD5 c9faedae8b5f6ccd69596e838de10633
BLAKE2b-256 cce25bb03144c63abd4f07409362c5b293c23cf467307749513c783f5458b017

See more details on using hashes here.

Supported by

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