Comments (11)
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.
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.
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:
- 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
- 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.
@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.
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.
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.
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.
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.
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.
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.
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)
- [feature] use shtab
- [feature] format code
- [feature] create a .gitignore in .hdl_checker
- [BUG] vscode-plugin: hdl_checker-script.py is being executed after vscode-close -> overloads CPU HOT 1
- [feature] Include modelsim's vsim for linter
- not support Python 3.12
- No module named 'six' on attempted launch HOT 2
- Add support for .f file lists HOT 1
- [Question] Managing component dependencies and more HOT 1
- [Question] LSP hover information and dependencies navigation functionalities HOT 1
- pygls.features no longer exists HOT 2
- Error on Ubuntu 16.04 with Python 3.5 HOT 1
- New Files not being added to the Project
- Verilog/System Verilog support in Emacs lsp-mode HOT 2
- Empty Range for Diagnostics HOT 5
- NeoVim Native LSP Configuration errors HOT 2
- [Doc] Use pip3 instead of pip in instructions HOT 1
- No compiler flags applied even though hdl_checker.config exists
- hdl_checker appears as not running HOT 1
- Remove typing dependency
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
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.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from hdl_checker.