fusesoc icon indicating copy to clipboard operation
fusesoc copied to clipboard

[Feature Request] Tool version check

Open armleo opened this issue 3 years ago • 4 comments

I thinks the FuseSoC should have a feature that checks the underlying tool's version.

For example, I need to use at least Yosys 0.10, but Ubuntu Repos contain Yosys 0.9, as a result, a lot of people install Yosys and get a compilation errors. It would be a nice feature to be able to specify the Yosys version required in the .core file.

armleo avatar Jun 11 '22 05:06 armleo

Thanks for this feature request.

While there is certainly value in having a "generic" and core-specific way to describe tool dependencies, there are some rather interesting challenges with it (e.g. how to get tool versions reliably, how to standardize on version comparision, etc.)

In the meantime, you can create your own solution as a pre_build hook. Have a look at this example:

  • https://github.com/lowRISC/opentitan/blob/master/check_tool_requirements.core
  • https://github.com/lowRISC/opentitan/blob/master/util/check_tool_requirements.py
  • https://github.com/lowRISC/opentitan/blob/d8ba072b3f239cb505c07cb058b97120d26d473f/hw/lint/common.core#L22-L24

imphil avatar Jun 15 '22 06:06 imphil

@imphil - The very fact it is hard to get tool versions easily makes it a perfect thing to be part of edalize!

mithro avatar Jun 15 '22 07:06 mithro

In the meantime, you can create your own solution as a pre_build hook.

As of right now its done by Makefile.

I had to use Makefiles anyway, because I wanted to run multiple targets in the parallel. Should I make a feature request for multiple targets running in parallel?

armleo avatar Jun 15 '22 08:06 armleo

It would make sense to have in Edalize, but at the same time, it's not trivial to spec out how it will be used. The computer that runs FuseSoC and the one that launches the EDA tools can very well be two different machines, and this is an intended use-case, so we need to defer the detection until it's actually supposed to run. And at that time, Edalize is not really used anymore, other than running a makefile.

We could look into adding it, but in the short term I agree that @imphil's way of adding it as a pre_build script is the way to go. I use similar scripts myself to first check if the license server is available and things like that

olofk avatar Nov 26 '22 00:11 olofk