I do fpga and asic design, and verification, for a living; with a little clojure mixed in.
I’ve seen a number of others here that do the same or similar. Hobbyists, pros, people that have picked it up by osmosis, what have you. Please join in!
I haven’t really thought this through beyond asking the question. So maybe this thread will be both the gauge of interest and also be the Q&A itself.
I have a lot of experience but in a narrow field, so I’ll answer what I can.
But I really hope other asic/fpga hackers will jump in. I have as much to learn as anyone.
Well, let’s see what happens.
> Open source projects die from diffusion. If there's not enough contributors concentrated in one place, code rots, bugs persist, and projects get abandoned. In contrast, where lots of traffic is concentrated in a relatively small bundle of code paths, the virtuous feedback loops kick in ... FPGA development has always been an industrial activity, dominated by brutalist, opaque, and proprietary tools. There are open source tools and communities, and I don't want to diminish their significant achievements, but there is simply no comparison between the ease of jumping into open source programming versus open source chip design. OSS needs FPGAs, and FPGAs need what programming had back in the 1980s: an on-ramp. A place where people can get up to speed in a friendly environment explicitly designed for that purpose.
There's an OSS FPGA workshop in March 2019 at DATE in Florence, https://date-conference.com/conference/workshop-w10
Aside from open source on-ramp efforts the FPGAs should be easily usable by software developers. So more software developers would work with FPGAs instead of the electrical engineers mostly without the knowledge and appreciation of a convenient software development environment. For example, most of the time I try to utilize Makefiles, git, continuous integration in my FPGA projects. Some of my former FPGA developer colleagues are electrical engineers which became FPGA developers later. These colleagues were just happy when they could draw something on the GUI, and did not pay any attention to the garbage of files generated by the CAD tool during commit at all.
An idea to make the FPGAs more tasteful is the Pynq platform [1] that I discovered last year. The platform can leverage FPGA acceleration in Python environment, and the different bitstreams are loaded on-demand (in an app fashion). I am planning to give workshops about this platform.
[1] http://www.pynq.io
I've made some effort in the past to put together materials for an "on ramp," but at the time Project IceStorm wasn't a thing. The best I could offer was just simulation. Not being able to build something physical doesn't generate much motivation.
Things are definitely different now, and I'm thinking about revisiting the topic. I need to survey what's out there already though.
I would also like to meet FPGA developers with the hacking and open source culture in mind.
Even I had the luck of being involved mostly in FPGA-related projects in my career, I also see the trend of using more standardized hardware platforms for embedded systems. This means that Linux-based systems are preferred over bare-metal solutions, which can decrease development time but in the same time increase fault and attack surface. What do you think?
Is it best to interface directly with the PCIe bus from the FPGA? Is it better to abstract with some kind of IC? Is the board or the computer the master clock? Is there some kind of encoding scheme that needs to be adhered to?
1- In terms of skills learned?
2- To increase her attractiveness in the job market?
I should make a list of topics from the absolute basics like binary arithmetic through more complex things like sequential logic and state machines.
The job aspect is more complicated for me. In the areas I've worked, a 4 year bachelors in CS, CE or EE is a prerequisite. Sometimes a masters degree as well, although that has varied over the years.
Startups are, I think, more likely to bring someone in based on their public work. I don't have startup experience so I'm not the right person to answer that beyond speculating.
If I were founding a startup and needed FPGA talent, I'd be open to interviewing someone that could demonstrate understanding of clock domains, synchronization schemes, state machine design, pipelining, AMBA. If you had demonstrated board design/prototyping, even better.
One of the projects I would have liked to have done in the past personally would be to make an effects processor for an electric guitar/bass. Really, even without any signal processing, this would be an impressive project. Making use of analog-to-digital converter(s), bringing in the data to the FPGA, having a place holder block that just passed the data through, and an interface piping data to a digital-to-analog converter would be a useful platform for demonstrating digital design understanding.
And really this could apply to any sort of "signal." Guitar just happens to be a place where digital logic and signal processing intersects nicely. Microphone and voice would work too.
You could really go nuts with this though, use it as a platform to learn about filtering, frequency shifting. You could make a harmonizer. Come up with your own auto-tune. It would be fun with immediate feedback.
I need to spend some time looking this over.