Edalize: An abstraction library for interfacing EDA tools
github.com
github.com
To all the FPGA vendors out there, I want/need/have to use your chips, I genuinely do not care about all the 20 thousand GUI-based idiosyncrasies you decide to add to your tooling every 3 months, in order to 'make my life easier'. Expose it through an API and document it fully (not partially).
VHDL-2008 standard was published in Jan 2009, more than _eleven_ years ago, still to this day, it is not fully supported on most tools. How can you look at customers with a straight face and reasonably think that you should continue to add more GUI-based abstraction layers (looking at Xilinx Vitis), instead of focusing on the basics first.
I sincerely hope that projects like Yosys, Symbiflow, GHDL, etc. continue to mature and grow. Equally important, I hope that vendors that support these projects (like Lattice) actually see a rise in market share because of opening up their hardware to open-source community toolchain.
edit: corrected publication date of VHDL-2008
I wonder how many of them read HN. Perhaps it would be better to send them a letter?
And perhaps these companies are making the "wrong" product simply because nobody ever tells them what they want.
End users have been complaining about all these "20 thousand GUI-based idiosyncrasies " forever, but they've nonetheless put up with them because at the end of the day you have to ship the damn thing.
There's been no shortage of outside players attempting to "disrupt" this market. However, most of these attempts have been comical failures. Instead of addressing problems that FPGA/hardware engineers have, lots of these attempts were focused on addressing the sort of problems that software engineers have when they try to do FPGA development. Not necessarily (but, in some cases, also) due to sheer superficiality, but also because they are problems that are a lot more accessible when coming from outside the field, without a foothold in the FPGA manufacturing/development space (i.e. when you're not building tools for FPGAs that you design, manufacture and sell).
So lots of these problems are very much WONTFIX: users have no meaningful alternatives, and fixing some of these things might actually even make it easier for alternatives to spring up (or at least for users to build various in-house tools that aren't so vendor-specific). Why would any FPGA vendor waste money on that?
Unfortunately it requires some creativity to support encrypted RTL in an open-source simulator, and both vendors require a way to supply simulation models without exposing source code. Doubly unfortunately, the open-source simulators are all language-specific and any attempts to bridge the gap have been only limited experiments. A brand-new simulator architecture seems necessary but has its oxygen starved by the rest of the ecosystem, open-source and commercial.
I am watching https://github.com/llvm/circt with interest but I don't think this is quite focused on simulators the way I think is necessary.
They only take fax
The tools suck and I'm glad people are trying to make them suck less... but nothing is going to change substantially until the community demands that the vendors do their part or force their hands.
In EDA, tooling stacks horizontally. At minimum, I need a simulator and a synthesizer, and both need to support the same features for those features to be useful. Every tool or layer I add to my EDA stack erodes the feature set I am able to use for all of them. Encrypted IP? VHDL-2008? SystemVerilog? Only with a commercial simulator. Now you have to start squabbling over licenses, which is the same problem except you've traded technical limitations for economic ones. (edit: and paid 6 figures for the privilege.)
All of this is a huge drag on productivity. It benefits only the big EDA incumbents (not even the FPGA manufacturers). If EDA tooling is going to improve, we need to change this dynamic. Until we do, adding layers to the tooling is a net loss except for a small sliver of the user community. (Typically the people who wrote it.)
VHDL manipulation is quite advanced, see SpinalHDL. But they are limited to spitting out a blob of VHDL you can put into your toolchain for your device.
I remember pyEDA (https://pyeda.readthedocs.io/) interfacing with SAT solvers and BDD libraries, as well as some logic minimizers. The (EDA) field is large and pyEDA was good for general logic constraint solving, though I never tried to verify hardware.
With the HDL-Focus it seems "hardware" is a specific target here. This is not very well explained. But maybe for someone who works with HDL on the regular, this is not a problem.
Where I work, we just use a bunch of Makefiles. We mostly just stick to a single vendor though.
This. The tools are expensive so we license one simulation tool and we build our world around it. At least where I work, there's no situation where we pay for multiple tools that do the same thing, it would be considered a waste of money to license multiple and I think I agree with that.
The same goes for the synthesis and backend tools. Driving these tools is difficult to get right so we stick with just one. There would have be a really, really really compelling reason to switch and it's yet to manifest. Sure, the tools have bugs but we report them and they do get fixed. It would have to be something quite special to make a switch interesting, even more special than synthesiable VHDL 2008!
I gathered as much. Again, the EDA-space is large. PyEDA was interfacing to severals SAT-Solvers, BDD-Libraries (even rolling their own if you didn't want dependencies), and logic minimizers.
This abstraction Layer here seems to mainly wrap EDA-tooling around HDL and therefore (I guess, since I am not a hardware guy) hardware verification tools. I would guess that those are basically the two ends of the EDA-spectrum, going from the very abstract of some First Order Boolean Formula Satisfiability problem to Actual Hardware Verification.
It's really annoying to debug silent errors in stuff like that.
https://en.m.wikipedia.org/wiki/Electronic_design_automation