Sign in to follow this  
Tickstart

Preparation for an FPGA (VHDL) developer job interview

Recommended Posts

Posted (edited)

I have this really important job interview coming up, I feel very fortunate to have gotten this chance and I need to make the most of it. I don't know what to expect and, to be frank, I am a newbie when it comes to FPGA's and digital design. But I still have some experience, enough to know that I find this subject interesting and would like to pursue a career in it or its related fields. I've ordered a recent book that should arrive within a week or so, "Digital System Design with FPGA: Implementation Using Verilog and VHDL" which I hope will give me more insight into good practices and so on.

For all of you who have a lot of experience, what would you ask if you were hiring, and what would you like to hear? I'm not looking for a cheat sheet, but rather I'd like to know what's really important and what I should focus my attention to. (For instance, @D@n taught me to always keep my processes synchronized to the same clock) (@hamster also being very knowledgeable and helpful)

Edited by Tickstart

Share this post


Link to post
Share on other sites

@Tickstart,

All good questions.  I've avoided most of them by avoiding hiring so far, although I am considering putting my first development team together, and so I'm starting to wonder what questions I'd ask from the other side of the divide--if I chose to do so.

To be clear, I've been offered the opportunity to work with a group of unpaid interns, and to lead them through the process of creating an ASIC digital design.  This is not something I've done before, and ... I'm not (yet) sure I'm up to the challenge.  So, I'm just thinking this over.  If I did it, I think I'd be doing a *LOT* of teaching ...  That teaching would probably start out with a course on how to use formal methods to prove that a design works, how to test a design in simulation, and much more.

That said, here's what I think I might look for in a digital design engineer should I choose to put such a team together: a *proven* Verilog capability.  Sorry, VHDL designers--I wouldn't be looking for VHDL in my team.  I'd be intending to use open source tools (yosys), and open source ASIC support for VHDL is lacking.  By *proven*, I'd be looking for someone who has implemented a non-trivial design on hardware--the more complex the better.  I wouldn't look for someone who clicked here and clicked there to build a design, I'd want someone who actually has the ability to design.  I wouldn't really care too much about *how* it was done, just enough to know that it *was* done.  For example, did you do simulation?  Which tool did you use?  How did you simulate hardware components?  How did you go about finding bugs within your design?  What methods did you use?  What clock speed did you run at, with what hardware?  Did you ever struggle with failing to meet timing?  How did you solve that problem?  What FPGA board did you implement your design on?  How much of the resources on that board did you consume?  Did you ever struggle to get that design to fit?  If you were able to work on your design some more, what would you want to improve?  Bonus points would be if I could examine the design on github.

Among other things, I want to use these questions to weed out any designers who used Verilog to write software, or who were just placing the word "Verilog" on their resume without really having any background in using it.

I'd also be looking for someone who was *real*: a human with faults who is willing to acknowledge they've made a lot of mistakes that they've then learned from.  The last thing I would want on any team would be someone of substandard morality, and so I'd be using this criteria to try to weed that out as well.

I'm also going to be asking about any experience using Linux or git.  This might include, "How would you build a linux software package from source?", or "What is a git branch, and when would you use one?"  In this case, I don't care if the answer is right or wrong, but rather if the individual can answer--again proving that he or she has the ability they say they have.

Icing on the cake would be someone with all of the above experience who also had experience with computer science and specifically compilers, who was comfortable working in C++, who had experience with formal methods, digital signal processing,  or even just a plain mathematical background.  Being able to understand how to "prove" something is important when using formal methods and its a background that comes for free from a mathematician.  Finally, given that the opportunity I'd be working with is probably less than entry level, I think I'd be surprised to even get all of this.

Of course ... this assumes I accept the position.

Either way, these are just the thoughts I had off the top of my head.

Dan

Tickstart likes this

Share this post


Link to post
Share on other sites

Hi @Tickstart,

Since your question was not directly related one of the Digilent FPGA boards, I have moved it to a different section of the Forum to hopefully produce less confusion for other readers. As for my personal perspective, I'm in a bit of an odd spot since I have a degree in chemical engineering rather than EE/CS/CompE, yet here I am helping answer questions on all of those things, meaning I don't have a lot (i.e. any) formal education with HDL design. But like Dan hinted at, I'd like to make sure that the people to be hired can "engineer" their way through a problem, not just hope that a single approach works for everything.

Thanks,
JColvin

D@n and Tickstart like this

Share this post


Link to post
Share on other sites

@Tickstart

From my experience you will be asked questions to verify claims you put on your resume. Expect, for example, to be asked HDL syntacsis, implementation of I2C protocol, digital filters, etc. Expect also several people who might be your coworkers will talk with you to get the feel and to test your skills.

Everything depends on what is the company doing. Most of US companies don't train employees, they might pay for their classes but that's about all. If you are lucky and the company eager to higher you then they can give you time for training.

Once more from my experience companies hire people who can bring something the company doesn't have. Think about it and decide if you have something to offer, otherwise spend time on learning.

During the Internet boom one of my friends after reading a few software tutorials managed to be hired as a software developer. Needless to say he didn't last long and his experience was painful since he didn't have developer skills.

D@n and JColvin like this

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

Sign in to follow this