Giter Site home page Giter Site logo

Maintaining project file about hdl_checker HOT 11 CLOSED

m-kru avatar m-kru commented on May 26, 2024
Maintaining project file

from hdl_checker.

Comments (11)

suoto avatar suoto commented on May 26, 2024

Hey, thanks for the words :)

So, fully agree that maintaining a separate file is a hassle... Lately I was using this Python script to regenerate the project file but that's a workaround really.

Maybe supporting vendor's formats (and assuming sensible defaults) is the way to go. The list of files is probably easy to extract from Vivado's/ISE/Quartus project files, just need a way to add specific stuff as well (for example, I set VHDL 93 for things that will be synthesized and VHDL 2008 for testbenches).

from hdl_checker.

m-kru avatar m-kru commented on May 26, 2024

Extracting the list of files from Vivado's/ISE/Quartus project files is one potential solution.
For me, the drawback of this idea is that I often work in non-project mode and I use vextproj to easily recreate the project.

I wonder if it wouldn't be better to create some common format that would describe FPGA project file structure/hierarchy. Then we would need scripts for translating this to different tools, but there would be only one structure defining the project. What do you think @suoto ?

from hdl_checker.

suoto avatar suoto commented on May 26, 2024

I think there might be some projects out there that try to be this entry point for multiple EDA vendor tools, have a look at https://github.com/olofk/fusesoc (I just read the README, haven't tried just yet...).

Currently, updating the files/flags database is triggered by changing the project file, but maybe hdlcc could have a way to make it easier to maintain. I can think of 2 ways for this to work:

I can think of 2 ways for this to work:

  1. Provide an API in Vim or Python for the user to define the project. It would be basically an add file/flag method but it could also have a callback for hdlcc to check if a refresh is needed. Downside is the user would need to actually code this
  2. Add support for wildcards in the project file, so that the user only needs to specify some paths and hdlcc would then run that regularly and trigger recompiling stuff if things have changed

Does this sounds reasonable in you workflow @m-kru?

from hdl_checker.

m-kru avatar m-kru commented on May 26, 2024

@suoto I have also discovered FuseSoC recently but I haven't tried it yet.
I was thinking about API in Python. There are already a lot of tools for HDL development in Python and it is just easier to work when you use the same language for different tools.

from hdl_checker.

abyszuk avatar abyszuk commented on May 26, 2024

I've written a small tool which can be used to extract list of files from Vivado project.
https://github.com/abyszuk/XPR-converter
I hope it will be useful to someone :-)

from hdl_checker.

suoto avatar suoto commented on May 26, 2024

I'm working on a command to vim-hdl to create/update the project file. The idea is the user runs VimhdlCreateProjectFile to create the project file and review the file afterwards.

I'll separate the core stuff in a base class, so implementations only need to add sources and all the base class then takes care of translating that into a proper project file.

The only implementation I'm working for now just finds sources and include paths on the directories passed as argument (i.e., :VimhdlCreateProjectFile ./project/src ./project/test). Depending on how this works, it shouldn't be too hard to add implementations that parse Vivado, Quartus, etc.

from hdl_checker.

suoto avatar suoto commented on May 26, 2024

Going to try to implement an auto discovery method that parses sources and tries to work out the project's layout.

The config file will still exist to sort out ambiguities and to set build flags, but ideally for small and maybe mid size projects a config file won't be needed at all.

from hdl_checker.

rdburns avatar rdburns commented on May 26, 2024

I am also interested in a common description of source files in a project, in my case originally to unify the sources between Questa sims and non-project Vivado. But I am also interested in my editor (at the moment spacemacs, but with LSP, hopefully anything) understanding the same files.

I looked into cmake and meson a bit for this purpose, since apparently cmake already has a facility to write visual studio solution files, or run as a server. I don't fully understand all that. Using either of those would require adding custom builders. This project basically does this for cmake but I have not tried it: https://github.com/tymonx/logic

from hdl_checker.

suoto avatar suoto commented on May 26, 2024

Yeah, that's a question with no good answer imo. Each tool (including this one) uses a different config method. I think HDL Checker is pretty usable as is, one can use it without a config file if t he project allows or use an incomplete one, listing only files, or listing files and defining libraries for some or using one with all the info.

from hdl_checker.

suoto avatar suoto commented on May 26, 2024

Would be possible to support project files from Vivado, Quartus, etc, although integrating that on the testing pipeline needs a bit of thought

from hdl_checker.

suoto avatar suoto commented on May 26, 2024

Going to close this for now as the auto discovery of files and libraries seems to be working well enough. If there's any specific questions/issues feel free to open a new issue 👍

from hdl_checker.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.