Software R&d Engineer, Rtl Optimization Tools

NVIDIA NVIDIA · Semiconductors · Santa Clara, CA +1

Software R&D Engineer at NVIDIA focused on developing internal EDA tools for RTL optimization. The role involves fusing parallel computing, machine learning, and novel algorithms to improve hardware design productivity. It explores the use of LLMs, GNNs, GANs, and Reinforcement Learning for optimization tasks, and requires strong C++ development skills with a focus on graph-based algorithms and optimization.

What you'd actually do

  1. Invent new methods to enable parallel, graph-based RTL traversal, analysis, and manipulation.
  2. Devise strategies for rapidly analyzing the impact of RTL changes on data path latency, power, and impact to DFT, clocking, and power delivery.
  3. Explore use of LLMs (Large Language Models), GNNs (Graph Neural Networks), GANs (Generative Adversarial Networks), and Reinforcement Learning for suggesting or automatically implementing RTL modifications.
  4. Explore high performance algorithms for clustering, min cost tree covering (technology mapping), datapath implementation and other details of logic synthesis, especially that efficiently incorporate human insight.
  5. As with any software engineering team, we do write a lot of code, but this is broader than a typical CAD or EDA role. Instead, we as a team own the whole process from discovery and invention of new optimization opportunities, to developing solutions and working directly inside design teams to facilitate deployment. That translates to a bigger picture view of your work, going beyond simply responding to user requests to instead actively driving the roadmap of increasing hardware design productivity.

Skills

Required

  • MS or PhD in Electrical Engineering or Computer Science or equivalent experience
  • 3+ years of relevant experience in CAD software and VLSI hardware design
  • Demonstrated ability in software development with C++, particularly in algorithm development related to graph traversal, pattern matching, and optimization
  • Familiarity with RTL design, including Verilog and SystemVerilog code, as well as general hardware design concerns such as scan chain insertion, MBIST, clock and power distribution, and bus architectures
  • Familiarity with related EDA techniques, including logic synthesis, global route, static timing analysis, and SAT solvers
  • Strong communication and interpersonal skills

Nice to have

  • Experience with common EDA building blocks, such as Verific for Verilog parsing, Espresso for logic minimization, and various other components for logic rewriting, tree coverage, SAT solvers, and combinatorial optimization
  • Experience in high performance software design including multithreading, distributed computing, efficient memory and I/O use, etc.
  • Previous work experience including both software and hardware roles, especially involving SOC/IP integration or RTL design
  • Experience with various machine learning techniques for analysis, optimization, and code generation

What the JD emphasized

  • Fusing advances in parallel computing, machine learning, and novel algorithms in C++
  • strategies and algorithms for large scale RTL quality, timing, and power optimization
  • experience relevant to each of those areas would be ideal
  • solid understanding of DFT, clock distribution, power gating, and other SOC integration aspects is essential
  • Demonstrated ability in software development with C++, particularly in algorithm development related to graph traversal, pattern matching, and optimization
  • Familiarity with RTL design, including Verilog and SystemVerilog code, as well as general hardware design concerns such as scan chain insertion, MBIST, clock and power distribution, and bus architectures
  • Familiarity with related EDA techniques, including logic synthesis, global route, static timing analysis, and SAT solvers

Other signals

  • The role involves developing internal EDA tools by fusing advances in parallel computing, machine learning, and novel algorithms.
  • The role explores the use of LLMs, GNNs, GANs, and Reinforcement Learning for RTL optimization.
  • The role aims to improve hardware design productivity through AI-driven optimization.