-
Notifications
You must be signed in to change notification settings - Fork 1
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Questions about the design and fileset in the project module #49
Comments
See Overall Hierarchy for an example.
In AMD Vivado you can have multiple parallel designs sharing some or almost all files (filesets) but using different top-levels. The project model is designs in a way, if no design is specified a default design is used as if there is no design level between project and file sets. The main idea is sharing files and filesets in e.g. generic VHDL designs. As an example I made one a design for Stratix II, Stratix IV, Stratix V, Virtex 5, Virtex 6, all 7-Series devices, where just the top-levels, 2 packages and the physical layer was exchanged, but all using 95% of same VHDL sources.
No, designs are flat and the next level below a project. Filesets can have sub-filesets and sub-filesets can be referenced by multiple parent-filesets.
A design has a reference to the top-level, so e.g. for VHDL
A fileset can be an IP core, library (OSVVM, PoC, ...) or subsystem in a bigger design. E.g. an XCI (Xilinx IP Core Instance) references multiple VHDL or Verilog source files. Thus, filesets can have a relative or absolute path identifying the location of listed files or futher filesets. An XCI can reference other XCIs.
Until now, a workflow is not implemented. This is not the goal of ProjectModel, but it's covered by the whole EDA² stack. Have a look here: https://edaa-org.github.io/ I also worked already on layers:
|
So if I understand you correctly a file set is a reusable collection of source files. That could be as big as a complete design to as small as a simple clock domain crossing, a package, a library, IP, VIP, etc. |
Yes 😃 |
For completeness, in relation to 8 and 9, see:
Note that the diagram was done before creating EDAA. So, the See also:
OSVDE is based on pyVHDLmodel and pyGHDL. Note that both Hardware Studio and OSVDE are just proofs of concept, an horizon to drive the development of all these utility projects. There is also https://umarcor.github.io/osvb/apis/project/DocGen.html, related to Sphinx. I believe that @Paebbels did several improvements in that regard in the last year, so that's probably superseeded by https://github.com/VHDL/VHDLDomain, but I did not have time to update OSVB docs accordingly. |
There is also:
fpga-topwrap is written in Python and it currently uses hdlConvertor (https://github.com/antmicro/fpga-topwrap/blob/main/requirements.txt#L9). It might be adapted to use pyEDAA instead. |
Thank you for the information, that was a lot to go through. There are a lot of good ideas. I don't know what the main goal is. I would like a universal HDL development framework. I think the idea behind the Edealize project provides a key component for that, but the EDAM data structure is too simple. It would be better to replace that with a generic project model (like this project), to enable a generic experience at the tool layer. A generic project model would also enable companies to write their own project specification parser and quickly migrate their existing code base to a universal HDL developing framework. |
@RasmusGOlsen, that's precisely the main goal of EDAA and particularly ProjectModel. That's why it's organised into "abstraction" layers, which can be used all together, but it also allows to only use some of them. See https://umarcor.github.io/osvb/apis/core.html and https://umarcor.github.io/osvb/apis/tool.html. That was written before we created EDAA. Then, https://edaa-org.github.io/Context.html. Edalize is one of the many projects that might provide "workflows" based on EDAA: https://edaa-org.github.io/workflows/index.html. It could use layers 0, 1 and 2 of EDAA, but use different layers for 3 (edalize) and 7 (fusesoc). To be more specific, for instance, https://github.com/olofk/edalize/blob/main/scripts/el_docker might use https://github.com/edaa-org/pyEDAA.CLITool/blob/main/pyEDAA/CLITool/Docker.py. Or, there might be a See also What problem(s) is EDA² going to solve?, What is EDA² not trying to solve? and What is the target audience of EDA²?. |
There are 2 parts to it:
We too :)
Edalize and FuseSoC are too simple. It doesn't reflect what's needed. The data structures are a mess and the code base is even worse... |
@Paebbels if you think I can contribute to the project I would like to help. I definitely got some inspiration and ideas reading though the information provided here. |
Your questions and answers demonstrate to me, you're thinking in the same direction like me and @umarcor :). We can organize a Zoom meeting and see what your ideas and goals are and how it could fit to the EDA² idea or if it's something we didn't cover yet. We're open for more man-power independent if it's new formats, adapters, test cases, documentation, examples or even a new (sub-)layer :). You can also find me on Gitter as |
Sure we can arrange a meeting. |
I'm still not sure how to use the It seems that a |
The property VHDL library is looked up recursively from bottom to top. It can be defined on a file level, if not found it's looked up on fileset level. If filesets are nested, it goes upwards the chain of nested filesets. If still not found, it looks at design-level and then finally project-level. The default lookup order is defined in the Attribute class, thus it can be overwritten by a derived attribute. A VHDL library association is a property to VHDL files (see VHDLSourceFile), so it's defined here https://github.com/edaa-org/pyEDAA.ProjectModel/blob/main/pyEDAA/ProjectModel/__init__.py?ts=2#L366 Verilog files are not part VHDL libraries. As far as I know, Verilog has no grouping / namespace mechanism, right? Verilog modules are referenced in VHDL by components as a stub definition (dummy interface of a black-box), which is later bound in elaboration phase to a Verilog module. This technique is used for mixed-language designs. It works also for AHDL, (EDIF) netlists, design check points (netlists in a zip file), ... What tool compiles Verilog sources into VHDL libraries? |
I like the idea of an abstract project model. I have difficulties understanding the concept of how designs and file sets are to be used in the project model and what the difference between a design and a file set is.
The text was updated successfully, but these errors were encountered: