-
Notifications
You must be signed in to change notification settings - Fork 263
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
Add dependency scanning of configurations #46
Comments
Could you provide some more details such as command line output? run.py contents? |
Also which commit on the master branch are you using? |
I'm using release 0.14.0 |
Could you try 0.15.0 which I just added. |
When I have access to the code next week, I will follow your instructions |
I have made some progress on this. |
The dependency scanner does not yet support configurations. If you post examples spanning your different usage of configurations I can add support for it. |
I cannot easily post specific examples, but all forms of configuration are used in my code, namely:
I hope that helps |
An alternative approach would be for VUnit running a --clean build to have an additional option to create a compile order based on the order of library additions. I currently perform clean builds on a Jenkins box and am retro-fitting VUnit to unit tests based on .do scripts with a complete and ordered set of vcom/vlib/vmap statements. Allowing VUnit to mimic this would be a great feature and would mean that dependency scanning issues are not relevant. |
@imd1 I will prioritize adding support for configurations. A second feature request issue candidate would be to allow the user to manually specify dependencies. Having support for configurations would make that unnecessary though. Would you still need support for manual compile order if the dependency scanner had support for configurations? A manual compile order as you suggest does not work as well with incremental compilation as having manual dependencies would. With a manual compile order VUnit's best shot at incremental compilation would be to re-compile every file in the list below the highest file that changed which would cause a lot of unnecessary re-compilation. |
My compile order suggestion was an alternative to configuration scanning - happy if only the scanner is upgraded. Agree with your comments. |
@imd1 I have added support for scanning "configuration declarations" and "block configurations": configuration declarations -- Injects dependency between 'cfg' and entity 'ent'
-- as well as all architectures of 'ent'.
configuration cfg of ent is
...
end configuration; block configurations: -- Injects dependency on this file with lib.ent
for foo : bar use entity lib.ent
-- Injects dependency on this file with lib.ent and lib.ent.a
-- (.a needed by GHDL)
for foo : bar use entity lib.ent(a)
-- Injects dependency on this file with lib.cfg
for foo : bar use configuration lib.cfg Could you try it and report back? I will wait on closing this issue until you report sucess. |
Thank you for the prompt response. Just to clarify, do you think the upgrade will support more complicated combinations, for example?: --injects dependency between cfg with lib.ent (all architectures) AND lib.ent2 |
@imd1 yes it will handle that case as well. |
Is there a new release to try? |
Just use the latest master to try it. I make a release after you verified it works. |
@imd1 did the dependency scanner update solve your problem? |
I've just completed Jenkins soak testing on the 3 modules I've chosen to prototype VUnit with, and they always pass unit tests, both individually and as a group, so I'm happy I have a number of other modules waiting for a VUnit upgrade that use configurations more extensively, but it will take time to do this, so I suggest closing this issue and creating a new release |
I just created a new release including this |
When I use the python script method for a VHDL testbench, sometimes it compiles, sometimes it errors, both starting from the same clean and identical directory conditions!
Any clues why?
The text was updated successfully, but these errors were encountered: