1212![ PyPI - Python Version] ( https://img.shields.io/pypi/pyversions/pyEDAA.ProjectModel?longCache=true&style=flat-square&logo=PyPI&logoColor=FBE072 )
1313[ ![ GitHub Workflow - Build and Test Status] ( https://img.shields.io/github/workflow/status/edaa-org/pyEDAA.ProjectModel/Pipeline/main?longCache=true&style=flat-square&label=Build%20and%20test&logo=GitHub%20Actions&logoColor=FFFFFF )] ( https://GitHub.com/edaa-org/pyEDAA.ProjectModel/actions/workflows/Pipeline.yml )
1414[ ![ Libraries.io status for latest release] ( https://img.shields.io/librariesio/release/pypi/pyEDAA.ProjectModel?longCache=true&style=flat-square&logo=Libraries.io&logoColor=fff )] ( https://libraries.io/github/edaa-org/pyEDAA.ProjectModel )
15- [ ![ Codacy - Quality] ( https://img.shields.io/codacy/grade/c2635df20fa840bc85639ca2fa1d9cb4?longCache=true&style=flat-square&logo=Codacy )] ( https://www.codacy.com/manual /edaa-org/pyEDAA.ProjectModel )
16- [ ![ Codacy - Coverage] ( https://img.shields.io/codacy/coverage/c2635df20fa840bc85639ca2fa1d9cb4?longCache=true&style=flat-square&logo=Codacy )] ( https://www.codacy.com/manual /edaa-org/pyEDAA.ProjectModel )
15+ [ ![ Codacy - Quality] ( https://img.shields.io/codacy/grade/c2635df20fa840bc85639ca2fa1d9cb4?longCache=true&style=flat-square&logo=Codacy )] ( https://www.codacy.com/gh /edaa-org/pyEDAA.ProjectModel )
16+ [ ![ Codacy - Coverage] ( https://img.shields.io/codacy/coverage/c2635df20fa840bc85639ca2fa1d9cb4?longCache=true&style=flat-square&logo=Codacy )] ( https://www.codacy.com/gh /edaa-org/pyEDAA.ProjectModel )
1717[ ![ Codecov - Branch Coverage] ( https://img.shields.io/codecov/c/github/edaa-org/pyEDAA.ProjectModel?longCache=true&style=flat-square&logo=Codecov )] ( https://codecov.io/gh/edaa-org/pyEDAA.ProjectModel )
1818
1919<!--
@@ -31,7 +31,7 @@ a concrete project model for their tools.
3131Frameworks consuming this model can build higher level features and services on top of
3232such a model, while supporting multiple input sources.
3333
34- ## Data Model
34+ # Data Model
3535
36361 . The toplevel element is a ` Project ` , which contains one or multiple designs.
37372 . A ` Design ` is a variant of a project and contains filesets.
@@ -41,37 +41,39 @@ such a model, while supporting multiple input sources.
4141
4242![ img.png] ( doc/datamodel.png )
4343
44- ## Features
44+ # Features
4545
4646* Construct a project model:
4747 * top-down (project &rarr ; design &rarr ; fileset &rarr ; file) or
4848 * bottom-up (file &rarr ; fileset &rarr ; design &rarr ; project) or
4949 * parsing a project file.
50+
5051* Designs, filesets and files can use absolute or relative paths.
5152 * ` ResolvedPath ` returns the resolved absolute path to an object.
53+
5254* Projects, designs, filesets and files can be validated (e.g. if the path exists).
55+
5356* Projects, designs, filesets and files can have user-defined attributes.
5457 * User-defined attributes are resolved bottom-up.
5558
59+ # Project File Readers
5660
57- ## Project File Readers
58-
59- ### OSVVM ` *.pro ` File Reader
61+ ## OSVVM ` *.pro ` File Reader
6062
6163ProjectModel can read ` *.pro ` files and extract source files. Included ` *.pro ` files
6264are represented as sub-filesets.
6365
64- ### Xilinx Vivado ` *.xpr ` Reader
66+ ## Xilinx Vivado ` *.xpr ` Reader
6567
6668ProjectModel can read ` *.xpr ` files and extract source, constraint and simulation
6769files while preserving the fileset structure.
6870
69- ## Use Cases
71+ # Use Cases
72+
7073* Reading OSVVM's ` *.pro ` files.
7174* Reading Xilinx Vivado's ` *.xpr ` files.
7275
73-
74- ## Examples
76+ # Examples
7577
7678``` python
7779from pathlib import Path
@@ -96,28 +98,25 @@ for file in designA.Files(fileType=VHDLSourceFile):
9698 print (f " { file .Path} " )
9799```
98100
99-
100101# References
101102
102- - [ Paebbels/pyIPCMI: pyIPCMI/Base/Project.py] ( https://GitHub.com/Paebbels/pyIPCMI/blob/master/pyIPCMI/Base/Project.py )
103- - [ VUnit/vunit: vunit/project.py] ( https://GitHub.com/VUnit/vunit/blob/master/vunit/project.py )
104- - [ PyFPGA/pyfpga: fpga/project.py] ( https://GitHub.com/PyFPGA/pyfpga/blob/main/fpga/project.py )
105- - [ olofk/fusesoc: fusesoc/capi2/core.py] ( https://GitHub.com/olofk/fusesoc/blob/master/fusesoc/capi2/core.py )
106- - [ XedaHQ/xeda: xeda/flows/flow.py] ( https://GitHub.com/XedaHQ/xeda/blob/master/xeda/flows/flow.py )
107- - [ tsfpga/tsfpga: tsfpga/build_project_list.py] ( https://gitlab.com/tsfpga/tsfpga/-/blob/master/tsfpga/build_project_list.py )
108- - [ hdl-make: hdlmake/] ( https://ohwr.org/project/hdl-make/tree/master/hdlmake )
109- - [ OSVVM/OSVVM-Scripts: OsvvmProjectScripts.tcl] ( https://GitHub.com/OSVVM/OSVVM-Scripts/blob/master/OsvvmProjectScripts.tcl )
103+ * [ Paebbels/pyIPCMI: pyIPCMI/Base/Project.py] ( https://GitHub.com/Paebbels/pyIPCMI/blob/master/pyIPCMI/Base/Project.py )
104+ * [ VUnit/vunit: vunit/project.py] ( https://GitHub.com/VUnit/vunit/blob/master/vunit/project.py )
105+ * [ PyFPGA/pyfpga: fpga/project.py] ( https://GitHub.com/PyFPGA/pyfpga/blob/main/fpga/project.py )
106+ * [ olofk/fusesoc: fusesoc/capi2/core.py] ( https://GitHub.com/olofk/fusesoc/blob/master/fusesoc/capi2/core.py )
107+ * [ XedaHQ/xeda: xeda/flows/flow.py] ( https://GitHub.com/XedaHQ/xeda/blob/master/xeda/flows/flow.py )
108+ * [ tsfpga/tsfpga: tsfpga/build_project_list.py] ( https://gitlab.com/tsfpga/tsfpga/-/blob/master/tsfpga/build_project_list.py )
109+ * [ hdl-make: hdlmake/] ( https://ohwr.org/project/hdl-make/tree/master/hdlmake )
110+ * [ OSVVM/OSVVM-Scripts: OsvvmProjectScripts.tcl] ( https://GitHub.com/OSVVM/OSVVM-Scripts/blob/master/OsvvmProjectScripts.tcl )
110111
112+ # Contributors
111113
112-
113- ## Contributors
114114* [ Patrick Lehmann] ( https://GitHub.com/Paebbels ) (Maintainer)
115115* [ Unai Martinez-Corral] ( https://GitHub.com/umarcor )
116116* [ Stefan Unrein] ( https://GitHub.com/stefanunrein )
117117* [ and more...] ( https://GitHub.com/edaa-org/pyEDAA.ProjectModel/graphs/contributors )
118118
119-
120- ## License
119+ # License
121120
122121This Python package (source code) licensed under [ Apache License 2.0] ( LICENSE.md ) .
123122The accompanying documentation is licensed under [ Creative Commons - Attribution 4.0 (CC-BY 4.0)] ( doc/Doc-License.rst ) .
0 commit comments