|
From Software into Hardware? Your fastest route in is to learn Python and find one of the many startups hiring for CocoTB-based verification roles. Depends a bit on what country you're in - I'm happy to give recommendations for the UK! If you're feeling like learning SystemVerilog, then learn Universal Verification Methodology (UVM), to get into the verification end. If you want to stay in software but be involved in chip design, then you need to learn C, C++ or Rust (though really C and C++ still dominate!). Then dabble in some particular application of those languages, such as embedded software (think: Arduino), firmware (play with any microcontroller or RPi - maybe even write your own bootloader), compiler (GCC/LLVM), etc. The other route into software end of chip design is entry-level roles in functional or performance modelling teams, or via creating and running benchmarks. One, the other, or both. This is largely all C/C++ (and some Python, some Rust) software that models how a chip works at some abstract level. At one level, it's just high-performance software. At another, you have to start to learn something of how a chip is designed to create a realistic model. And if you're really really stuck for "How on earth does a computer actually work", then feel free to check out my YouTube series that teaches 1st-year undergraduate computer architecture, along with building the same processor design in Minecraft (ye know, just for fun. All the taught material is the same!). [Shameless plug ;) ] |
I understand that learning FPGA programming (Verilog/VHDL/etc.) is a first-step in that journey. Would you agree? Have you looked at books like FPGAs for Software Programmers? - https://link.springer.com/book/10.1007/978-3-319-26408-0
For each of the domains you have listed, would you mind sharing books/tools/sites etc.?
For example, While researching the above long ago, i had come across the following;
C++ Modelling of SoC Systems Part 1: Processor Elements - https://www.linkedin.com/pulse/c-modelling-soc-systems-part-...
C++ Modelling of SoC Systems Part 2 : Infrastructure - https://www.linkedin.com/pulse/c-modelling-soc-systems-part-...
gem5 Simulator - https://www.gem5.org/
Verilator Simulator - https://www.veripool.org/verilator/
Maybe you can provide a step-by-step roadmap on how a software guy (C/C++, systems programming) can move on to hardware chip design?