<p>This is a broad topic and I'd appreciate any insights.
I'm at a crossroads where I have to decide (well, more or less, I can do both to some capacity) whether I want to go into a more Computer Engineering related field of programmable systems (embedded, fpga, etc), vs. a more EE field of actually designing integrated circuits (ASIC and so forth).</p>
<p>The problem is, I don't really know anything about either of these areas!
Can anyone who has worked in either field or taken some classes related to these things answer any pertinent questions including:</p>
<p>a. In which area is there a larger market for specialists?
b. How do the salaries differ?
c. More importantly, how are these fields different for the typical engineer? What kind of challenges are involved in either field? How are they different from the perspective of an engineer? How will I know, with only a handful of EE and CS classes under my belt, which one i'm likely to enjoy more in the future and should pursue (ie you like programming, go for A, you like studying digital logic, go for b? Of course it goes without saying that I could take some classes in either area and decide which one I like best, but still i'd appreciate any info.</p>
<p>Thanks!</p>
<p>The two types of job (FPGA vs ASIC) are very similar in many ways. The high level skill set that’s required is very similar and there is a lot of overlapped. One can usually jump from one to the next with some learning curve, basically you need to learn new tools and methodologies. As an undergraduate student, you need to basically take the same kinds of courses. I don’t think there is really a lot of differentiaion you can do in school. Most of the specialized skill that is needed, you will learn on the job. In FPGA, you will learn to compile and route the HDL on a set of tools given by the FPGA vendor or a commercialized tools. In ASIC, there is a lot more involved because there is no fixed placement and routing of circuit, but in the end, you basically use a more elaborated set of tools to compile, place and route the design. Usually in ASIC, since it is a bigger undertaking, you are assigned to a particular task in the process.</p>
<p>So:</p>
<p>a. I am not sure. My sense is that there are plenty of jobs in either field. There are a lot less number of ASIC designs but each ASIC chip requires a lot more engineers. FPGA is very easy and fast to get started, it does not require a lot of engineers. I know a lot of engineers that were ASIC designers and now work on FPGA and vice versa.
b. It is not clear that there is a salary difference. One should focus on being good at whatever they are doing and salary will take care of itself.
c. In embedded FPGA system, an engineer has more visibility to the whole process. The design task is simplified because in FPGA, circuits are predefined so there is a lot less to do to get the chip working. So engineers tend to be more hands on with the system, board, software, and final solution
that they are providing. A lot of ASIC engineer hardly ever touch the chip or the boards that they design. It is all done in software and the tools with a very large design team with individuals responsible for some small part of the design.</p>
<p>Thanks for your insights. A few more questions:
a. I know coursework is the key here, but are FPGA people generally EE’s or Comp. E’s?
b. Is FPGA development basically programming? How much “ee-stuff” is there, as opposed to computer-science? How would an FPGA-embedded engineer’s job differ from that of a software engineer?
c. Who is it who actually makes the board on which the FPGA runs? Is there a subfield of electrical engineering which deals with that? Anything I should know about it?</p>
<p>I really really appreciate your advice.</p>
<p>a. I keep saying it does not matter whether you are EE or CE. I know it is hard for you to look beyond that when you are deciding which major you should have on your degree. When we look for a new grad, we look at their course work, projects and any relavant experience, at least for me it does not matter whether you are EE or CE.
b. No, not exactly. Some activities require programming skill like scriptings to automate processing of information. It is like when you use MS Excel, you are not necessary programming but sometimes it require computer skill and know how to get it to work on complicated problem.
c. I believe board design is not such a big job anymore. Most of the hard part and intellectual property is in these complexed chips that go on the boards. Board design is quite easy compared to the designing of these large chips. Also the making of these boards are usually subcontracted out to companies overseas, as in China and Asia. A lot of issues on board design are just basic EE problems like EM interference, power dissipations, signal crosstalks, shieldings, high speed signal transmission (wave guide), etc… Besides learning the software tools to design and simulate the board, a lot of issues are just normal EE issues that you would learn in various courses.</p>