Skills a Reconfigurable Computing Engineer Requires

These aren’t all skills I claim to possess, but skills I aspire to possess. It’s a description of well-rounded reconfigurable computing engineer.

  • Digital Circuit Design
    • You should have an understanding of boolean logic (AND,OR, XOR gates etc.) and synchronous electronic elements, such as D-type registers. You should understand the concept of pipelining, and how to construct arithmetic units. Understand the concept of a clock cycle.
  • Knowledge of a hardware design language
    • Learn a language like VHDL or Verilog, to allow you to design your digital circuits for implementation on an FPGA.
  • Learn about FPGA architecture
    • Find out about the structure of the FPGA you use, e.g. Xilinx or Altera. How many logic elements do the different FPGAs have? What features do the logic elements have? How many inputs to a LUT? What are the carry chains like? How many memory blocks does it have, and what are the different ways you can configure them? Understand the concept of hard IP blocks and find out the features that your FPGA supports. Learn how different digital circuits map to the device.
  • Understand your FPGA tools
    • Tools such as Xilinx’s ISE have various stages to them. Designs are logically synthesised before being mapped to the FPGA device, placed and routed. To really get the most out of your FPGA, you need to know the tools you are using, and all the configuration options.
  • Be a fully-fledged software engineer
    • No-one said this was going to be easy. You need to know software engineering and computer science concepts as well as anyone. You need to know object-oriented design and just about every commonly used programming language. You’re going to be working with a customer’s code, so you need to be able to understand it, refactor it, build it, change it, test it. You’ll need to know at least C and C++ , probably Java and Fortran too. You’ll need to know scripting languages, make, etc. Sooner or later you”ll need to learn how to debug, because no serious project runs smoothly.
    • If you’re writing anything in C/C++, write your programs with the expectation that you will get it wrong first time. Compile and link in mudflap, and/or run using valgrind to catch any array bounds you’re going over.  
  • Hardware Design
    • Chances are that there is no hardware out there that does quite what you’re after. Guess what, you’re going to have to do it yourself. You’ll need to know how to lay out a board, and then you’re going to have to find someone to make it for you. That probably won’t go smoothly either, so you’ll have to keep on top of them, and do half their job for them. Then you’ll find out you’ve got a signal integrity issue somewhere, so you’ll have to learn about that. PCI Express? Yeah, best break out the standards defintion for that.
  • Drivers
    • The FPGA card needs to communicate with the rest of your system. It would be wise to invest the time to learn how to write drivers in your operating system of choice, which in any sane world is some kind of Unix.
  • Regular Expressions
    • Hey you might as well, you’re learning all this other stuff. Regular Expressions are cool.
  • Numerical Analysis
    • You’ll need to understand floating-point and fixed-point arithmetic, and you’ll need to figure out what your application needs. Know the composition of single and double precision IEEE754 floating point words.

5 responses to “Skills a Reconfigurable Computing Engineer Requires

  1. Pingback: Reconfigurable Computing Skills « One Hundred Pounds

  2. I’d suggest adding “knowledge of the principles of boundary scanning/JTAG” as an element of the hardware design competence.

  3. Hey Buddy,
    Simple and Nice Details you have posted. I wanna do research in Reconfigurable Computing. As a starter, i would like to know various research dimensions.

  4. Hi KK, feel free to email me if you want to ask a few questions, email’s on my about page.

  5. Bugger me! So that’s what you do all day…

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s