Live data from Hacker News

Can a Computer Science Student Be Taught to Design Hardware?

semiengineering.com

61–70 of 122 posts

Re: Can a Computer Science Student Be Taught to Design Hardware?

#61

* The fact that there are comments misunderstanding the article, that are talking about PCB Design rather than (Silicon) Chip Design, speaks to the problem facing the chip industry. Total lack of wider awareness and many misunderstandings. * Chip design pays better than software in many cases and many places (US and UK included; but excluding comparisons to Finance/FinTech software, unless you happen to be in hardwar…

> The fact that there are comments misunderstanding the article, that are talking about PCB Design rather than (Silicon) Chip Design, speaks to the problem facing the chip industry. Total lack of wider awareness and many misunderstandings. No, there is no misunderstanding. Even the US companies mentioned _in the very article_ that have both software and "chip design" roles (however you call it) will pay more to their…

You've taken two separate points I made and rolled them into one, resulting in you arguing against a point I didn't make.

The "misunderstandings and lack of awareness" I was referring to is in regards to many people outside the semiconductor industry. These aspects are hurting our industry, by putting people off joining it. I was not referring to people inside the industry, nor the SemiEngineering article.

As for salaries: See my other comments. In addition, I think it's worth acknowledging that neither hardware nor software salaries are a flat hierarchy. Senior people in different branches of software or hardware are paid vastly different amounts (e.g. foundational AI models versus programming language runtimes...). For someone looking at whether to go into software or hardware roles, I would advise them that there's plenty of money to be made in either, so pursue the one which is more interesting to them. If people are purely money-motivated, they should disappear off into the finance sector - they'll make far more money there.

As for movement from software into hardware: I've primarily seen this with people moving into hardware verification - successfully so, and in line with what the article says too. The transfer of skills is effective, and verification roles at the kind of processor companies I've been in or adjacent to, pay well and such engineers are in high-demand. I'm speaking from a UK perspective. Other territories, well, I hear EU countries and the US are in a similar situation but I don't have that data.

Do more hardware engineers transition into software than the other way around? Yeah, for sure, but that's not the point I think anyone is arguing over. It's not "do people do this transition" (some do, most don't), rather it's:

"We would like more people to be making this transition from SW into HW. How do we achieve that?"

And to that I say: Let's dispel a few myths, have a data-driven conversation about compensation, and figure out what's really going to motivate people to shift. If it only came down to salary, everyone would go into finance/fintech (and an awful lot of engineering grads do...) but clearly there's more to the decision than just salary, and more to it than just market demand.

Re: Can a Computer Science Student Be Taught to Design Hardware?

#62
digital circuit design strikes me as a risky gambit for a career, given that almost everyone who ive bumped into in that industry was invariable not actually doing any design, but rather was tasked with writing test cases and verifying the functionality of some specific logical block.

tests are ofcourse very important, but fact of the matter is, bright smart and arrogant young engineers-to-be are very eager to show everyone how much better their version of the 'thing' is, and desperately want to write their version of the thing: they don't want to verify someone else's version of the thing.

if we're being honest, how many people do you really need to do the design of some hardware feature? realistically the design can be done by one person.

so you might have one lead designer, delegates each block to 10 guys, and everything else is basically 'monkey work' of writing up the state machine logic, testing it, and hooking it all up.

and now lets count the number of companies that can put up the capital for tape-out: amd, intel, arm, nvidia, meta, aws, google chips, apple, and lets say plus 50 for fintechs, startups, and other 'smaller' orgs.

so if you want to do design, you might be competing for... lets say 3 lead designers per org on avg, 3 * 50 = 150 silicon design spots for the entire globe. to add, a resource in such scarce supply will no doubt be heavily guarded by its occupants.

i did this calculation back when i was still in uni. i'll never know if it paid off, or if it was even rooted in logic, but i remember thinking to myself back then: "no way in hell am i gonna let these old guys pidgeon hole me into doing monkey work with a promise of future design opportunities." arrogant, yes, but i can't say i regret my decision judging from the anecdotes i get from friends in the hardware world.

Re: Can a Computer Science Student Be Taught to Design Hardware?

#63

digital circuit design strikes me as a risky gambit for a career, given that almost everyone who ive bumped into in that industry was invariable not actually doing any design, but rather was tasked with writing test cases and verifying the functionality of some specific logical block. tests are ofcourse very important, but fact of the matter is, bright smart and arrogant young engineers-to-be are very eager to show e…

some additional thoughts:

i think that, for digital design to be interesting, the cost of entry must be lowered by probably orders upon orders of magnitude.

the google skywaterpdk thing, whatever it is (or was?), did produce a great deal of hobbyist designs and proved that there really isn't anything special about rtl - infact, its really quite monotonous and boring.

which is a good attitude to have, really. lots of hobbyist designs got cranked out quickly on what, as i understood, was a very obsolete pdk from two decades ago.

but its fundamentally still too expensive and too limited. open source software 'blew up' because

1. the cost of entry was free...

2. ...for state of the art tools.

its not enough to be free, or open source. it also has to be competitive. llvm/gcc won the compiler world because they blew the codegen of proprietary compilers out of the water, ofcourse being open source it became a positive feedback loop of lots of expert eyeballs -> better compiler -> more experts look at it -> better compiler -> ...

for digital design to become interesting, you can't trick the kids: they want the same tech the 'big boys' are using. so, what scope is there to make it economical for someone like Intel carving out some space for a no-strings-attached digital design lottery?

i get the impression that, unlike for most manufacturing processes, the costs of silicon digital electronics increases every year, and the amortisation schedule becomes bigger, not smaller.

so if anything, it seems that the more high tech silicon manufacturing becomes, the smaller the pool of players (who have the ever-increasing capital expenditure necessary) becomes, which should indicate that the opportunities for digital design work are actually going to be shrinking as time goes on.

Re: Can a Computer Science Student Be Taught to Design Hardware?

#64
post #6

Obviously. Hardware designers absolutely love to think that hardware design is totally different to software design and only they have the skills, but in reality it's barely diffetent. Stuff runs in parallel. You occasionally have to know about really hardware things like timing and metastability. But the venn diagram of hardware/software design skills is pretty much two identical circles. The reason for the "talent…

>> Stuff runs in parallel. You occasionally have to know about really hardware things like timing and metastability. But the venn diagram of hardware/software design skills is pretty much two identical circles.

I don't know your background, but this feels like from someone who hasn't worked on both the aspects for a non-trivial industry project. The thing is software spans a huge range - web FE/BE, GUI, Database, networking, os, compiler, hpc, embedded etc. Not all of them have the same background to be a good HW designer. Sure you can design HW as if you are writing software, but it won't be production worthy - not when you are pushing the boundaries.

My work straddles both HW architecture and SW. I design processors, custom ISA optimized for SW application algorithms, and ensuring optimized micro-architecture implementation on the HW side to meet the PPA. I sit at the intersection of HW, SW and verification. People like me are rare, not just in my company but in the industry. Things fall through the gap, if you don't have someone to bridge it and then you have a sub-optimal design.

I don't deny that SW people cannot learn HW design, there is nothing magical after all; just hardwork and practice. But to say that the venn diagram is two identical circle is plain wrong. The cognitive load to shuttle up and down the two HW/SW stacks is a lot more than either of them.

Re: Can a Computer Science Student Be Taught to Design Hardware?

#65
post #40

I think there are two separate areas of concern here, hardware, and computation. I strongly believe that a Computer Science program that only includes variants of the Von Neumann model of computation is severely lacking. While it's interesting to think about Turing Machines and Church numbers, etc... the practical use of FPGAs and other non-CPU based logic should definitely be part of the modern CS education. The vag…

the design of FPGAs was certainly part of my CS degree! they even made us use them in practical labs, and connect them up to an ARM chip

I'm glad to hear that. Did you have to learn Verilog, VHDL, or something else in the FPGA programming?

Re: Can a Computer Science Student Be Taught to Design Hardware?

#66
post #40

Earlier quoted context omitted.

the design of FPGAs was certainly part of my CS degree! they even made us use them in practical labs, and connect them up to an ARM chip

I'm glad to hear that. Did you have to learn Verilog, VHDL, or something else in the FPGA programming?

verilog

Re: Can a Computer Science Student Be Taught to Design Hardware?

#67

UIUC CS grad from the late 80s. CS students had to take a track of electrical engineering courses. Physics E&M, intro EE, digital circuits, microprocessor/ALU design, microprocessor interfacing.... It paid off immensely in my embedded development career. I'm guessing this isn't part of most curricula anymore?

At UC Berkeley in the early-mid 90s, I think I had two digital design courses. The first was low level basics like understanding logic gates, flip flops, gray coding, PROM, ALUs, multiplexers, etc., with a physical project using 7000-series chips on breadboard. The second was the whole 32 bit MIPS/SPIM pipelined CPU design and simulation project based on the Patterson and Hennessy text book.

But, I seem to recall there were ways to bypass most hardware background knowledge for a CS degree. You had to do intro math and physics that did classical mechanics, but you could stop short of most of the electromagnetic stuff or multivariate calculus. You could get your breadth credits in other areas like statistics, philosophy, and biology. I think you could also bypass digital design with mix of other CS intro courses like algorithms, operating systems, compilers, graphics, database systems, and maybe AI?

Re: Can a Computer Science Student Be Taught to Design Hardware?

#68

I'm a hardware designer. An EE. But over the last umpteen years I've gradually switched over to software because that's where I was needed. What I've found is that I became a very good software programmer but I still lack all the fundamentals of software engineering. There are things I won't or can't use because it would require too much study for me to get good at it or even understand it. I would bet that a CS guy…

> There are things I won't or can't use

Curious as to what that is?

Re: Can a Computer Science Student Be Taught to Design Hardware?

#69

I lived in both worlds (hardware/software) throughout my career. In school, I learned (in order): Analog electronics (including RF), Digital electronics, Microprocessors, Software, Systems. I've always thought that it's strange how few software people know hardware, and vice versa. In the software domain, when I began referencing hardware elements while explaining something, the software audience would usually just g…

> In all of the material (two textbooks and numerous handouts) there was no mention of the obvious similarities to Ada

Really? That's kind of the point of VHDL, isn't it? (vs. Verilog's unholy combination of C-like syntax with begin/end blocks, etc.)

VHDL also inherits Ada's module style, designed to have different implementations of the same thing (and verbosity, where it seems like you often have to say the same thing repeatedly, for better or for worse - more type checking at the expense of more typing at the keyboard.)

Re: Can a Computer Science Student Be Taught to Design Hardware?

#70

* The fact that there are comments misunderstanding the article, that are talking about PCB Design rather than (Silicon) Chip Design, speaks to the problem facing the chip industry. Total lack of wider awareness and many misunderstandings. * Chip design pays better than software in many cases and many places (US and UK included; but excluding comparisons to Finance/FinTech software, unless you happen to be in hardwar…

> * The lack of open source hardware tools, workflows, high-quality examples, relative to the gross abundance of open source software, doesn’t help the situation, but I think it is more a symptom than it is a cause.

To this, I would point to librelane/yosys/TinyTapeout/waferspace and say there are quite a bit of opportunities to learn stuff and there are oss initiative trying to _do stuff_ in this field. I wouldn't know how it applies to the wider industry, but the ecosystem deff piqued my interest. I do write quite a bit of embedded systems in my day to day though, so I got a rough idea what is in a chip. Would love to have the time to dive deeper.

Post reply on HN